Contents
Lambda의 네트워크
기본적으로 Lambda는 EC2와는 다르게 VPC 내부의 리소스가 아니다.
- Lambda는 AWS에서 관리되는 Lambda Service VPC라는 전용 VPC에서 실행된다. (고객은 이를 보지 못함.)
no-VPC Mode
일반적으로 모든 AWS 서비스가 다른 AWS서비스와 통신을 하기 위해서는 아래의 조건을 만족해야 한다.
- 종단 간 네트워크 연결
- 충분한 IAM 권한.
Lambda Service VPC에 있는 Lambda는 위에서 언급한 1번 항목인 VPC에 대한 네트워크 연결이 없기 때문에 VPC 내에서만 사용 가능한 리소스에 액세스할 수 없다. (Elasticache, RDS 등)
그러나 퍼블릭 서비스(S3, SNS, SQS, Kinesis 등)에는 1번 항목을 만족하기 때문에 충분한 IAM 권한만 있다면 액세스 할 수 있다.
- 이렇게 Customer VPC에서 실행되지 않는 Lambda를 no-VPC mode라고 한다.
VPC Mode
- Lambda를 VPC에 연결하려면 사용할 VPC, 서브넷, 보안그룹을 선택한다.
- 이 때 Lambda 리소스를 재배치하지 않는다. (다운타임 없이 즉시 적용됨.)
- 위 그림에서 보이듯이 Lambda Service VPC 내부에 VPC간의 NAT를 생성한다.
- 이는 내부적으로 작동한다.
- Lambda Service VPC의 NAT는 Customer VPC에 있는 ENI에 연결된다.
- 1번에서 선택한 보안그룹을 해당 ENI에 적용한다.
- 이러한 ENI를 관리하기 위해서는 Lambda에 필요한 IAM 권한(아래의 권한)을 명시적으로 부여해야 한다.
ec2:CreateNetworkInterface
ec2:DescribeNetworkInterfaces
ec2:DeleteNetworkInterface
아니면 필요한 모든 권한이 포함된 AWS 관리형 정책인 AWSLambdaVPCAccessExecutionRole
를 사용해도 된다.
- 주어진 서브넷의 이 ENI는 해당 기능이 동일한 보안 그룹 집합을 갖도록 구성되어 있는 한 여러 기능의 여러 람다 인스턴스에서 공유된다.
- 만약, 연결된 Lambda 인스턴스의 네트워크 사용량이 특정 수준을 초과하게 된다면 Lambda는 증가된 트래픽을 수용할 수 있도록 ENI를 추가로 생성한다.
Reference
'AWS > 컴퓨팅' 카테고리의 다른 글
인스턴스의 EBS에 대한 기준성능과 최대성능 (0) | 2023.02.19 |
---|---|
[ECS] OOME (OutOfMemoryError) 최소화 해보기 (0) | 2023.02.09 |
[ALB] 왜 ALB는 고정 IP의 할당이 불가능할까? (0) | 2023.01.31 |