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 を置き換えます。