0
0

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 1 year has passed since last update.

【AWS】CloudFormationでネストされたスタックを動かしてみる

Last updated at Posted at 2023-05-23

リソースの規模が大きくなるほどコードは長くなるので、可読性は悪くなります。そうなると一部リソースは、ファイルを切り分けて書きたくなることがあります。その場合、テンプレート(スタック)を分けるという手法もありますが、この記事ではネストという仕組みをご紹介したいと思います:boy_tone2:

イメージ図

スクリーンショット 2023-05-23 23.26.59.jpg

root.yamlを基本のテンプレートとし、vpc.yamlとsg.yamlをネストさせています。

コード

本記事では構成からコードまで下記記事から拝借したので、ここでは割愛します。

スタック作成

この記事ではスタックをCLIで作成していきます。

参考

①S3にネストされるファイルをアップロード

まずはネストされるファイルをS3にアップロードします。ネストされたファイルはディレクトリに格納しておくとコマンドを短くできるのでおすすめです。--recursiveオプションでディレクトリ配下のファイルをコピー可能です。

aws s3 cp ネストされたファイルが存在するローカルディレクトリ s3://バケット名 --recursive

②スタック作成

あとは通常通りスタックを作成します。ネストされるオブジェクトURLをパラメータにしているので、パラメータファイルを別で作成し、コマンド内で取得させます。

aws cloudformation deploy --stack-name test-stack --template-file root.yaml --parameter-overrides $(cat parameter.yaml)

パラメータはこんな感じ。

parameter.yaml
TemplateSG=https://バケット名.s3.ap-northeast-1.amazonaws.com/sg.yaml
TemplateVPC=https://バケット名.s3.ap-northeast-1.amazonaws.com/vpc.yaml

成功するとスタック上にもネストされたと表示されます。
スクリーンショット 2023-05-23 23.56.29.jpg

これでネストされたスタックの作成は完了です。スタック単位での分割とネストの使いわけですが、大きいレイヤーであればスタック単位、小さい単位であればネストという考え方でよいかと思います。

具体的なリソースを出すとスタック単位でIAM、ネットワーク、CW、EC2あたりを分割。さらにこれらのリソースを分割する場合はネストさせます。大規模な環境であればIAMやRT、CW、SGあたりはコードが非常に長くなるので、ネストという手法を大いに生かせそうです。

スタックを分割させると依存関係がある場合、これを成立させる必要があります。この内容に関してもまた別途記事を書いてみようと思います:sparkles:

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?