在 VPC 中的 AWS lambda 函数中使用 boto

在 VPC 中的 AWS lambda 函数中使用 boto

我有一个访问 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 的私有子网解决了此问题。

相关内容