◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
Lambda를 생성할 때 따로 VPC 정보를 넣을 필요가 없다.
그래서 Lambda는 VPC는 관련 없는지 알았다.
하지만 Lambda는 VPC에 배치할 수 있다. 이를 VPC Lambda라고 한다....
아니 사실 Lambda는 생성되면 따로 Lambda 전용의 안전한 VPC에 자동으로 배치된다.
우리(유저)가 만든 VPC와는 다른 Lambda 전용의 VPC이다.
이 Lambda 전용 VPC에서 인터넷이나 인터넷을 경유로 해서 public한 AWS 리소스에 접근 할 수 있다.
하지만 유저가 만든 VPC의 private subnet 안의 AWS 리소스에는 접근할 수 없다. 아래의 그림을 보면 이해하기 쉽다.
의문점) Serverless 서비스인 Lambda를 굳이 왜 VPC와 연관 짓는가??
결론) Private Subnet에 있는 AWS 리소스에 프라이빗한 연결을 하고싶어서.
RDS와 같이 보안이 중요한 리소스는 기본적으로 Private Subnet에 배치되어있다.
이러한 리소스에 프라이빗한 연결을 요구하는 경우 Lambda 함수를 Private Subnet과 직접적으로 프라이빗 연결해야한다.
Lambda 함수의 VPC Access
Lambda 함수를 Private Subnet 내의 AWS 리소스에 접근하고 싶은 경우 "VPC access"를 설정해야한다.
→ 이를 통해 Lambda는 VPC의 Private Subnet의 AWS 리소스(예: RDS, EC2 등)에 접근할 수 있다.
VPC Access 설정 방법
- Lambda 함수 생성: Lambda 콘솔에서 새 함수를 생성.
- VPC → Configuration → VPC → Edit
- 연결하려는 VPC/서브넷 선택:
Lambda 함수의 네트워크 설정에서 연결하려는 AWS리소스가 있는 VPC와 서브넷을 선택하고, Lambda 함수의 보안 그룹(Security Group)을 지정한다.
- IAM Role 설정: Lambda 함수가 VPC 리소스에 접근할 수 있도록 적절한 권한을 가진 IAM Role을 설정.
- IAM > Roles > Create role
- AWSLambdaVPCAccessExecutionRole Policy을 추가하여 Lambda에 연결한다.
- VPC Access을 설정하면 Lambda 함수가 서브넷마다 연결용 ENI(Elastic Network Interface)를 생성하여 프라이빗 서브넷 내의 AWS 리소스에 접근하게 됩니다.
AWSLambdaVPCAccessExecutionRole Policy
AWSLambdaVPCAccessExecutionRole
정책은 특히 ENI 생성과 관련된 권한을 포함하고 있으며, Lambda 함수가 VPC 내부에서 실행될 때 네트워크 연결을 관리한다.
{
"Version" : "2012-10-17",
"Statement" : [
{
"Sid" : "AWSLambdaVPCAccessExecutionPermissions",
"Effect" : "Allow",
"Action" : [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"ec2:CreateNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeSubnets",
"ec2:DeleteNetworkInterface",
"ec2:AssignPrivateIpAddresses",
"ec2:UnassignPrivateIpAddresses"
],
"Resource" : "*"
}
]
}
AWSLambdaBasicExecutionRole에 관한 AWS 공식 문서
https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html
VPC Access 장점
- 보안: Lambda 함수가 VPC에 연결되면, 프라이빗 서브넷 내의 리소스에 직접 접근할 수 있다. 이를 통해 인터넷에 직접 노출되지 않고 안전하게 내부 리소스와 통신할 수 있다.
- VPC 내부 리소스 접근: Lambda 함수가 VPC 내부의 데이터베이스, 캐시, 또는 기타 리소스에 접근할 수 있다. 이를 통해 VPC 내의 리소스와 연동하여 작업을 수행할 수 있다.
VPC Access 단점
비용 증가 (ENI 비용): Lambda 함수가 VPC에 연결될 때 생성되는 ENI는 비용이 발생할 수 있다. 또한, ENI의 사용량이 많아질수록 비용이 증가할 수 있다.
'클라우드(AWS) > Lambda' 카테고리의 다른 글
[AWS] Lambda의 버전 관리를 위한 "Alias" 쉽게 정리 (feat. API Gateway) (0) | 2024.10.25 |
---|---|
[AWS] Lambda의 로그 (어떤 로그가 CloudWatch에 저장되는가?) (0) | 2024.05.31 |
[AWS] AWS Lambda 쉽게 개념 및 특징 정리 (Serverless, Concurrency) (0) | 2023.10.06 |