AWS CLI を使用して Lambda 関数を別の AWS アカウントまたはリージョンに移行するにはどうすればよいですか?

最終更新日: 2021 年 2 月 3 日

AWS Lambda 関数を別の AWS アカウント (または AWS リージョン) に移動する必要があります。これを AWS Command Line Interface (AWS CLI) で行う方法を教えてください。

簡単な説明

AWS CLI を使用して Lambda 関数を 2 番目の AWS アカウントまたはリージョンに移行するには、次の手順を実行します。

1.    GetFunction コマンドを実行して、Lambda 関数のデプロイパッケージをダウンロードします。

2.    関数の移行先である 2 番目の AWS アカウントまたはリージョンの AWS CLI を設定します。
注意: 2 番目の AWS アカウントまたはリージョンの新しい AWS CLI プロファイルも設定できます。

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

注意: Lambda コンソールまたは AWS サーバーレスアプリケーションモデル (AWS SAM) を使用して 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 nodejs10.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 プロファイル名を入力します。

注意: 関数を別の AWS リージョンに移行し、同じ AWS アカウントに保持する場合は、同じ実行ロールを引き続き使用することができます。

2.    次の list-functions コマンドを実行して、移行が正常に完了したことを確認します。

aws lambda list-functions \
    --profile profilename

重要: Configure コマンドを実行したときに作成した AWS CLI プロファイル名で profilename を置き換えます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?