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
を使う様にしています)