1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CloudFormation 理解メモ

Last updated at Posted at 2024-09-18

3つの要素

  • Templates (テンプレート)
    リソースを定義したファイル。JSON(.json), YAML(,yaml), TXT(.txt)から選べる。

  • Stacks (スタック)
    テンプレートで定義され、CloudFormationによって作成されたリソース群。テンプレートを変更しCloudFormationでデプロイすることでリソースの変更が可能。

  • Change sets (変更セット)
    デプロイ済みのスタックに対してテンプレートを修正した際にCloudFormation側が差異を表示してくれる。

基本的な挙動

  1. テンプレートを作成し、ローカルかS3に保存
  2. AWSコンソールかAPIかCLIでテンプレートを指定して実行
  3. CloudFormationがテンプレートを読み込んでリソースを作成
  4. (テンプレートを変更した場合)作成中にエラーが起きればそれまで作成したものを削除して、変更実施前の状態にロールバック

注意点

  • アカウントのサービス上限数(quota)や変更不可のサービス、権限の不足等はCloudFormationは考慮せずデプロイを実行する。エラーがあればエラーを吐き出す。
  • 更新する際は既存のリソースの運用やリソースの存在そのものに影響がないか十分注意する。

他サービスとの連携

  • Git
    テンプレートファイル(CloudFormation template file)とスタックデプロイメントファイル(stack deployment file)を用意する。これらに変更があればCloudFormationは自動的にスタックを更新する。Gitを使えばプルリクエストやバージョン管理の集中管理ができるようになる。AWS公式ドキュメントではGit syncってのを使えばできると書いてあった。Git syncはCodeConnectionsでアクセスできると書いてあった。GitHub, GitHub Enterprise, GitLab, BitBucket, GitLab self-managedのリポジトリをサポートしてると書いてあった(2024年9月18日時点)。
     https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/git-sync.html
    

テンプレートの作成手段

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html
  • AWS Application Composer
    AWSの物理設計図か論理図を作る感じで、視覚的に設計図を作れる。コンソールで見た感じだと、ビジュアルエディタでポチポチ作ったものはjsonやyamlで同期的に見れるようになってた。
  • AWS CloudFormation Designer
    Application Composerがこれの改良版なので基本的にApplication Composerを使えばいいっぽい。
  • テキストエディタ
    jsonかyamlで、テキストエディタで作る。
  • IaC generator

自分がやりたいこと

ネットワークはネットワークスタック、プロキシサーバとそのサブネットやルートテーブルはプロキシサービススタックみたいに、機能ごとに管理スタックを分けて変更管理しやすくしたい。ネストってのがあったからそれが使えるかも。

テンプレートについて

テンプレートのうちResourcesセクションのみ必須項目。

テンプレートの保管場所

  • S3バケット
    スタック作成・変更時にS3URLを指定できる。コンソールやCLIでローカルのテンプレートを指定(CloudFormationにアップロード)した場合、自動的にS3バケットが作成されてそこに保管される。また、実行ユーザに権限があることが前提。
  • Gitリポジトリ
    Git syncを使う。本記事の他のサービスとの連携を参照。

テンプレートのバリデーション

CLIでvalidate-templateコマンドを使うかコンソールでテンプレートを指定すれば、テンプレートのJSON又はYAML構文バリデーションができる。
リンター(CloudFormation Linter (cfn-lint))やフォーマッター(CloudFormation Rain (rain fmt))がある。

テンプレート作成に役立つページ

まだ読んでないページ

Get values stored in other services using dynamic references

Get exported outputs from a deployed CloudFormation stack

Define parameter input with CloudFormation-supplied parameter types

Use CloudFormation-supplied resource types in stack templates

Managing AWS resources as a single unit with AWS CloudFormation stacks

Security in AWS cloudFormation

Monitoring CloudFormation and Git sync events with EventBridge

Continuous delivery with CodePipeline

Managing extensions with the CloudFormation registry

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?