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

3분 분량
0

AWS Lambda 함수를 한 AWS 계정 또는 AWS 리전에서 다른 AWS 계정 또는 리전으로 이동해야 합니다.

간단한 설명

Lambda 함수를 다른 AWS 계정이나 리전으로 마이그레이션하려면 AWS Serverless Application Model(AWS SAM) 파일을 사용하세요.

  1. 배포 패키지와 함께 Lambda 함수에 대한 AWS SAM 파일을 다운로드합니다.
  2. Lambda 함수의 배포 패키지를 함수를 마이그레이션하려는 리전의 Amazon Simple Storage Service(S3) 버킷에 업로드합니다.
  3. AWS SAM 파일과 AWS CloudFormation을 사용하여 다른 AWS 계정 또는 리전에서 새 Lambda 함수를 배포하고 관리합니다.

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

참고: Lambda 콘솔 또는 AWS Command Line Interface(AWS CLI)에서 Lambda 함수를 마이그레이션할 수도 있습니다.

해결 방법

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

  1. Lambda 콘솔에서 왼쪽 패널의 함수를 선택합니다.
  2. 마이그레이션하려는 Lambda 함수의 이름을 선택합니다.
  3. Lamda 함수 창에서 동작을 선택한 다음 함수 내보내기를 선택합니다.
  4. 함수 내보내기 창에서 AWS SAM 파일 다운로드를 선택합니다.
  5. AWS SAM 파일이 다운로드되면 함수 내보내기 창으로 돌아가서 배포 패키지 다운로드를 선택하여 배포 패키지를 다운로드합니다.

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

  1. Lambda 함수를 마이그레이션하려는 AWS 계정을 사용하여 Amazon S3 콘솔에 로그인합니다.
  2. 버킷 목록에서 파일을 업로드할 S3 버킷의 이름을 선택합니다.
  3. 업로드를 선택합니다.
  4. 업로드 페이지에서 파일 추가를 선택합니다.
  5. 다운로드한 Lamda 함수의 배포 패키지를 선택합니다. 그런 다음 열기를 선택합니다.
  6. 업로드를 선택합니다.
  7. 파일 및 폴더를 선택합니다. 배포 패키지를 열려면 배포 패키지 파일 이름을 선택합니다.
  8. 파일의 개체 개요 섹션에서 S3 URI 값을 확인합니다. 이 값은 배포 패키지의 S3 경로 위치입니다. 다음 단계에서 사용할 수 있도록 값을 저장합니다.

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

  1. 다운로드한 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
  2. CodeUri 뒤의 **점(.)**을 이전 단계에서 검색한 Lambda 배포 패키지의 S3 경로 위치로 바꿉니다.

    중요: CloudFormation 스택을 만드는 AWS IAM(신원 및 액세스 관리) 사용자에게 이 S3 개체에 대한 's3:GetObject' 권한이 있는지 확인합니다.

  3. 함수를 다른 AWS 계정으로 마이그레이션하세요.
    Role: 값의 경우 기존 IAM 역할 ARN을 삭제합니다. 그런 다음 이 값을 두 번째 AWS 계정의 IAM 역할 ARN으로 바꿉니다.
    레이어가 있는 함수의 경우, 두 번째 AWS 계정의 레이어에 해당 레이어가 첫 번째 계정의 레이어를 사용할 수 있도록 허용하는 권한을 추가합니다. 또는 AWS SAM 파일에 있는 Lamda 레이어 ARN을 두 번째 AWS 계정의 Lamda 레이어 ARN으로 바꿉니다.

    -또는-

    함수를 다른 리전으로 마이그레이션합니다.
    Role: 값의 경우 기존 IAM 역할 ARN을 계속 사용합니다.
    계층이 있는 함수의 경우 두 번째 AWS 리전의 Lamda 계층 ARN을 Lamda 계층 ARN으로 바꿉니다.

    중요: 가상 프라이빗 클라우드(VPC)에 있는 함수의 경우 SecurityGroupdIdsSubnetIds의 값을 두 번째 AWS 계정 또는 리전의 리소스로 바꿉니다.

  4. 이벤트 소스가 있는 함수의 경우, 이벤트 소스 구성은 Lambda 함수에서 다운로드한 AWS SAM 파일의 일부로 내보내지지 않습니다. 원래 이벤트 소스를 두 번째 계정 또는 리전의 리소스 값과 일치시키려면 '이벤트' 속성에 대한 구문을 참조하세요. 그런 다음 두 번째 AWS 계정 또는 리전의 AWS SAM 파일에 이벤트를 추가합니다.

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

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

AWS 공식
AWS 공식업데이트됨 7달 전