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に申請することで緩和できますので、怪しいなと思ったら早めに緩和申請するようにしましょう。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark