AWS SAM ファイルを使用して Lambda 関数を別の AWS アカウントまたはリージョンに移行する方法を教えてください。

所要時間2分
0

AWS Lambda 関数を、1 つの AWS アカウントまたは AWS リージョンから別の AWS アカウントまたはリージョンに移行する必要があります。

簡単な説明

Lambda 関数を別の AWS アカウントまたはリージョンに移行するには、AWS サーパーレスアプリケーションモデル (AWS SAM) ファイルを使用します。

  1. Lambda 関数の AWS SAM ファイルとそのデプロイパッケージをダウンロードします。
  2. Lambda 関数のデプロイパッケージを、関数の移行先のリージョンの Amazon Simple Storage Service (Amazon S3) バケットにアップロードします。
  3. AWS SAM ファイルと AWS CloudFormation を使用して、別の AWS アカウントまたはリージョンに新しい Lambda 関数をデプロイして管理します。

詳細については、「Hello World アプリケーションのデプロイ」を参照してください。

**注:**Lambda 関数は、Lambda コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) で移行することもできます。

解決策

Lambda 関数 AWS SAM ファイルとそのデプロイパッケージをダウンロードします。

  1. Lambda コンソールの左側にあるパネルで [関数] を選択します。
  2. 移行する Lambda 関数の名前を選択します。
  3. Lambda 関数ウィンドウで [アクション] を選択し、[関数のエクスポート] を選択します。
  4. [関数のエクスポート] ウィンドウで、[AWS SAM ファイルのダウンロード] を選択します。
  5. AWS SAM ファイルがダウンロードされたら、[関数のエクスポート] ウィンドウに戻り、[デプロイパッケージのダウンロード] を選択してデプロイパッケージをダウンロードします。

Lambda 関数のデプロイパッケージを、関数の移行先の AWS リージョンにある Amazon S3 バケットにアップロードします。

  1. Lambda 関数の移行先の AWS アカウントを使用して、 Amazon S3 コンソールにサインインします。
  2. バケットリストで、ファイルをアップロードする S3 バケットの名前を選択します。
  3. [アップロード] を選択します。
  4. [アップロード] ページで、[ファイルを追加] を選択します。
  5. ダウンロードした Lambda 関数のデプロイパッケージを選択します。次に、[開く] を選択します。
  6. [アップロード] を選択します。
  7. [ファイルとフォルダ] を選択します。デプロイパッケージを開くには、デプロイパッケージのファイル名を選択します。
  8. ファイルの [オブジェクト概要] セクションで、S3 URIの値を書き留めます。これはデプロイパッケージの S3 パスの場所です。次のステップで使用できるように値を保存します。

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 スタックを作成する AWS Identity and Access Management (IAM) ユーザーに、この S3 オブジェクトに対する's3:GetObject' 権限があることを確認してください。

  3. 関数を別の AWS アカウントに移行:
    ロール: 値については、既存の IAM ロール ARN を削除します。次に、値を 2 番目の AWS アカウントの IAM ロール ARN に置き換えます。
    レイヤーのある関数の場合は、レイヤーが最初のアカウントのレイヤーを使用することを許可する 2 番目の AWS アカウントのレイヤーに権限を追加します。または、AWS SAM ファイル内の Lambda レイヤー ARN を 2 番目の AWS アカウントの Lambda レイヤー ARN に置き換えます。

    -または-

    関数を別のリージョンに移行:
    ロール: 値には、引き続き既存の IAM ロール ARN を使用してください。
    レイヤーのある関数の場合は、Lambda レイヤー ARN を 2 番目の AWS リージョンの Lambda レイヤーの ARN に置き換えます。

    **重要:**仮想プライベートクラウド (VPC) 内の関数の場合は、SecurityGroupdIdsSubnetIds の値を 2 番目の AWS アカウントまたはリージョンのリソースに置き換えます。

  4. イベントソースを使用する関数の場合、イベントソース設定は Lambda 関数からダウンロードされた AWS SAM ファイルの一部としてエクスポートされません。元のイベントソースを 2 番目のアカウントまたはリージョンのリソース値と一致させるには、「"events"プロパティの構文」を参照してください。次に、2 番目の AWS アカウントまたはリージョンの AWS SAM ファイルにイベントを追加します。

  5. 編集した AWS SAM ファイルを使用して、関数の移行先となる 2 番目の AWS アカウントまたはリージョンに AWS CloudFormation スタックを作成します。

    **注:**AWS CloudFormation スタックを作成すると、移行された Lambda 関数が Lambda コンソールに表示されます。

AWS公式
AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ