我有一个lambda函数,该函数每15分钟运行一次,并将一些数据保存在DynamoDB中。
现在,我想保护我的lambda进行的DynamoDB调用的安全,以便该请求不会通过Internet而是通过Amazon内部网络传递。不过,这里没有涉及EC2实例。
我已经看到一些有关使用PrivateLink的建议,该私有链接将Dynamo绑定到VPC端点,以便从EC2实例发出的调用始终通过内部网络绕过Internet。
我想知道这样的配置对于lamda调用DynamoDB是可行的,因为lamda本身不在任何EC2实例中运行并且是无服务器的吗?
答案 0 :(得分:3)
我要说的第一件事是,Lambda和DynamoDB之间的所有流量都经过签名和加密,因此通常就足够了。
有些用例(通常是合规性原因)不够用。在这种情况下,您可以将Lambda函数部署到自己制作的VPC中,并使用专用的VPC endpoint for DynamoDB配置VPC。通常,VPC将配置为不具有Internet网关或NAT,因此它没有到公用Internet的出口路由。请注意,由于每个Lambda函数环境都需要附加ENI才能访问私有端点,因此Lambda函数的启动延迟会比平时高。
请参见Configuring a Lambda Function to Access Resources in an Amazon VPC。
答案 1 :(得分:1)
这是一种实现方法。
步骤1)在VPC中部署Lambda。
第2步)创建DynamoDB的VPC端点。
这应该有所帮助:https://aws.amazon.com/blogs/aws/new-vpc-endpoints-for-dynamodb/
答案 2 :(得分:1)
如果您不需要访问VPC中的资源,则AWS建议不要在VPC中运行AWS Lambda函数。来自AWS Lambda Best Practices:
除非有必要,否则请勿将Lambda函数放入VPC。除了使用它访问无法公开公开的资源(例如私有Amazon Relational Database实例)之外,没有任何好处。可以使用访问策略通过IAM保护诸如Amazon Elasticsearch Service之类的服务,因此公开暴露端点是安全的,并且不需要您在VPC中运行功能来保护它。
在VPC中运行Lambda函数会进一步增加复杂性,这可能会对可伸缩性和性能产生负面影响。 VPC中的每个Lambda函数都需要一个弹性网络接口(ENI)。预配置ENI的速度很慢,并且您可以拥有的ENI的数量有限,因此,在扩展时会遇到ENI的短缺,从而阻止Lambda函数进一步扩展。