13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

awscli で入れ子の AWS CloudFormation を楽にデプロイする

Last updated at Posted at 2017-05-24

結論

aws cli のコマンド package で出来るよ!!!
package — AWS CLI 1.11.91 Command Reference

発端

CloudFormation の仕組みとして入れ子、つまり CloudFormation から CloudFormation をデプロイするができますが、その子供のほうが S3 に上がっている必要があります。
この S3 に上げるツールが色々あったり、自作できるレベルと思いつついやしかし…と考えていました。

解決策

その解決策して、冒頭に上げたコマンドがあります。
CHANGELOG を見る限りバージョン 1.11.19、去年の11月に追加されたみたいです。

使い方です。
フォルダ構成が以下のようになっている、とします。

.
├── README.md
├── sub
│   └── child.template
└──root.yaml

root.yaml が纏める CloudFormation です。
その中に child.template の情報が書いてあります。
実際にはこんな感じ。

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  myStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: ./sub/child.template
      TimeoutInMinutes: '60'
Outputs:
  StackRef:
    Value: !Ref myStack

この状態で、以下のコマンドをたたきます。

aws cloudformation package --template-file root.yaml --s3-bucket hogehoge-cfn

すると、TemplateURL: ./sub/child.template でおいていた子供のテンプレートが S3 にアップされて、それを適用するためのテンプレートが標準出力されます。

AWSTemplateFormatVersion: '2010-09-09'
Outputs:
  StackRef:
    Value:
      Ref: myStack
Resources:
  myStack:
    Properties:
      TemplateURL: https://s3.amazonaws.com/hogehoge-cfn/265b570db3b28df28e47c3f8e5032e65.template
      TimeoutInMinutes: '60'
    Type: AWS::CloudFormation::Stack

これでデプロイができます。

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?