我有一个访问 EC2 的 lambda。出于安全考虑,我想将其分配给 VPC,但当我这样做时,boto 就停止工作了。这是一个简单的例子:
ec2 = boto3.resource('ec2', region_name='eu-west-2')
instances = ec2.instances.filter(Filters=[
{
'Name': 'vpc-id',
'Values': [vpc_id]
}
])
for instance in instances:
# function hangs here
print(instance)
Lambda 的角色在 ec2 上具有必要的权限,并且在 VPC 之外运行良好。当我将 lambda 放入 VPC(在允许所有出站流量的安全组中)时,它会挂起。我需要做什么?
答案1
问题是我需要在运行 Lambda 函数的子网上进行 NAT - 互联网网关是不够的!
我认为这是因为 Lambda 仅私下运行,而允许双向流量的 Internet 网关不允许往返于 Lambda 的路由。
将 Lambda 添加到带有 NAT 的私有子网解决了此问题。