如何使用 AWS CLI 在 Route 53 中创建别名资源记录集?

2 分钟阅读
0

如何使用 AWS 命令行界面(AWS CLI)在 Amazon Route 53 中创建别名资源记录集?

简短描述

您可以在 Route 53 中使用别名记录指向 AWS 资源或 Amazon Simple Storage Service(Amazon S3)桶。您可以通过 Route 53 控制台创建别名记录或者通过 AWS CLI 创建。

解决方法

**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

在创建别名资源记录集之前,请创建一个托管区,以储存将流量路由到域的记录。托管区和您的域名必须相同。根据您的使用场景,有两种选择。您可以创建用于路由 Internet 流量的公有托管区。或者,您也可以创建一个私有托管区,用于在 Amazon Virtual Private Cloud(Amazon VPC)内路由流量。

创建别名资源记录集

修改以下示例 JSON 语法以创建自己的别名资源记录集,然后指定自己的别名记录值。保存该文件(例如,sample.json)。

**警告:**请确保在配置中使用 AWS 资源的托管区 ID 而不是域名。在 JSON 文件中,该值在键值对 HostedZoneId 中指定。在继续操作之前,找到每个区域的 Elastic Load BalancingAWS Elastic BeanstalkAmazon S3Amazon CloudFront 端点的 HostedZoneId

此示例为域(elb.example.com)创建别名资源记录集,以指向负载均衡器端点(ALB-xxxxxxxx.us-west-2.elb.amazonaws.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 资源记录集时出现的错误?

AWS 官方
AWS 官方已更新 2 年前