如何使用 AWS CLI 在 Route 53 中建立別名資源記錄集?

2 分的閱讀內容
0

如何使用 AWS Command Line Interface (AWS CLI) 在 Amazon Route 53 中建立別名資源記錄集?

簡短描述

您可以在 Route 53 中使用別名記錄來指向 AWS 資源或 Amazon Simple Storage Service (Amazon S3) 儲存貯體。您可以透過 Route 53 主控台建立別名記錄,或透過 AWS CLI。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新的 AWS CLI 版本

在建立別名資源記錄集之前,請建立託管區域,以包含將流量路由至您網域的記錄。託管區域和您的網域必須具備相同名稱。根據您的使用案例,有兩種選擇。您可以建立用於路由網際網路流量的公有託管區域。或者,您也可以建立用於在 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
        }
      }
    }
  ]
}

**注意:**除了建立指向 AWS 資源 (例如 CloudFront、Amazon S3 或 ELB) 的別名記錄之外,您還可以建立別名資源記錄。該別名資源記錄指向您正在其中建立別名記錄的相同託管區域中的另一個記錄。別名記錄必須與您要路由到的記錄具備相同的類型。


相關資訊

如何對使用 AWS CLI 建立 Amazon Route 53 資源記錄集時發生的錯誤進行疑難排解?

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