sam packageしてaws cloudformation deployでlambdaデプロイを行う
aws cloudformation packageすると、毎回S3に新たなUUIDの圧縮ファイルが上がってしまいます。
その為、aws cloudformation deployすると、Lambdaソースに変更がなくても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で実行するとエラーになりましたので、このオプションをつけておいたほうが良いと思います。
参考サイト
![](https://confrage.jp/wp-content/uploads/cocoon-resources/blog-card-cache/30c9539311cf7fea215fbf986a41e879.png)
2023/01/22 追記
aws cloudformation deployはsam deployでOKぽいです。
![株式会社CONFRAGE](https://i0.wp.com/confrage.jp/wp-content/uploads/2018/08/aaaaaaaaa-1.jpg?resize=100%2C100&ssl=1)
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント