AWS コマンドラインインターフェイス (AWS CLI) を使用して Amazon Route 53 でエイリアスリソースレコードセットを作成するにはどうすればよいですか?
簡単な説明
Route 53 のエイリアスレコードを使用して、AWS リソースまたは Amazon Simple Storage Service (Amazon S3) バケットをポイントできます。エイリアスレコードは、Route 53 コンソールまたは AWS CLI を通じて作成できます。
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
エイリアスリソースレコードセットを作成する前に、ドメインにトラフィックをルーティングするためのレコードを含むホストゾーンを作成します。ホストゾーンとドメインの名前は同じである必要があります。ユースケースに応じて、2 つの選択肢があります。インターネットトラフィックをルーティングするためのパブリックホストゾーンを作成できます。または、Amazon Virtual Private Cloud (Amazon VPC) 内でトラフィックをルーティングするためのプライベートホストゾーンを作成することもできます。
エイリアスリソースレコードセットを作成する
次のサンプル JSON 構文を変更して独自のエイリアスリソースレコードセットを作成し、エイリアスレコードに独自の値を指定します。ファイルを保存します (例: sample.json)。
警告: 設定では、ドメイン名ではなく、AWS リソースのホストゾーン ID を使用してください。JSON ファイルでは、この値はキーと値のペア HostedZoneId で指定されます。続行する前に、各リージョンの Elastic Load Balancing、AWS Elastic Beanstalk、Amazon S3、および Amazon CloudFront エンドポイントの HostedZoneId を確認します。
この例では、ロードバランサーのエンドポイント (ALB-xxxxxxxx.us-west-2.elb.amazonaws.com) をポイントするようにドメイン (elb.example.com) のエイリアスリソースレコードセットを作成します。リクエスト本文には、変更バッチと呼ばれる変更項目のリストが含まれます。変更項目は ChangeResourceRecordSetsRequest 要素とともに含まれています。
{
"Comment": "Creating Alias resource record sets in Route 53",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "elb.example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z1H1FL5HABSF5",
"DNSName": "ALB-xxxxxxxx.us-west-2.elb.amazonaws.com",
"EvaluateTargetHealth": false
}
}
}
]
}
次に、change-resource-record-sets コマンドを使用して、ホストゾーンでリソースレコードセットを作成します。レコード作成の値は、前に作成した JSON 設定ファイルで指定されます。
設定に合わせて次のコマンドを変更します。--hosted-zone-id には、ドメイン名のホストゾーン ID を指定します。
$ aws route53 change-resource-record-sets --hosted-zone-id ZXXXXXXXXXX --change-batch file://sample.json
Elastic Load Balancing の設定
ロードバランサーをポイントしている場合は、JSON ファイルの DNSName のキーと値のペアの値に dualstack を常に含めます。例えば、ロードバランサーの Amazon 指定 DNS 名が ALB-xxxxxxxx.us-west-2.elb.amazonaws.com の場合は、次を使用します。
"DNSName": "dualstack.ALB-xxxxxxxx.us-west-2.elb.amazonaws.com"
CloudFront ディストリビューションの設定
CloudFront ディストリビューションをポイントしている場合は、JSON ファイルの DNSName のキーと値のペアで Amazon 指定 CloudFront ディストリビューションのドメイン名を指定します。例えば、CloudFront ディストリビューションの Amazon 指定ドメイン名が d111111abcdef8.cloudfront.net の場合は、次を使用します。
"DNSName": "d111111abcdef8.cloudfront.net"
警告: CloudFront によって割り当てられたドメイン名の代わりに使用する代替ドメイン名を含める必要があります。代替ドメイン名は、エイリアスリソースレコードセットを作成したドメインと一致する必要があります。例えば、ドメイン example.com を使用して CloudFront ディストリビューションにアクセスする場合は、ドメインをディストリビューションの代替ドメイン名に追加します。
Amazon S3 バケットの設定
S3 バケットをポイントしている場合は、JSON ファイルの DNSName のキーと値のペア用に、バケットのウェブサイトエンドポイントのドメイン名を指定します。S3 マネジメントコンソールからホスティングしている静的ウェブサイトに表示される S3 エンドポイントを値に使用しないでください。リソースレコードセットを作成するドメイン名は、Amazon S3 バケットの名前と一致する必要があります。
また、バケットがホストされているリージョン (例: us-east-1) も指定する必要があります。
s3-website-us-east-1.amazonaws.com
S3 バケットをポイントするための JSON 構文の例を次に示します。
{
"Comment": "Alias record for S3 bucket",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "new.example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z3BJ6K6RIION7M",
"DNSName": "s3-website-us-west-2.amazonaws.com",
"EvaluateTargetHealth": false
}
}
}
]
}
注: CloudFront、Amazon S3、または ELB などの AWS リソースをポイントするエイリアスレコードの作成に加えて、エイリアスリソースレコードを作成することもできます。エイリアスリソースレコードは、エイリアスレコードを作成しようとしている同じホストゾーン内の別のレコードをポイントします。エイリアスレコードは、ルーティング先のレコードと同じタイプである必要があります。
関連情報
AWS CLI を使用して Amazon Route 53 のリソースレコードセットを作成するときのエラーをトラブルシューティングするにはどうすればよいですか?