亚马逊AWS官方博客

新增功能 — 使用 AWS PrivateLink 通过 AWS 专用网络访问 AWS Lambda

AWS Lambda 是一种让您在运行代码时无需预置或管理服务器的无服务器计算服务。您只需上传代码,Lambda 就会完成执行及扩展代码的所有工作来实现高可用性。如今,许多 AWS 客户使用此无服务器计算平台来显著提高其在开发和运行应用程序时的工作效率。

今天,我很高兴地宣布,AWS Lambda 现在支持 AWS PrivateLink,它可让您在 Virtual Private Cloud (VPC) 或本地数据中心内部安全地调用 Lambda 函数,而不会将流量暴露给公共互联网。

到目前为止,若要调用 Lambda 函数,VPC 需要互联网网关网络地址转换 (NAT) 网关和/或公有 IP 地址。通过此更新,PrivateLink 将通过 AWS 专用网络路由该调用,消除了互联网访问的需要。此外,您现在可以通过使用 AWS Direct ConnectAWS VPN 连接来连接到 VPC,直接从本地数据中心调用 Lambda API。

一些客户希望通过由于内部 IT 治理要求而无法访问互联网的 VPC 来管理和调用 Lambda 函数。通过此更新,您将能够使用 Lambda。此外,对于维护有 NAT 网关以从 VPC 访问 Lambda 的客户,可以使用 VPC 终端节点来代替 NAT 网关,从而节省 NAT 网关的成本。由于您不再需要允许互联网访问您的 VPC 来调用 Lambda 函数,安全性得到了进一步提高,而且网络架构变得更加简单、易于管理。以前,在启用 VPC 了的 Lambda 函数调用另一个 Lambda 函数的情况下,此类调用必须经过 NAT 网关,但现在客户可以使用 VPC 终端节点。

如何开始使用 AWS PrivateLink

AWS PrivateLink 将称为“接口 VPC 终端节点”的弹性网络接口用作以 AWS 服务为目标的流量的入口点。接口终端节点将所有网络流量限制在 AWS 内部网络,并提供对您的服务的安全访问。接口 VPC 终端节点是一个具有高可用性的冗余 VPC 组件,具有私有 IP 地址并可以横向扩展。

通过 AWS 管理控制台开始使用

要开始使用,您可以使用 AWS 管理控制台AWS CLIAWS CloudFormation。第一个示例展示的是管理控制台。

首先,访问 VPC 管理控制台,然后单击“终端节点”。

单击“创建终端节点”按钮。

在搜索栏中键入“lambda”,您就会看到服务名称。选择该服务名称,然后选择要在其中创建接口终端节点的 VPC。

之后,系统会提示您指定要在其中创建终端节点的子网。

如果需要,您可以在启用“启用 DNS 名称”选项时,将自己的 DNS 名称设置为具有 Amazon Route53 私有托管区域的终端节点。启用此选项后,您公有子网中对 Lambda 函数的任何请求都不能通过互联网网关调用 Lambda,并且必须通过私有子网中的 VPC 终端节点进行通信。

接下来,为协议、端口和源/目标 IP 地址控制指定“安全组”。

然后,设置策略以控制有权访问 VPC 终端节点的对象。默认情况下,“完全访问”处于选中状态,但我们始终建议您最开始只向所需的最低限度的委托人授予访问权限;稍后可以对其进行修改。

您可以借助以下示例来自定义以创建“策略”。 在此示例中,只有 IAM 用户“MyUser”可以调用“my-function”的 Lambda 函数。

{
    "Statement": [
        {
            "Principal": "arn:aws:iam::123412341234:user/MyUser",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:lambda:us-east-2:123456789012:function:my-function:1”
            ]
        }
    ]
}

现在到了最后一步。单击“创建终端节点”按钮。您将看到如下创建成功的对话框。

现在,您可以使用终端节点 DNS 名称调用 Lambda 函数。您还可以通过 VPC 对等AWS Transit Gateway 从连接到原始 VPC 的其他 VPC 调用 Lambda 函数,甚至可以从其他 AWS 账户执行此操作。

使用 AWS 命令行界面 (CLI) 来开始使用

如果您已经拥有 AWS CLI 环境,那么使用 AWS CLI 会比前一种方法更加精确、简单。 

aws ec2 create-vpc-endpoint --vpc-id vpc-ec43eb89 \
        --vpc-endpoint-type Interface --service-name lambda.<region code>.amazonaws.com \
        --subnet-id subnet-abababab --security-group-id sg-1a2b3c4d

现已推出

由 AWS Lambda 提供支持的 AWS PrivateLink 现已在除非洲(开普敦)和欧洲(米兰)以外的所有 AWS 区域推出。为尚未覆盖的区域提供 AWS PrivateLink 支持已纳入我们的发展蓝图,并即将推出。标准 AWS PrivateLink 定价适用于 Lambda 接口终端节点。将根据每小时在各个可用区中配置的接口终端节点以及通过接口终端节点处理的数据来进行计费。不会针对 AWS Lambda 收取额外费用。有关更多详细信息,请参阅 AWS PrivateLink 定价页面文档

– Kame;