Amazon-Web-Services

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

  • February 22, 2018

我有一個訪問 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(在允許所有出站流量的安全組中)時,它會掛起。我需要做什麼?

問題是我需要在執行 Lambda 函式的子網上有一個 NAT——一個 Internet 網關是不夠的!

我假設這是因為 Lambda 僅私下執行,而允許雙向流量的 Internet 網關不允許往返 Lambda 的路由。

將 Lambda 添加到附加了 NAT 的私有子網可解決此問題。

引用自:https://serverfault.com/questions/898283