TerraformでCloudFrontの継続的デプロイを試すためのサンプルです。
このサンプルを実行すると下図の環境を作成できます。
- Terraform 1.7+
- Terraform AWS Provider 5.12.0+
Terraformではプライマリディストリビューションの作成とステージングディストリビューションとのリンクを同時に行えない制限があります。
同時に行おうとすると以下のエラーとなります。
Error: creating CloudFront Distribution: InvalidArgument: Continuous deployment policy is not supported during distribution creation.
このため2回に分けて処理を行う必要があります。
最初に./main.tfの設定をlink_deployment_policy = falseにしておきます。
# main.tf
module "cloudfront" {
// snip...
link_deployment_policy = false
}その上でterraform initからterraform applyまで行います。
terraform init
terraform plan
terraform applyこれでステージングディストリビューションとのリンク以外のリソースが作成されます。
次に./main.tfの設定をlink_deployment_policy = trueに変更します。
# main.tf
module "cloudfront" {
// snip...
link_deployment_policy = true
}もう一度terraform applyを実行します。
terraform plan
terraform applyこれでステージングディストリビューションとのリンクが行われすべての作業が完了です。
オリジンS3バケットの/v1/配下にコンテンツを保存するとプライマリディストリビューションからアクセスできます。
/v2/配下にコンテンツを保存するとステージングディストリビューションからアクセスできます。
curl https://<primary>.cloudfront.net/aws-cf-cd-sampleヘッダを付けてプライマリディストリビューションへアクセスします。
curl -H 'aws-cf-cd-sample:true' https://<primary>.cloudfront.net/オリジンS3にコンテンツが残っている場合は事前にすべて削除しておきます。
そのうえでterraform destroyしてください。
terraform destroy- CNAMEの設定はしていません
- ログ出力の設定はしていません
- キャッシュ設定はしていません (
CachingDisabledを使う様にしています)
