1. Lambdaソースのダウンロード
まずは、移管対象のLambdaのSAM(yaml)とデプロイパッケージ(zip)をダウンロードする。
- 移行する Lambda 関数のコンソール画面へ移動
- Lambda 関数ウィンドウで [アクション] を選択し、[関数のエクスポート] を選択
- [ AWS SAM ファイルのダウンロード ] を選択してダウンロード
- [デプロイパッケージのダウンロード] を選択してダウンロード
2. 移行先のAWSのS3にデプロイパッケージをアップロード
3. CloudFormationでLambda 関数をデプロイする
AWsサービス構成ファイルであるSAM(yaml)を移管先へ修正して、CloudFormationで構築する。
- ダウンロードしたSAM ファイルを開く
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Description: An AWS Serverless Specification template describing your function. Resources: *******: Type: 'AWS::Serverless::Function' Properties: Handler: lambda_function.lambda_handler Runtime: python3.11 CodeUri: s3://*********/*******************.zip Description: '' MemorySize: 128 Timeout: 3 Role: 'arn:aws:iam::**********:role/AWSLambda-ExecutionRole' RuntimeManagementConfig: UpdateRuntimeOn: Auto
- SAM ファイルを編集する
- CodeUri: の後に、S3 URIを記載する
- Lambda用にIAM Roleを作成する
AWSLambda-ExecutionRole
- Role:の後に、Lmabdaに付与したいRoleのarnに置き換える
- その他、Runtime:やLayer:を適宜書き換える
- CloudFormationのコンソール画面で、スタックの作成を押す
- テンプレートの指定からテンプレートファイルのアップロードを押し、SAMをアップロードする
- 次へを押す
- スタック名を決める。このスタック名はLambda関数名の先頭文字 ******-元の名前-ランダムな文字列になる
- 次へを押す
- 次へを押す
- 3か所チェックを入れて、送信を押す
参考文献