serverless-plugin-split-stacksで200以上のリソースをServerless Frameworkで管理する
Serverless Frameworkを使ってる時のハマりどころとして、「CloudFormationのリソース数制限」があります。 AWS CloudFormation テンプレートで宣言できるリソースの最大数:20 […]
広告ここから
広告ここまで
目次
Serverless Frameworkを使ってる時のハマりどころとして、「CloudFormationのリソース数制限」があります。
AWS CloudFormation テンプレートで宣言できるリソースの最大数:200 個のリソース
※さらに多くのリソースを指定するには、たとえば、ネストされたスタックを使用して、1 つのテンプレートを複数のテンプレートに分離します。
via AWS CloudFormation の制限
現在ネストしたスタックをServerless Frameworkから作ることができませんので、serverless-plugin-split-stacks
を使います。
セットアップ
$ npm install --save-dev serverless-plugin-split-stacks
serverless.yml
の設定
以下のようにplugins
に記述しておくだけでOKです。
service: example
provider:
name: aws
runtime: nodejs6.10
functions:
hello:
handler: lambdas.hallo
plugins:
- serverless-plugin-split-stacks
デプロイ
plugins
に設定ができていれば、あとは特別なコマンド操作などを行わなくともdeploy
コマンドから分割を実行してくれます。
$ sls deploy --stage development
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: [serverless-plugin-split-stacks]: Summary: 7 resources migrated in to 3 nested stacks
Serverless: [serverless-plugin-split-stacks]: Resources per stack:
Serverless: [serverless-plugin-split-stacks]: - (root): 12
Serverless: [serverless-plugin-split-stacks]: - APINestedStack: 3
Serverless: [serverless-plugin-split-stacks]: - PermissionsNestedStack: 2
Serverless: [serverless-plugin-split-stacks]: - VersionsNestedStack: 2
Serverless: Uploading CloudFormation file to S3...
<以下略>
CloudFormationの管理画面をみると、ネストされたスタックが作成されていることが確認できます。
なお
1スタックあたりのリソース数だけでなく、生成できるスタックの数についても200個のスタックまで
という制限があります。
こちらはAWSに申請することで緩和できますので、怪しいなと思ったら早めに緩和申請するようにしましょう。