AWS lambda 通过专用网络调用 dynamo db 或绕过互联网流量

AWS lambda call dynamo db through private network or bypass internet traffic

我有一个 lambda 函数,它每 15 分钟 运行s 并在 DynamoDB 中保存一些数据。

现在我想保护我的 lambda 发出的 DynamoDB 调用,这样请求就不会通过 Internet,而是通过 Amazon 内部网络。不过这里没有涉及 EC2 实例。

我看到了一些使用 PrivateLink 的建议,它将 Dynamo 绑定到 VPC 端点,以便从 EC2 实例发出的调用始终通过内部网络绕过 Internet。

我想知道这样的配置对于 lamda 调用 DynamoDB 是可行的,因为 lamda 本身不会 运行 在任何 EC2 实例中并且是无服务器的?

这是一种方法。

步骤 1) 在 VPC 中部署您的 lambda。

步骤 2) 创建 DynamoDB 的 VPC 端点。

这应该有帮助:https://aws.amazon.com/blogs/aws/new-vpc-endpoints-for-dynamodb/

如果您不需要访问 VPC 中的资源,AWS 建议不要 运行 AWS Lambda 在 VPC 中运行。来自 AWS Lambda Best Practices:

Don't put your Lambda function in a VPC unless you have to. There is no benefit outside of using this to access resources you cannot expose publicly, like a private Amazon Relational Database instance. Services like Amazon Elasticsearch Service can be secured over IAM with access policies, so exposing the endpoint publicly is safe and wouldn't require you to run your function in the VPC to secure it.

运行 VPC 中的 Lambda 函数增加了额外的复杂性,这会对可扩展性和性能产生负面影响。 VPC 中的每个 Lambda 函数都需要一个弹性网络接口 (ENI)。配置 ENI 的速度很慢,而且您可以拥有的 ENI 数量有限,因此当您扩展时,您可能 运行 遇到 ENI 短缺的情况,从而阻止您的 Lambda 函数进一步扩展。

我要说的第一件事是 Lambda 和 DynamoDB 之间的所有流量都经过签名和加密,因此通常就足够了。

有一些用例,最典型的合规性原因,这还不够。在这种情况下,您可以将 Lambda 函数部署到您创建的 VPC 中,并使用私有 VPC endpoint for DynamoDB. Typically, the VPC would be configured without an internet gateway or NAT so that it has no egress route to the public internet. Be aware that your Lambda function startup latency will be higher than usual, because each Lambda function environment needs to attach an ENI 配置 VPC 以访问私有端点。

参见Configuring a Lambda Function to Access Resources in an Amazon VPC