在 API Gateway 中設定區域性自訂網域名稱 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 API Gateway 中設定區域性自訂網域名稱

您可以為 AWS 區域 API 端點 (針對區域) 建立自訂網域名稱。若要建立自訂網域名稱,您必須提供具有區域限制的 ACM 憑證。如需建立或上傳自訂網域名稱憑證的詳細資訊,請參閱「在 中備妥憑證 AWS Certificate Manager」。

重要

針對 API Gateway 區域自訂網域名稱,您必須在與 API 相同的區域中請求或匯入憑證。

當您使用 ACM 憑證建立 (或遷移) 區域性自訂網域名稱,API Gateway 會在您的帳戶中建立服務連結角色 (如果該角色尚不存在)。需要此服務連結角色,才能將您的 ACM 憑證附加至您的區域性端點。角色已命名,AWSServiceRoleForAPIGateway並且會附加 API GatewayServiceRolePolicy 管理政策。如需使用服務連結角色的詳細資訊,請參閱使用服務連結角色

重要

您必須建立 DNS 記錄,將自訂網域名稱指向區域性網域名稱。如此可讓繫結至自訂網域名稱的流量路由至 API 的區域性主機名稱。DNS 記錄可以是 CNAME 或 "A" 類型。

使用 API Gateway 主控台設定具有 ACM 憑證的區域性自訂網域名稱

若要使用 API Gateway 主控台來設定區域性自訂網域名稱,請使用下列程序。

使用 API Gateway 主控台設定區域性自訂網域名稱
  1. 在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway

  2. 從主要導覽窗格中,選擇 Custom Domain Names (自訂網域名稱)

  3. 選擇 Create (建立)。

  4. Domain name (網域名稱) 中,輸入網域名稱。

  5. 在 Configuration (組態) 下方,選擇 Regional (區域性)

  6. 選擇最低版本的 TLS。

  7. 選擇 ACM 憑證。憑證必須與 API 位於相同的區域。

  8. 選擇 Create (建立)。

  9. 遵循設定 Route 53 以將流量路由到 API Gateway 上的 Route 53 文件。

下列程序會設定 API 對應,以將自訂網域名稱的路徑對應至 API 階段。

若要使用 API Gateway 主控台建立 API 對應
  1. 在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway

  2. 選擇自訂網域名稱。

  3. 選擇 Configure API mappings (設定 API 對應)

  4. 選擇 Add new mapping (新增對應)

  5. 指定對應的 APIStage (階段)Path (路徑)

  6. 選擇 Save (儲存)。

若要了解如何設定自訂網域的基礎路徑對應,請參閱 使用自訂網域名稱作為其主機名稱來設定 API 的基本路徑對應

使用 ACM 憑證設定地區自訂網域名稱 AWS CLI

若要使用 AWS CLI 為地區 API 設定自訂網域名稱,請使用下列程序。

  1. 呼叫 create-domain-name,並指定自訂網域名稱與區域性憑證的 ARN。

    aws apigatewayv2 create-domain-name \ --domain-name 'regional.example.com' \ --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678

    請注意,指定的憑證是來自 us-west-2 區域,在此範例中,我們假設基礎 API 是來自相同的區域。

    如果成功,呼叫會傳回類似如下的結果:

    { "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "regional.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-id.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/id", "DomainNameStatus": "AVAILABLE", "EndpointType": "REGIONAL", "HostedZoneId": "id", "SecurityPolicy": "TLS_1_2" } ] }

    DomainNameConfigurations 屬性值會傳回區域性 API 的主機名稱。您必須建立 DNS 記錄,將您的自訂網域名稱指向此區域性網域名稱。如此可讓繫結至自訂網域名稱的流量路由至此區域性 API 的主機名稱。

  2. 建立 DNS 記錄,將自訂網域名稱與區域性網域名稱相關聯。如此可讓繫結至自訂網域名稱的請求路由至 API 的區域性主機名稱。

  3. 新增基底路徑對應,以根據指定的自訂網域名稱 (如 0qzs2sy7bh) 在部署階段 (如 test) 中公開指定的 API (例如 regional.example.com)。

    aws apigatewayv2 create-api-mapping \ --domain-name 'regional.example.com' \ --api-mapping-key 'myApi' \ --api-id 0qzs2sy7bh \ --stage 'test'

    因此,使用階段中所部署 API 之自訂網域名稱的基底 URL 會變成 https://regional.example.com/myAPI

  4. 請設定 DNS 記錄,將區域性自訂網域名稱對應到其指定託管區域 ID 的主機名稱。首先建立 JSON 檔案,其中包含用來設定區域性網域名稱 DNS 記錄的組態。下列範例說明如何建立 DNS A 記錄,以將區域性自訂網域名稱 (regional.example.com) 對應至建立自訂網域名稱時所佈建的區域性主機名稱 (d-numh1z56v6.execute-api.us-west-2.amazonaws.com)。DNSNameHostedZoneIdAliasTarget 屬性可分別接受自訂網域名稱的 regionalDomainNameregionalHostedZoneId 值。您也可以在 Amazon API Gateway 端點和配額中取得區域性 Route 53 託管區域 ID。

    { "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "regional.example.com", "Type": "A", "AliasTarget": { "DNSName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com", "HostedZoneId": "Z2OJLYMUO9EFXC", "EvaluateTargetHealth": false } } } ] }
  5. 執行以下 CLI 命令:

    aws route53 change-resource-record-sets \ --hosted-zone-id {your-hosted-zone-id} \ --change-batch file://path/to/your/setup-dns-record.json

    其中 {your-hosted-zone-id} 是您帳戶中設定之 DNS 記錄的路由 53 託管區域識別碼。change-batch參數值指向文件夾中的 JSON 文件(setup-dns-record.json)(路徑/到您的)。