sam packageしてaws cloudformation deployでlambdaデプロイを行う

sam packageしてaws cloudformation deployでlambdaデプロイを行う

aws cloudformation packageすると、毎回S3に新たなUUIDの圧縮ファイルが上がってしまいます。

その為、aws cloudformation deployすると、Lambdaソースに変更がなくてもLambdaデプロイされてしまいます。

sam packageしてaws cloudformation deployでlambdaデプロイを行う

sam packageコマンドだと、ソースに変更がなければUUIDが同じとなりs3へのアップロードがskipされます。その為、aws cloudformation deployしてもlambdaデプロイはされません。

sam deploy が sam package の機能を暗黙的に実行するようになりました。sam deploy コマンドを直接使用して、アプリケーションをパッケージ化およびデプロイできます。

コチラ参照

変更がないソースに対してsam packageした時に出力されるメッセージ↓

File with same data already exists at 678187a2e48e3c8665665076a6515654, skipping upload

以下のコマンドでOKです。

$ sam package --template-file select.yml --s3-bucket hoge --output-template-file select_out.yml
$ aws cloudformation deploy --template-file select_out.yml --stack-name hogestack --capabilities CAPABILITY_IAM --no-fail-on-empty-changeset

select.yml

CloudFormationのymlです。

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: This CloudFormation template to create Lambda function

Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: aaa
      CodeUri: ./temp   #zipファイルでなくてOK
      Handler: index.handler
      Runtime: nodejs16.x
      MemorySize: 128
      Timeout: 15

./temp配下がLambdaの構成になっていればCodeUriはzipでなくてOKです。

–no-fail-on-empty-changeset

--no-fail-on-empty-changesetオプションでデプロイすることによって、チェンジセットがなくてもaws cloudformation deployコマンドの終了ステータスは正常終了(=0)になります。

CodeBuildで実行するとエラーになりましたので、このオプションをつけておいたほうが良いと思います。

参考サイト

【小ネタ】AWS SAMを継続的デリバリする際に便利なオプションのご紹介 | DevelopersIO
はじめに こんにちは、中山です。 現在私が関わっている仕事ではAWS SAMを使ってサーバーレスアプリケーションで構成管理をしています。構成管理を整えたら当然CD(継続的デリバリ)も回したい要求が出てくるので、Circl …

2023/01/22 追記

aws cloudformation deployはsam deployでOKぽいです。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました