AWS SAM 파일을 사용하여 Lambda 함수를 다른 AWS 계정 또는 리전으로 마이그레이션하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2021년 2월 3일

AWS Lambda 함수를 AWS 계정 또는 AWS 리전 간에 이동해야 합니다. AWS Serverless Application Model(AWS SAM) 파일을 사용하여 이 작업을 수행하려면 어떻게 해야 하나요?

간략한 설명

AWS SAM 파일을 사용하여 Lambda 함수를 다른 AWS 계정 또는 리전으로 마이그레이션하려면 다음을 수행하세요.

1.    배포 패키지와 함께 Lambda 함수용 AWS SAM 파일을 다운로드합니다.

2.     Lambda 함수를 마이그레이션할 AWS 리전의 Amazon Simple Storage Service(Amazon S3) 버킷에 함수의 배포 패키지를 업로드합니다.

3.    AWS SAM 파일과 AWS CloudFormation을 사용하여 다른 AWS 계정 또는 리전에서 새로운 Lambda 함수를 배포하고 관리합니다.

자세한 내용은 Hello World 애플리케이션 배포를 참조하세요.

참고: Lambda 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 Lambda 함수를 마이그레이션할 수도 있습니다.

해결 방법

Lambda 함수 AWS SAM 파일 및 해당 배포 패키지 다운로드

1.    Lambda 콘솔의 왼쪽 패널에서 [함수(Functions)]를 선택합니다.

2.    마이그레이션할 Lambda 함수의 이름을 선택합니다.

3.    Lambda 함수 창에서 [작업(Actions)]을 선택한 다음 [함수 내보내기(Export Function)]를 선택합니다.

4.    [함수 내보내기(Export Function)] 창에서 [AWS SAM 파일 다운로드(Download AWS SAM file)]를 선택합니다.

5.    AWS SAM 파일을 다운로드한 후 [함수 내보내기(Export Function)] 창으로 돌아가서 [배포 패키지 다운로드(Download deployment package)]를 선택하여 배포 패키지를 다운로드합니다.

Lambda 함수를 마이그레이션할 AWS 리전에 위치한 Amazon S3 버킷에 함수의 배포 패키지를 업로드합니다.

1.    Lambda 함수를 마이그레이션할 AWS 계정을 사용하여 Amazon S3 콘솔에 로그인합니다.

2.    [버킷(Buckets)] 목록에서 파일을 업로드할 S3 버킷의 이름을 선택합니다.

3.    [업로드(Upload)]를 선택합니다.

4.    [업로드(Upload)] 페이지에서 [파일 추가(Add files)]를 선택합니다.

5.    다운로드한 Lambda 함수의 배포 패키지를 선택합니다. 그런 다음 [열기(Open)]를 선택합니다.

6.    [업로드(Upload)]를 선택합니다.

7.    [파일 및 폴더(Files and folders)]를 선택한 다음 배포 패키지 파일 이름을 선택하여 엽니다.

8.    파일의 [객체 개요(Object Overview)] 섹션에서 배포 패키지의 S3 경로 위치인 [S3 URI] 값을 확인합니다. 다음 단계에서 사용할 값을 저장합니다.

AWS SAM 파일과 AWS CloudFormation을 사용하여 다른 AWS 계정 또는 리전에서 새로운 Lambda 함수를 배포하고 관리합니다.

1.    다운로드한 Lambda 함수 AWS SAM 파일을 엽니다.

예제 Lambda 함수 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

2.    CodeUri 뒤의 점(.)을 이전 단계에서 검색한 Lambda 배포 패키지의 S3 경로 위치로 바꿉니다.

중요: CloudFormation 스택을 생성하는 IAM 사용자에게 이 S3 객체에 대한 's3:GetObject' 권한이 있는지 확인하세요.

3.    함수를 다른 AWS 계정으로 마이그레이션하려면 다음을 수행합니다.
[역할:(Role:)] 값의 경우 기존 IAM 역할 ARN을 삭제합니다. 그런 다음 값을 두 번째 AWS 계정의 IAM 역할 ARN으로 바꿉니다.
계층이 있는 함수의 경우 해당 계층에서 첫 번째 계정의 계층을 사용할 수 있도록 두 번째 AWS 계정의 계층에 권한을 추가합니다. 또는 AWS SAM 파일의 Lambda 계층 ARN을 두 번째 AWS 계정의 Lambda 계층 ARN으로 바꿉니다.

-또는-

함수를 다른 AWS 리전으로 마이그레이션하려면 다음을 수행하세요.
[역할:(Role:)] 값의 경우 기존 IAM 역할 ARN을 계속 사용합니다.
계층이 있는 함수의 경우 Lambda 계층 ARN을 두 번째 AWS 리전의 Lambda 계층 ARN으로 바꿉니다.

중요: Virtual Private Cloud(VPC)의 함수의 경우 SecurityGroupdIdsSubnetIds 값을 두 번째 AWS 계정 또는 리전의 리소스로 바꿉니다.

4.    이벤트 소스가 있는 함수의 경우 AWS SAM 파일에서 두 번째 AWS 계정 또는 리전에 이벤트 소스를 다시 생성하기 위한 코드를 제거합니다. 그런 다음 [이벤트:(Events:)] 뒤의 값을 두 번째 AWS 계정 또는 리전의 이벤트 소스로 바꿉니다.

5.    편집된 AWS SAM 파일을 사용하여 함수를 마이그레이션할 두 번째 AWS 계정 또는 리전에 AWS CloudFormation 스택을 생성합니다.

참고: AWS CloudFormation 스택을 생성하면 마이그레이션된 Lambda 함수가 Lambda 콘솔에 나타납니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?