AWS Lambda 함수를 한 AWS 계정 또는 AWS 리전에서 다른 AWS 계정 또는 리전으로 이동해야 합니다.
간단한 설명
Lambda 함수를 다른 AWS 계정이나 리전으로 마이그레이션하려면 AWS Serverless Application Model(AWS SAM) 파일을 사용하세요.
- 배포 패키지와 함께 Lambda 함수에 대한 AWS SAM 파일을 다운로드합니다.
- Lambda 함수의 배포 패키지를 함수를 마이그레이션하려는 리전의 Amazon Simple Storage Service(S3) 버킷에 업로드합니다.
- AWS SAM 파일과 AWS CloudFormation을 사용하여 다른 AWS 계정 또는 리전에서 새 Lambda 함수를 배포하고 관리합니다.
자세한 내용은 Hello World 애플리케이션 배포를 참조하세요.
참고: Lambda 콘솔 또는 AWS Command Line Interface(AWS CLI)에서 Lambda 함수를 마이그레이션할 수도 있습니다.
해결 방법
Lambda 함수 AWS SAM 파일 및 해당 배포 패키지를 다운로드합니다.
- Lambda 콘솔에서 왼쪽 패널의 함수를 선택합니다.
- 마이그레이션하려는 Lambda 함수의 이름을 선택합니다.
- Lamda 함수 창에서 동작을 선택한 다음 함수 내보내기를 선택합니다.
- 함수 내보내기 창에서 AWS SAM 파일 다운로드를 선택합니다.
- AWS SAM 파일이 다운로드되면 함수 내보내기 창으로 돌아가서 배포 패키지 다운로드를 선택하여 배포 패키지를 다운로드합니다.
Lambda 함수의 배포 패키지를 함수를 마이그레이션할 AWS 리전에 위치한 Amazon S3 버킷에 업로드합니다.
- Lambda 함수를 마이그레이션하려는 AWS 계정을 사용하여 Amazon S3 콘솔에 로그인합니다.
- 버킷 목록에서 파일을 업로드할 S3 버킷의 이름을 선택합니다.
- 업로드를 선택합니다.
- 업로드 페이지에서 파일 추가를 선택합니다.
- 다운로드한 Lamda 함수의 배포 패키지를 선택합니다. 그런 다음 열기를 선택합니다.
- 업로드를 선택합니다.
- 파일 및 폴더를 선택합니다. 배포 패키지를 열려면 배포 패키지 파일 이름을 선택합니다.
- 파일의 개체 개요 섹션에서 S3 URI 값을 확인합니다. 이 값은 배포 패키지의 S3 경로 위치입니다. 다음 단계에서 사용할 수 있도록 값을 저장합니다.
AWS SAM 파일과 AWS CloudFormation을 사용하여 다른 AWS 계정 또는 리전에서 새 Lambda 함수를 배포하고 관리합니다.
-
다운로드한 Lambda 함수 AWS SAM 파일을 엽니다.
예제 Lamda 함수 AWS SAM 파일 코드
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
MyLambdaFunction:
Type: 'AWS::Serverless::Function'
Properties:
Handler: lambda_function.lambda_handler
Runtime: python3.6
CodeUri: . #S3 bucket Link
Description: ''
MemorySize: 128
Timeout: 6
Role: 'arn:aws:iam::733097455070:role/service-role/FirstLambdaPolicy' #Replace
Environment:
Variables:
homelocation: .tmp
Tags:
sampleTag: test
Tracing: Active
-
CodeUri 뒤의 **점(.)**을 이전 단계에서 검색한 Lambda 배포 패키지의 S3 경로 위치로 바꿉니다.
중요: CloudFormation 스택을 만드는 AWS IAM(신원 및 액세스 관리) 사용자에게 이 S3 개체에 대한 's3:GetObject' 권한이 있는지 확인합니다.
-
함수를 다른 AWS 계정으로 마이그레이션하세요.
Role: 값의 경우 기존 IAM 역할 ARN을 삭제합니다. 그런 다음 이 값을 두 번째 AWS 계정의 IAM 역할 ARN으로 바꿉니다.
레이어가 있는 함수의 경우, 두 번째 AWS 계정의 레이어에 해당 레이어가 첫 번째 계정의 레이어를 사용할 수 있도록 허용하는 권한을 추가합니다. 또는 AWS SAM 파일에 있는 Lamda 레이어 ARN을 두 번째 AWS 계정의 Lamda 레이어 ARN으로 바꿉니다.
-또는-
함수를 다른 리전으로 마이그레이션합니다.
Role: 값의 경우 기존 IAM 역할 ARN을 계속 사용합니다.
계층이 있는 함수의 경우 두 번째 AWS 리전의 Lamda 계층 ARN을 Lamda 계층 ARN으로 바꿉니다.
중요: 가상 프라이빗 클라우드(VPC)에 있는 함수의 경우 SecurityGroupdIds 및 SubnetIds의 값을 두 번째 AWS 계정 또는 리전의 리소스로 바꿉니다.
-
이벤트 소스가 있는 함수의 경우, 이벤트 소스 구성은 Lambda 함수에서 다운로드한 AWS SAM 파일의 일부로 내보내지지 않습니다. 원래 이벤트 소스를 두 번째 계정 또는 리전의 리소스 값과 일치시키려면 '이벤트' 속성에 대한 구문을 참조하세요. 그런 다음 두 번째 AWS 계정 또는 리전의 AWS SAM 파일에 이벤트를 추가합니다.
-
편집한 AWS SAM 파일을 사용하여 함수를 마이그레이션하려는 두 번째 AWS 계정 또는 리전에서 AWS CloudFormation 스택을 생성합니다.
참고: AWS CloudFormation 스택을 생성하고 나면 마이그레이션된 Lambda 함수가 Lambda 콘솔에 나타납니다.