🙌
【Terraform】ACMの作成
はじめに
TerraformでACMを設定していきます。
aws_acm_certificate
- domain_name : string : ドメイン名
- validation_method : enum : DNS,EMAIL,NONE
- tags : object : タグ
- lifecycle : string : リソース操作の詳細制御を指定
- create_before_destroy : bool : 削除前に生成を行うかどうか(ELBで証明書を利用している場合、trueが推奨)
acm.tf
#------------------
#Certificate
#------------------
resource "aws_acm_certificate" "tokyo_cert" {
domain_name = "*.${var.domain}"
validation_method = "DNS"
tags = {
Name = "${var.project}-${var.environment}-wildcard-sslcert"
Project = var.project
Env = var.environment
}
lifecycle {
create_before_destroy = true
}
depends_on = [aws_route53_zone.route53_zone]
}
DNS検証
acm.tf
#------------------
#DNS検証
#------------------
resource "aws_route53_record" "route53_acm_dns_resolve" {
for_each = {
for dvo in aws_acm_certificate.tokyo_cert.domain_validation_options : dvo.domain_name => {
name = dvo.resource_record_name
type = dvo.resource_record_type
record = dvo.resource_record_value
}
}
allow_overwrite = true
zone_id = aws_route53_zone.route53_zone.id
name = each.value.name
type = each.value.type
ttl = 600
records = [each.value.record]
}
resource "aws_acm_certificate_validation" "cert_valid" {
certificate_arn = aws_acm_certificate.tokyo_cert.arn
validation_record_fqdns = [for record in aws_route53_record.route53_acm_dns_resolve : record.fqdn]
}
- applyしている途中にマネジメントコンソールにいき、CNAMEの設定が出ているか確認(ステータスは検証保留中)
- お名前.comの管理画面でDNS関連機能の設定>DNSレコード設定に反映
- マネジメントコンソールに戻り、ステータスが発行済みになっていればOK
複数リージョンに証明書を発行する
main.tf
provider "aws" {
profile = "udemy_terraform"
region = "ap-northeast-1"
}
###バージニアリージョン追加
provider "aws" {
alias = "virginia"
profile = "udemy_terraform"
region = "us-east-1"
}
acm.tf
###バージニアリージョン追加
resource "aws_acm_certificate" "virginia_cert" {
provider = aws.virginia
domain_name = "*.${var.domain}"
validation_method = "DNS"
tags = {
Name = "${var.project}-${var.environment}-wildcard-sslcert"
Project = var.project
Env = var.environment
}
lifecycle {
create_before_destroy = true
}
depends_on = [aws_route53_zone.route53_zone]
}
Discussion