Closed9
terraformでcloudfront+s3をhttps化する
つまりACMを使ってcloudfront+s3の構成を作る、それをterraformでやるということですね
ACMはdataで進めたいと思います。
手順
- 持ってきたドメインのホストゾーン作成
- ACMで証明書発行
- cloudfrontの場合
米国東部 (バージニア北部) (us-east-1)
を使う
- cloudfrontの場合
証明書発行手順は以下と同じ
terraform化
で思ったことがあり、ACMで発行した証明書はバージニアリージョンにあるのだが、それ以外のリソースは東京リージョンにデプロイしたい。
局所的にリージョンを変えられる?terraformくん?
リソースに応じてproviderを変更する、aliasを使えばいいらしい
aliasを使う
無事うまくいった
provider "aws" {
alias = "virginia"
region = "us-east-1"
}
data "aws_acm_certificate" "acm" {
provider = aws.virginia
domain = "example.com"
}
代替ドメインの設定
これをしないとRoute53のAレコードを作成出来ません。
CNAME(代替レコード)が設定出来ず、cloudfrontデフォルトのドメインと証明書のドメインを紐付けられないためです
resource "aws_cloudfront_distribution" "hugo_cfront" {
enabled = true
aliases = ["${data.aws_acm_certificate.acm.domain}"] ##########
証明書指定
証明書の指定、プロトコルの指定などをします
resource "aws_cloudfront_distribution" "hugo_cfront" {
// 略
viewer_certificate {
cloudfront_default_certificate = false
acm_certificate_arn = data.aws_acm_certificate.acm.arn
ssl_support_method = "sni-only"
minimum_protocol_version = "TLSv1"
}
あとはcloudfrontへのAレコードを追加すればOK
選択肢が出ない場合、代替ドメインの設定が出来ていない可能性があります。
このスクラップは2023/06/20にクローズされました