AWSのリソースはCloud Formationを利用して、作成すると複製や削除が非常に楽になるので利用しているのですが、毎回「このリソースってどう書けばいいの・・・」っていうのが分からなくなるのでメモ書き。
AWS Cloud Formation って何?
テンプレート(yamlやjson)ファイルを利用して、AWS上に様々なリソースを作成できるサービス。
Cloud Formationのスタックにテンプレートを展開し、リソースを作成できる。
作成したテンプレートファイルがあれば同じリソースを作成することが可能なので、AWSコンソールを操作して作成という手間がなくなる。
あとスタックを削除するとそのテンプレートから作成されたリソースは全て削除されるため、不要になったリソースを削除するときに便利。
リソースの一覧
これが一番知りたかった。
やっと見つけました。
「AWS CloudFormation Resource types」と検索すると引っかかるようです。
テンプレートセクションの詳細
各セクションの説明はこちら。
依存関係のあるリソースを作成する場合
例えばリソースAはリソースBの作成後に作成しないとエラーになる場合、DependsOn 属性を使用することでリソースの作成の順番を指定できる。
よく使う組み込み関数
個人的によく使う組み込み関数を以下に記載します。
Ref
パラメータの値を参照するときに使用する。
使用例:
Value: !Ref SampleParameter
Fn::Sub
パラメータなどの値を文字列に埋め込んだりするときに使用する。
使用例:
Description: !Sub '${EnvironmentName} sample'
Name: !Sub
- www.${Domain}
- { Domain: !Ref RootDomainName }
Fn::GetAtt
同一テンプレート内で作成したリソースの値を参照したいときに使用する。
使用例:
securityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
~省略~
dbCluster:
Type: 'AWS::DocDB::DBCluster'
Properties:
~省略~
VpcSecurityGroupIds:
- !GetAtt securityGroup.GroupId
DependsOn: securityGroup
先に作成したセキュリティグループのグループIDをDBクラスターを作成するときに参照できる。
この時、DependsOn属性を付けておいたほうが安心。