Amazon-Web-Services
在 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(在允許所有出站流量的安全組中)時,它會掛起。我需要做什麼?
問題是我需要在執行 Lambda 函式的子網上有一個 NAT——一個 Internet 網關是不夠的!
我假設這是因為 Lambda 僅私下執行,而允許雙向流量的 Internet 網關不允許往返 Lambda 的路由。
將 Lambda 添加到附加了 NAT 的私有子網可解決此問題。