Lambda 함수에 다른 계정의 Amazon VPC 리소스 접근 권한 부여
Lambda 함수에 다른 계정의 Amazon VPC 리소스 접근 권한 부여 (Giving Lambda functions access to a resource in an Amazon VPC in another account)
다른 계정이 관리하는 Amazon Virtual Private Cloud(Amazon VPC)의 리소스에 AWS Lambda 함수가 접근하도록 할 수 있어요. 두 VPC를 인터넷에 노출하지 않고 말이죠. 이 접근 패턴을 사용하면 AWS를 사용해 다른 조직과 데이터를 공유할 수 있어요. 이 접근 패턴을 사용하면 인터넷을 통해보다 더 높은 수준의 보안과 성능으로 VPC 간에 데이터를 공유할 수 있어요. Lambda 함수가 이러한 리소스에 접근하려면 Amazon VPC 피어링 연결을 사용하도록 구성해요.
경고
계정이나 VPC 간에 접근을 허용할 때 계획이 이러한 계정을 관리하는 각 조직의 보안 요구 사항을 충족하는지 확인하세요. 이 문서의 지침을 따르면 리소스의 보안 태세에 영향을 미쳐요.
본문
이 튜토리얼에서는 IPv4를 사용하는 피어링 연결로 두 계정을 연결해요. 아직 Amazon VPC에 연결되지 않은 Lambda 함수를 구성해요. 정적 IP를 제공하지 않는 리소스에 함수를 연결하려면 DNS 확인을 구성해요. 다른 피어링 시나리오에 이 지침을 적용하려면 VPC Peering Guide를 참고하세요.
사전 요구 사항 (Prerequisites)
다른 계정의 리소스에 Lambda 함수 접근 권한을 부여하려면 다음이 필요해요.
- 리소스로 인증한 다음 리소스에서 읽도록 구성된 Lambda 함수
- Amazon VPC를 통해 사용할 수 있는 Amazon RDS 클러스터 같은 다른 계정의 리소스
- Lambda 함수 계정과 리소스 계정의 자격 증명. 리소스 계정을 사용할 권한이 없다면 권한 있는 사용자에게 연락해 해당 계정을 준비하게 하세요.
- Lambda 함수와 연결할 VPC(및 지원 Amazon VPC 리소스)를 만들고 업데이트할 권한
- Lambda 함수의 실행 역할과 VPC 구성을 업데이트할 권한
- Lambda 함수 계정에 VPC 피어링 연결을 만들 권한
- 리소스 계정에서 VPC 피어링 연결을 수락할 권한
- 리소스의 VPC(및 지원 Amazon VPC 리소스) 구성을 업데이트할 권한
- Lambda 함수를 호출할 권한
함수 계정에 Amazon VPC 만들기 (Create an Amazon VPC in your function's account)
Lambda 함수 계정에 Amazon VPC, 서브넷, 라우트 테이블, 보안 그룹을 만들어요.
콘솔을 사용해 VPC, 서브넷 및 기타 VPC 리소스 만들기
- https://console.aws.amazon.com/vpc/ 에서 Amazon VPC 콘솔을 열어요.
- 대시보드에서 Create VPC 를 선택해요.
- IPv4 CIDR block 에서 프라이빗 CIDR 블록을 제공해요. CIDR 블록은 리소스의 VPC에서 사용하는 블록과 겹치면 안 돼요. 리소스의 VPC가 리소스에 IP를 할당하는 데 사용하는 블록이나 리소스의 VPC 라우트 테이블에 이미 정의된 블록을 선택하지 마세요. 적절한 CIDR 블록 정의에 대한 자세한 내용은 VPC CIDR blocks을 참고하세요.
- Customize AZs 를 선택해요.
- 리소스와 같은 AZ를 선택해요.
- Number of public subnets 에서 0 을 선택해요.
- VPC endpoints 에서 None 을 선택해요.
- Create VPC 를 선택해요.
함수의 실행 역할에 VPC 권한 부여 (Grant VPC permissions to your function's execution role)
함수가 VPC에 연결할 수 있도록 AWSLambdaVPCAccessExecutionRole을 함수의 실행 역할에 연결해요.
함수의 실행 역할에 VPC 권한 부여
- Lambda 콘솔의 Functions 페이지를 열어요.
- 함수의 이름을 선택해요.
- Configuration 을 선택해요.
- Permissions 를 선택해요.
- Role name 아래에서 실행 역할을 선택해요.
- Permissions policies 섹션에서 Add permissions 를 선택해요.
- 드롭다운 목록에서 Attach policies 를 선택해요.
- 검색 상자에
AWSLambdaVPCAccessExecutionRole을 입력해요. - 정책 이름 왼쪽의 확인란을 선택해요.
- Add permissions 를 선택해요.
함수를 Amazon VPC에 연결하려면
- Lambda 콘솔의 Functions 페이지를 열어요.
- 함수의 이름을 선택해요.
- Configuration 탭을 선택한 다음 VPC 를 선택해요.
- Edit 를 선택해요.
- VPC 아래에서 VPC를 선택해요.
- Subnets 아래에서 서브넷을 선택해요.
- Security groups 아래에서 VPC의 기본 보안 그룹을 선택해요.
- Save 를 선택해요.
VPC 피어링 연결 요청 생성 (Create a VPC peering connection request)
함수의 VPC(요청자 VPC)에서 리소스의 VPC(수락자 VPC)로 VPC 피어링 연결 요청을 생성해요.
함수의 VPC에서 VPC 피어링 연결 요청
- https://console.aws.amazon.com/vpc/ 를 열어요.
- 탐색 창에서 Peering connections 을 선택해요.
- Create peering connection 을 선택해요.
- VPC ID (Requester) 에서 함수의 VPC를 선택해요.
- Account ID 에 리소스 계정의 ID를 입력해요.
- VPC ID (Accepter) 에 리소스의 VPC를 입력해요.
리소스 계정 준비 (Prepare your resource's account)
피어링 연결을 만들고 리소스의 VPC가 연결을 사용하도록 준비하려면 사전 요구 사항에 나열된 권한을 가진 역할로 리소스 계정에 로그인해요. 로그인 단계는 계정 보안 방식에 따라 다를 수 있어요. AWS 계정에 로그인하는 방법에 대한 자세한 내용은 AWS Sign-in User Guide를 참고하세요. 리소스 계정에서 다음 절차를 수행해요.
VPC 피어링 연결 요청 수락
- https://console.aws.amazon.com/vpc/ 를 열어요.
- 탐색 창에서 Peering connections 을 선택해요.
- 보류 중인 VPC 피어링 연결(상태가 pending-acceptance)을 선택해요.
- Actions 를 선택해요.
- 드롭다운 목록에서 Accept request 를 선택해요.
- 확인 메시지가 표시되면 Accept request 를 선택해요.
- VPC의 기본 라우트 테이블에 경로를 추가해 피어링 연결을 통해 트래픽을 주고받을 수 있도록 Modify my route tables now 를 선택해요.
리소스의 VPC 라우트 테이블을 검사해요. Amazon VPC가 생성한 경로는 리소스의 VPC 설정 방식에 따라 연결을 설정하지 못할 수 있어요. 새 경로와 VPC의 기존 구성 사이의 충돌을 확인하세요. 문제 해결에 대한 자세한 내용은 Amazon Virtual Private Cloud VPC Peering Guide의 VPC 피어링 연결 문제 해결을 참고하세요.
리소스의 보안 그룹 업데이트
- https://console.aws.amazon.com/vpc/ 를 열어요.
- 탐색 창에서 Security groups 을 선택해요.
- 리소스의 보안 그룹을 선택해요.
- Actions 를 선택해요.
- 드롭다운 목록에서 Edit inbound rules 을 선택해요.
- Add rule 을 선택해요.
- Source 에 슬래시로 구분된 함수의 계정 ID와 보안 그룹 ID를 입력해요(예: 111122223333/sg-1a2b3c4d).
- Edit outbound rules 를 선택해요.
- 아웃바운드 트래픽이 제한되어 있는지 확인해요. 기본 VPC 설정은 모든 아웃바운드 트래픽을 허용해요. 아웃바운드 트래픽이 제한되어 있으면 다음 단계로 계속해요.
- Add rule 을 선택해요.
- Destination 에 슬래시로 구분된 함수의 계정 ID와 보안 그룹 ID를 입력해요(예: 111122223333/sg-1a2b3c4d).
- Save rules 를 선택해요.
피어링 연결에 대한 DNS 확인 활성화
- https://console.aws.amazon.com/vpc/ 를 열어요.
- 탐색 창에서 Peering connections 을 선택해요.
- 피어링 연결을 선택해요.
- Actions 를 선택해요.
- Edit DNS settings 을 선택해요.
- Accepter DNS resolution 아래에서 Allow requester VPC to resolve DNS of accepter VPC hosts to private IP 를 선택해요.
- Save changes 를 선택해요.
함수 계정의 VPC 구성 업데이트 (Update VPC configuration in your function's account)
함수 계정에 로그인한 다음 VPC 구성을 업데이트해요.
VPC 피어링 연결에 경로 추가
- https://console.aws.amazon.com/vpc/ 를 열어요.
- 탐색 창에서 Route tables 을 선택해요.
- 함수와 연결한 서브넷의 라우트 테이블 이름 옆에 있는 확인란을 선택해요.
- Actions 를 선택해요.
- Edit routes 를 선택해요.
- Add route 를 선택해요.
- Destination 에 리소스의 VPC CIDR 블록을 입력해요.
- Target 에서 VPC 피어링 연결을 선택해요.
- Save changes 를 선택해요.
라우트 테이블을 업데이트할 때 발생할 수 있는 고려 사항에 대한 자세한 내용은 VPC 피어링 연결을 위한 라우트 테이블 업데이트를 참고하세요.
Lambda 함수의 보안 그룹 업데이트
- https://console.aws.amazon.com/vpc/ 를 열어요.
- 탐색 창에서 Security groups 을 선택해요.
- Actions 를 선택해요.
- Edit inbound rules 을 선택해요.
- Add rule 을 선택해요.
- Source 에 슬래시로 구분된 리소스의 계정 ID와 보안 그룹 ID를 입력해요(예: 111122223333/sg-1a2b3c4d).
- Save rules 를 선택해요.
피어링 연결에 대한 DNS 확인 활성화
- https://console.aws.amazon.com/vpc/ 를 열어요.
- 탐색 창에서 Peering connections 을 선택해요.
- 피어링 연결을 선택해요.
- Actions 를 선택해요.
- Edit DNS settings 을 선택해요.
- Requester DNS resolution 아래에서 Allow accepter VPC to resolve DNS of requester VPC hosts to private IP 를 선택해요.
- Save changes 를 선택해요.
함수 테스트 (Test your function)
테스트 이벤트를 만들고 함수의 출력 검사
- Code source 창에서 Test 를 선택해요.
- Create new event 를 선택해요.
- Event JSON 패널에서 기본값을 Lambda 함수에 적합한 입력으로 바꿔요.
- Invoke 를 선택해요.
- Execution results 탭에서 Response 에 예상 출력이 포함되어 있는지 확인해요.
추가로 함수의 로그를 확인해 로그가 예상대로인지 검증할 수 있어요.
CloudWatch Logs에서 함수의 호출 레코드 보기
- Monitor 탭을 선택해요.
- View CloudWatch logs 를 선택해요.
- Log streams 탭에서 함수 호출에 대한 로그 스트림을 선택해요.
- 로그가 예상대로인지 확인해요.