VPC의 AWS 람다 함수에서 boto 사용

VPC의 AWS 람다 함수에서 boto 사용

EC2에 액세스하는 람다가 있습니다. 보안을 위해 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 외부에서도 잘 작동합니다. 람다를 VPC(모든 아웃바운드 트래픽을 허용하는 보안 그룹)에 넣으면 작동이 중단됩니다. 내가 무엇을해야 하나?

답변1

문제는 Lambda 함수가 실행되는 서브넷에 NAT가 필요하다는 것이었습니다. 인터넷 게이트웨이로는 충분하지 않습니다!

나는 이것이 Lambda가 비공개적으로만 실행되고 양방향 트래픽을 허용하는 인터넷 게이트웨이가 Lambda와의 경로를 허용하지 않기 때문이라고 가정합니다.

NAT가 연결된 프라이빗 서브넷에 Lambda를 추가하면 이 문제가 해결되었습니다.

관련 정보