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

所要時間2分
0

AWS Lambda 関数を AWS アカウントまたは AWS リージョン間で移動する必要があります。

簡単な説明

Lambda 関数を 2 番目の AWS アカウントまたはリージョンに移行するには、AWS コマンドラインインターフェイス (AWS CLI) を使用します。

  1. GetFunction コマンドを実行して Lambda 関数デプロイパッケージをダウンロードします。
  2. 関数の移行先である 2 番目の AWS アカウントまたはリージョンの AWS CLI を設定します。
    **注:**2 番目の AWS アカウントまたはリージョンの新しい AWS CLI プロファイルも設定できます。
  3. CreateFunction コマンドを実行して、2 番目の AWS アカウントまたはリージョンで新しい関数を作成します。

**注:**Lambda コンソールまたは AWS サーバーレスアプリケーションモデル (AWS SAM) を使用して Lambda 関数を移行することもできます

以下の解決方法では、アカウントまたはリージョン間で一度に 1 つの関数のみを移行できます。Lambda 関数を直接かつネイティブに一括移行することはできません。

解決策

注: AWS CLI コマンドを実行する際にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

GetFunction コマンドを実行して Lambda 関数デプロイパッケージをダウンロードする

  1. 次の GetFunction コマンドを実行します。

    aws lambda get-function --function-name my-function

    **重要:**my-function の部分は移行する関数の名前で置き換えてください。

  2. コマンド応答で、"Location" の後にある URL リンクを開きます。リンクは、次のようなコードブロックで表示されます。

    "Code": {        "RepositoryType": "S3",
            "Location": "https://awslambda-us-west-2-tasks.s3.us-west-2.amazonaws.com/snapshots/123456789012/my-function..."
        },

    注:****"Location": の後にあるリンクを開くと、デプロイパッケージがダウンロードされます。

関数の移行先となる 2 番目の AWS アカウントまたはリージョンの AWS CLI を設定する

  1. 次のConfigure コマンドを実行します。
    aws configure --profile profilename
    **重要:**profilename の部分は、2 番目の AWS アカウントまたはリージョンの識別可能な名前に変更します。
  2. 次の入力値を入力して、2 番目の AWS アカウントおよびリージョンの AWS Identity and Access Management (IAM) ユーザー認証情報を渡します。
    AWS Access Key ID [None]: に 2 番目の AWS アカウントの IAM ユーザーのアクセスキーを入力します。または、関数を別のリージョンに移行する場合は、最初の AWS アカウントで IAM ユーザーのアクセスキーを入力します。
    AWS Secret Access Key [None]: に同じ IAM ユーザーのシークレットアクセスキーを入力します。
    Default region name [None]: に関数の移行先の AWS リージョンを入力します。

詳細については、「AWS CLI の設定」を参照してください。

CreateFunction コマンドを実行して、2 番目の AWS アカウントまたはリージョンで新しい関数を作成します。

注:CreateFunction コマンドを実行するには、Lambda 関数のデプロイパッケージと実行ロールが必要です。

  1. 設定した AWS CLI プロファイルを使用して、次の CreateFunction コマンドを実行します。
    aws lambda create-function \    --function-name my-function \
        --runtime nodejs18.x \    
        --zip-file fileb://my-function.zip \   
        --handler my-function.handler \
        --role arn:aws:iam::123456789012:role/service-role/MyTestFunction-role-tges6bf4 \
        --profile profilename
    **注:**コマンドを実行する前に、移行する関数の情報で次の値を置き換えてください。
    function-name に、関数の名前を入力します。
    runtime に関数のランタイムを入力します。
    zip-file に関数のデプロイパッケージのファイルパスを入力します。
    handler に関数のハンドラー名を入力します。
    role には、関数の移行先の AWS アカウントにある Lambda 実行ロール ARN を入力します。
    profile には、Configure コマンドを実行したときに作成した AWS CLI プロファイル名を入力します。
    関数を別のリージョンに移行したいが、同じアカウントに保持したい場合は、同じ実行ロールを引き続き使用することができます。
  2. 次の list-functions コマンドを実行して、移行が正常に完了したことを確認します。
    aws lambda list-functions \    --profile profilename
    **注:**Configure コマンドを実行したときに作成した AWS CLI プロファイル名で profilename を置き換えます。
AWS公式
AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ