この記事でできること
CloudFormation のテンプレートファイルを書いたことがない人、
書いて忘れた人が、CFN独特の記法を把握でき、
残りは大体読んでればわかる。というレベルになる
死ぬまでに必読シリーズ
目次
- この記事でできること
- テンプレート固有のメソッド
- Resources
- Parameters
- !Ref
- !GetAtt
- !Sub
- !ImportValue
- Outputs
- aws cloudformation deployパラメータ
- template-file
- stack-name
- parameter-overrides
キーワード
cloudformation,AWS CloudFormation,CFN,yaml,AWS
テンプレート固有のメソッド
Resources
以下のように書く
Resources: InferenceTestDynamoDBTable: Type: AWS::DynamoDB::Table
InferenceTestDynamoDBTableはスタック内での参照用の名前(外部テンプレートからの参照は難しい)
Type: AWS::DynamoDB::Tableといった形でデプロイするリソースを指定する。
Parameters
以下のように記載することで、
テンプレートファイルに引数で値を与えることができる
Parameters: Project: Type: String Description: <env>-app AllowOrigin: Type: String
!Ref
用途: リソースの基本的なプロパティ(ID、名前など)を取得する。
例: !Ref MyBucket はバケット名を取得します。
!GetAtt
用途: リソースの特定の属性(例: ARN、IP アドレスなど)を取得する。
例: !GetAtt MyBucket.Arn はバケットの ARN を取得します。
!Sub
用途: 文字列内に変数を埋め込む。
例: !Sub “${BucketPrefix}-my-bucket” は、変数 ${BucketPrefix} を埋め込んだ文字列を生成します。
!ImportValue
用途: 他のスタックでエクスポートされた値をインポートする。
例: !ImportValue ExportedBucketName は、別のスタックでエクスポートされたバケット名を取得します。
Outputs
以下のように記載する。
ImportValueで参照するのはExport配下の部分
Outputs: ApiOutputs1: Description: API Gateway ID Value: !Ref Api Export: Name: ApiGatewayId
aws cloudformation deploy
クラウドフォーメーションをデプロイする際のコマンド
template-file
はスタックが記載されたファイル
stack-name
はそれぞれのスタック名。テンプレートファイルにつき一つ
parameter-overrides
Project=$PROJECT のような形でスタックのパラメータを指定する aws cloudformation deploy \ --template-file cfn/cognito.yaml \ --stack-name $STACKNAME \ --parameter-overrides Project=$PROJECT
良いIaCライフを!