AWS Lambda 関数を AWS アカウントまたは AWS リージョン間で移動する必要があります。
簡単な説明
Lambda 関数を 2 番目の AWS アカウントまたはリージョンに移行するには、AWS コマンドラインインターフェイス (AWS CLI) を使用します。
- GetFunction コマンドを実行して Lambda 関数デプロイパッケージをダウンロードします。
- 関数の移行先である 2 番目の AWS アカウントまたはリージョンの AWS CLI を設定します。
**注:**2 番目の AWS アカウントまたはリージョンの新しい AWS CLI プロファイルも設定できます。
- CreateFunction コマンドを実行して、2 番目の AWS アカウントまたはリージョンで新しい関数を作成します。
**注:**Lambda コンソールまたは AWS サーバーレスアプリケーションモデル (AWS SAM) を使用して Lambda 関数を移行することもできます。
以下の解決方法では、アカウントまたはリージョン間で一度に 1 つの関数のみを移行できます。Lambda 関数を直接かつネイティブに一括移行することはできません。
解決策
注: AWS CLI コマンドを実行する際にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
GetFunction コマンドを実行して Lambda 関数デプロイパッケージをダウンロードする
-
次の GetFunction コマンドを実行します。
aws lambda get-function --function-name my-function
**重要:**my-function の部分は移行する関数の名前で置き換えてください。
-
コマンド応答で、"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 を設定する
- 次のConfigure コマンドを実行します。
aws configure --profile profilename
**重要:**profilename の部分は、2 番目の AWS アカウントまたはリージョンの識別可能な名前に変更します。
- 次の入力値を入力して、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 関数のデプロイパッケージと実行ロールが必要です。
- 設定した 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 プロファイル名を入力します。
関数を別のリージョンに移行したいが、同じアカウントに保持したい場合は、同じ実行ロールを引き続き使用することができます。
- 次の list-functions コマンドを実行して、移行が正常に完了したことを確認します。
aws lambda list-functions \ --profile profilename
**注:**Configure コマンドを実行したときに作成した AWS CLI プロファイル名で profilename を置き換えます。