在 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 僅私下運行,而允許雙向流量的網路閘道不允許往返 Lambda 的路由。

將 Lambda 新增至附加了 NAT 的私有子網路修復了此問題。

相關內容