Serverless FrameworkのDescriptionの変更方法
はじめに
好物はインフラとフロントエンドのかじわらゆたかです。 最近案件でServerless Frameworkを使うことになって色々と試しております。 何個かServerless Frameworkを用いたアプリを作成するとCloudFormationのManagement Consoleがこのようになってしまいます。
全く異なるアプリケーションを実装していても同じ説明文(The AWS CloudFormation template for this Serverless application)が並んでおり、自分デプロイを本当にしたのか判断がつきにくい状態になります。 この説明文を変更する方法を解説します。
検証環境
- OS X El Capitan 10.11.6
- Node.js v7.2.0
- Serverless 1.17.0
説明文を変えてみた
Serverless Framewokの設定ファイルであるserverless.ymlに追記すればよいと考えた時代もありました。 ですが、そのような項目が見当たりません。
service: sampleserverless provider: name: aws runtime: python3.6 functions: hello: handler: handler.hello
Serverless Frameworkはデプロイする際に、このファイルを元にCloudFormationのテンプレートを作成し、 作成したテンプレートを用いてCloudFormationにデプロイを実施しております。
なお、作成されたCloudFormationのテンプレートは以下のコマンドで確認することができます。
$ serverless package --package ./package Serverless: Packaging service... $ cat ./package/cloudformation-template-create-stack.json { "AWSTemplateFormatVersion": "2010-09-09", "Description": "The AWS CloudFormation template for this Serverless application", (以下省略) } $ cat package/cloudformation-template-update-stack.json { "AWSTemplateFormatVersion": "2010-09-09", "Description": "The AWS CloudFormation template for this Serverless application", (以下省略) }
変更するためには、serverless.ymlのresourceの項目で説明文を指定することで更新が可能です。
service: sampleserverless provider: name: aws runtime: python3.6 resources: Description: Sample Serverless Application functions: hello: handler: handler.hello
上記のyamlを元に、作成されたjsonファイルを確認すると反映されていることがわかります。
$ serverless package --package ./package Serverless: Packaging service... $ cat package/cloudformation-template-update-stack.json { "AWSTemplateFormatVersion": "2010-09-09", "Description": "Sample Serverless Application", (以下省略) }
もちろん、デプロイするとCloud FormationのManagement Consoleでも説明文が反映されていることがわかります。
$ serverless deploy
まとめ
Serverless Frameworkは複数のLambdaの配置を管理すると言ったときにも、非常に強みのある仕組みだと思っています。 また、そういった際にも説明文をきちんとつけることで、より便利に利用することができるのではないでしょうか。 Descriptionの変更方法は意外と見つからなかったので、これがServerless Frameworkを用いている人の助けになれば幸いです。
参考
Override the Stack Description? - Serverless Framework - Serverless Forums