はじめに
ALBのTLSクライアント認証(mTLS)を構築する際、レコード自体は別のアカウントで管理しているため、ACMの証明書及びALBのDNS名を異なるアカウントに登録したので、そちらの手順について記載する。
ALBのDNSについては、ACMのレコード登録手順と、ほぼ同様のためスコープ外とする。
※ ALBの登録レコードが、Aレコードのエイリアス(またはCNAMEレコード)で設定値が異なる。
概要図
手順
1.【Aアカウント】でACM作成
【Bアカウント】のRoute53に登録する、レコード名(XXXXX)と値(YYYYY)を取得する
export REGION=ap-northeast-1
export ACCOUNT_ID=<アカウントID>
export CERTIFICATE_ARN=$(aws acm request-certificate --domain-name inamura.test.cloud5.jp --validation-method DNS --query CertificateArn --output text --region $REGION)
#登録レコード名・値取得
aws acm describe-certificate --certificate-arn $CERTIFICATE_ARN --query 'Certificate.DomainValidationOptions[0].ResourceRecord' --output text --region $REGION
XXXXX CNAME YYYYY
_403866a00f433c4dd24517afa8f3c07d.inamura.test.cloud5.jp. CNAME _b56e49e4f95e8d8f7ba00593bdb0bde1.mhbtsbpdnt.acm-validations.aws.
2.【Bアカウント】のRoute53にレコード登録
export DOMAIN_NAME=<ホストゾーン名>
export ACM_CNAME=XXXXX
export ACM_VALUE=YYYYY
#ホストゾーンのID取得
HOSTED_ZONE_ID=$(aws route53 list-hosted-zones-by-name \
--dns-name $DOMAIN_NAME \
--query 'HostedZones[0].Id' \
--output text)
# Route 53にレコードを追加するコマンド
aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --change-batch '{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "'"$ACM_CNAME"'",
"Type": "CNAME",
"TTL": 300,
"ResourceRecords": [
{
"Value": "'"$ACM_VALUE"'"
}
]
}
}
]
}'
挙動確認
登録後数分経過後、【Aアカウント】でACMが作成されてることを確認
さいごに
実際にやってみれば「そりゃできるよな」と思いましたが、問題なく登録できてよかったです。