作成経緯
この続き。
参考サイトからcloudformationで作成している部分の要素をterraformに落とし込むため、確認を行う。
今回はCFログ保存用のs3を確認します。
この記事はそのメモやまとめです。
すでに設定済みの項目がいくつかある。
試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。
CloudFrontログ保存用s3
参考サイトのCloudformationでは以下のような記載になっている。
今回もひと要素づつ分解して見ていく。
(静的サイト用のs3と同じ部分もあるようなので同じ部分はスキップ。差分だけ見ます)
S3バケット CloudFrontのログ保存
# CloudFront log bucket
S3BucketLogs:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
UpdateReplacePolicy: Retain
Properties:
BucketName: !Sub ${ProjectName}-${Environment}-${S3BucketName}-cloudfrontlogs-${AWS::AccountId}
OwnershipControls:
Rules:
- ObjectOwnership: "ObjectWriter"
PublicAccessBlockConfiguration:
BlockPublicAcls: True
BlockPublicPolicy: True
IgnorePublicAcls: True
RestrictPublicBuckets: True
VersioningConfiguration:
Status: Enabled
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: "AES256"
BucketKeyEnabled: false
LifecycleConfiguration:
Rules:
- Id: AbortIncompleteMultipartUpload
AbortIncompleteMultipartUpload:
DaysAfterInitiation: 7
Status: "Enabled"
- Id: CurrentVersionExpiration
ExpirationInDays: 180
Status: "Enabled"
- Id: NoncurrentVersionExpiration
NoncurrentVersionExpiration:
NoncurrentDays: 30
Status: "Enabled"
DeletionPolicy
s3というよりかはcloudformation特有の要素のようです。
基本的にcloudformationを利用するとスタックが作成され、それとリソースが関連付けられており、
スタックが削除されるとそれに含まれるリソースも削除されます。
しかし、この要素でRetain
を指定しておくと、スタックは削除されるがそのリソースは削除されずに残るようです。
Delete
だとスタックが削除されるとリソースも一緒に消えます。
指定がなかった場合
DeletionPolicy 属性が設定されていない場合、AWS CloudFormation ではデフォルトでリソースが削除されます。
の動作を取るようです。
UpdateReplacePolicy
こちらもはcloudformation特有の要素のようです。
cloudformationでスタックに対する変更を行うとリソースは新しいリソースを置換するように動きます。
置換後に古いリソースを削除するかどうかの要素です。
この要素でRetain
を指定しておくと、スタック内のリソースは置換後リソースは削除されずに残るようです。
指定がなかった場合は
UpdateReplacePolicy を指定しない場合、CloudFormation はリソースを削除します。ただし、次の点を考慮する必要があります。
Amazon S3 バケットでは、削除を成功させるためにはバケットのすべてのオブジェクトを削除する必要があります。
の動作を取るようです。
LifecycleConfiguration
値がログ保存用ということで長めに取られているようです。
それ以外の差分は特にないのでここでは記載しません。
ハマったところとか
なぜcloudforntログ格納のバケットにだけDeletionPolicyが設定されているのが参考サイト上でも記載がなかったので不明でした。
ざっくりとリソースについて確認してきましたが一つのファイルに全部書かれると読みにくいですね……。
次にやること
- 必要なAWSのリソースをterraformで作成
- HUGOでHPをいい感じに編集する
- GitHub Actionsの設定
次はいよいよterraformの作成です。