異なるアカウントにACM証明書登録ハンズオン

はじめに

ALBのTLSクライアント認証(mTLS)を構築する際、レコード自体は別のアカウントで管理しているため、ACMの証明書及びALBのDNS名を異なるアカウントに登録したので、そちらの手順について記載する。

ALBのDNSについては、ACMのレコード登録手順と、ほぼ同様のためスコープ外とする。
※ ALBの登録レコードが、Aレコードのエイリアス(またはCNAMEレコード)で設定値が異なる。

概要図


※赤枠部分はALB部分の構築のため本ブログのスコープ外

手順

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が作成されてることを確認

さいごに

実際にやってみれば「そりゃできるよな」と思いましたが、問題なく登録できてよかったです。

Last modified: 2024-02-18

Author