我有一個訪問 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 的私有子網路修復了此問題。