想ひ出のへっぽこBlogⅡ from35

~ 自身の備忘録および学習促進のためにブログります。~

想ひ出23: AWS/CloudFormationに入門する/1

f:id:moqrin3:20190114193742p:plain

おはようございます、moqrinです。

今更感満載ですが、CloudFormationに入門したので、その学習まとめ1です。

しばらく触らないと忘れるため、個人的後日振り返り用でございます。

なお、また後日、学習を続けてまとめるつもりでございます。

内容としては、公式リファレンスを組み換えたまとめです。

目次

1. AWS CloudFormationの仕組み

2. テンプレートの作成方法

3. テンプレートの基礎項目

4. 主な組み込み関数

5. その他の重要機能

6. AWS CLIの利用

7. CloudFormation ヘルパースクリプト


1. AWS CloudFormationの仕組み

  1. テンプレートを作成

  2. テンプレートをローカルまたは S3 バケットに保存。

    ローカルに保存されたテンプレートファイルを指定した場合、AWS CloudFormation はそれを AWS アカウントの S3 バケットにアップロードする

  3. テンプレートのファイルの場所 (ローカルコンピューターのパスや Amazon S3 の URL など) を指定し、AWS CloudFormation スタックを作成する。


用語

  • テンプレート --- JSON または YAML 形式のテキストファイル。AWS リソースを作成する際の設計図として使用する。

    リソースの依存関係はAWS CloudFormationで自動判別してくれる。

  • スタック --- テンプレートで作成されたリソースのコレクションを管理する単位。スタックを作成、更新、削除することで、リソースのコレクションを作成、更新、削除する。

    スタックを削除しても、その中のいくつかのリソースは保持したい場合には、削除ポリシーを使用してそのリソースを保持できる。

2. テンプレートの作成(利用)方法

  1. クイックスタート

    AWS ベストプラクティスに基づいた人気の高いソリューションを即座に利用できるクイックスタート)

  2. サンプルテンプレート & テンプレートスニペット

    サンプルからリファレンスを確認して、カスタマイズを施す

  3. ゼロからテンプレート書く

3. テンプレートの基礎項目

項目 内容
Resources ※ 必須項目 スタックを構成するリソースとプロパティを指定
Parameters 実行時にユーザ入力を求めるパラメータ値(Keypair名やDBユーザ名など)
Mappings キーと値のマッピング。パラメータ値の条件指定に使用
Outputs スタック構築後にAWS CloudFormationから出力させる値(DNSやEIPなど)
Transform サーバレスアプリケーションの場合に使用。使用するSAMのバージョンを指定
Description テンプレートの説明文
Metadata テンプレートに関する追加情報
AWSTemplateFormatVersion テンプレートのバージョン

4. 主な組み込み関数

関数 内容
!Ref テンプレート内の論理名(ID)から物理名(ID)を参照する
!GetAtt リソースが持つ属性値を取得する
!Join 文字列の結合
!GetAZs AZを取得する擬似パラメーター
Fn::ImportValue エクスポート値を取得する
Fn::Base64 Base64エンコード
Fn::If,Fn::Equals,Fn::Not 条件関数

5. その他の重要機能

  • DependsOn 属性: あるリソースに続けて別のリソースを作成する必要があることを指定する

6. AWS CLIの使用

AWS コマンドラインインターフェイスの使用

# テンプレートの検証
aws cloudformation validate-template --template-url file:///home/testuser/mytemplate.json
# 新規作成
aws cloudformation create-stack --stack-name myteststack --template-body file:///home/testuser/mytemplate.json --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2
# 新規作成/複数パラメータ
aws cloudformation create-stack --stack-name myteststack --template-body file:///home/testuser/mytemplate.json --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=SubnetIDs,ParameterValue=SubnetID1\\,SubnetID2
# 更新
aws cloudformation update-stack --stack-name myteststack --template-body file:///home/testuser/mytemplate.json --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2
# 削除
aws cloudformation delete-stack --stack-name myteststack

7. CloudFormation ヘルパースクリプト

Amazon EC2 インスタンスでソフトウェアをインストールしたりサービスを開始したりするために使用できる、Python ヘルパースクリプト

後日の宿題。。。

CloudFormation ヘルパースクリプトリファレンス

参考:

AWS CloudFormation とは

AWS Black Belt / AWS CloudFormation