Cfnについて
変更セットは構文のチェックなどを行うものではなく、変更した箇所のまとめを表示してくれるもの
スタックを削除すると、リソースも消える
CfnからConfigのルールを追加するにあたり、StackSetsのテンプレートにルール追加があるので、それを参考にすると良いかも
Metadata:
AWS::CloudFormation::Interface:
上記テンプレートは画面に表示される情報。
→ParameterLabels画面に表示される名前
Parametersを定義するとスタックを作成または更新するたびにテンプレートにカスタム値を入力できます。
Conditions
Conditions:
HasAllowedDays: !Not
- !Equals
- !Ref AllowedDays
- ""
!Equalsを判定して、!NotだったらTrueを返す
つまり、下記設定をRuleの中に入れることにより、定期的に実行できるようになる。これにFindMapのFrequencyMapを設定する
MaximumExecutionFrequency
AWS Config がルールの評価を実行する最大頻度。
これは、HasAllowedDaysがTrueならAllowed Daysを参照。FalseならNoValueとする
InputParameters:
AllowedDays: !If
- HasAllowedDays
- !Ref AllowedDays
- !Ref AWS::NoValue
NoValueについては↓を参照
これは、HasAllowedDaysがTrueならAllowed Daysを参照。FalseならNoValueとする
InputParameters:
AllowedDays: !If
- HasAllowedDays
- !Ref AllowedDays
- !Ref AWS::NoValue
NoValueについては↓を参照
ドリフトについて
Configで試そうかと思ったけど、Configは対象外だった
既存リソースがからスタック作成する、もしくは既存スタックに既存リソースを追加する場合のドリフト表示がうまく行かない。
S3にタグなし、テンプレートにはタグ有り。にしてしまうとS3にタグが入ってしまうことがわかった。
の”AWS CloudFormation コンソールを使用した既存のリソースのスタックへのインポート”の9で差分を出したい
このテンプレートに対して既存のS3でスタックを作ってみた。既存のS3では暗号化は無効。タグは無し。
AWSTemplateFormatVersion: 2010-09-09
Description: Import test
Resources:
ImportedBucket:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
Properties:
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
Tags:
- Key: "keyname1"
Value: "value1"
暗号化部分でドリフト検知、Tagは既存S3にタグが登録されて終わり
つまり、既存リソースでドリフトを検出するためにはチェック死体項目について明確に書く必要がある。特に、必須ではない
ものは書かないとドリフトとして検出されない。
Cfnのテンプレート
テンプレート一つで、環境毎にパラメータを変える方法。
CloudFormationでSecurityGroupの自己参照をやろうとすると、SecurityGroupだけではうまく行かない。なのでSecurityGroupとSecurityGroupIngressに分割してあげると良い