

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

# API 提供者：使用 共用您的私有自訂網域名稱 AWS RAM
<a name="apigateway-private-custom-domains-provider-share"></a>

您可以在其他 AWS 帳戶 存取中為 API 取用者提供私有自訂網域名稱。在本節中，您將了解如何使用 共用私有自訂網域名稱， AWS RAM 以及如何控制對私有自訂網域名稱的存取。

## 共用私有自訂網域名稱的考量事項
<a name="apigateway-private-custom-domains-provider-share-considerations"></a>

下列考量可能會影響您使用 AWS RAM提供私有自訂網域名稱之存取權的方式。若要了解如何共用私有自訂網域名稱而不使用 AWS RAM，請參閱 [API 提供者：使用 API Gateway 共用您的私有自訂網域名稱 AWS CLI](apigateway-private-custom-domains-provider-share-cli.md)。
+ 私有自訂網域名稱會在 AWS 區域 層級共用。私有自訂網域名稱和 VPC 端點必須位於相同的 AWS 區域中。
+ 您可以與多個主體使用一個資源分享，並在建立資源分享後，為其新增更多主體。建議您盡可能重複使用資源分享。
+ 您始終需要授予 API 取用者的 VPC 端點存取權，才能調用您的私有自訂網域名稱，以及任何與其映射的私有 API。
+ 如果 API 取用者和 API 提供者位於使用 的相同組織中 AWS Organizations，則會自動接受資源共用。您仍然需要使用 AWS RAM建立資源分享。
+ 如果 API 取用者和 API 提供者位於使用 的相同組織中， AWS Organizations 且組織內的資源共用已啟用，則與您共用的組織中的任何主體都會自動獲得資源共用的存取權。不需要邀請函的，可以略過資源分享。
+ 如果 API 取用者在 **12 小時內**不接受資源分享，API 提供者必須再次分享資源。
+ 在您建立資源共享後， 會 AWS RAM 更新私有自訂網域名稱`managementPolicy`的 Amazon API Gateway Management 服務的 ，以防止在沒有明確存取的情況下`allow`存取主體。如需詳細資訊，請參閱《IAM 使用者指南》中的[判斷帳戶中的請求獲得允許或遭到拒絕。](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)

  更新的 `managementPolicy` 如下所示：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Id": "abcd1234-1234-abcd-abcd-1234abcdefg",
      "Statement": [
          {
              "Sid": "APIGatewayPrivateDomainNameManagementPolicyDefaultPermission-org",
              "Effect": "Allow",
              "Principal": "*",
              "Action": "apigateway:CreateAccessAssociation",
              "Resource": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
              "Condition": {
                  "StringEquals": {
                      "aws:PrincipalOrgID": "o-1234abcd"
                  },
                  "StringNotEquals": {
                      "aws:PrincipalAccount": "111122223333"
                  }
              }
          }
      ]
  }
  ```

------

  AWS RAM 已透過新增下列項目，防止主體沒有明確`allow`存取來建立與私有自訂網域名稱的存取關聯：

  ```
  "StringNotEquals": {
      "aws:PrincipalAccount": "111122223333"
  }
  ```

  您仍然可以在建立私有自訂網域名稱 AWS 帳戶 的 中使用主體來建立網域名稱存取關聯。

## 允許其他帳戶與您的私有自訂網域名稱建立網域名稱存取關聯
<a name="apigateway-private-custom-domains-provider-management-policy-update"></a>

首先，您將存取權授予另一個 ， AWS 帳戶 以建立與私有自訂網域名稱的網域名稱存取關聯。

------
#### [ AWS 管理主控台 ]

若要使用 AWS 管理主控台，請參閱*AWS RAM 《 使用者指南*》中的[在 中建立資源共享 AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-create.html)。

針對**選取資源類型**，選擇 **API Gateway 私有自訂網域**。

------
#### [ AWS CLI ]

下列 [create-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/create-resource-share.html) 會為您的私有自訂網域名稱建立資源分享。資源和委託人可能需要幾分鐘的時間才能完成關聯。對於主體，請提供帳戶 ID 或 Organizations ID，例如 `arn:aws:organizations::123456789012:organization/o-1234abcd`。您可以為資源分享提供多個主體。

```
aws ram create-resource-share \
    --region us-west-2 \
    --name privateCustomDomain-resource-share \
    --permission-arns arn:aws:ram::aws:permission/APIGatewayPrivateDomainNameManagementPolicyDefaultPermission \
    --resource-arns arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234 \
    --principals 222222222222
```

------

在您提供對另一個 的存取權之後 AWS 帳戶，該帳戶中的 API 取用者必須在其 VPC 端點與您的私有自訂網域名稱之間建立網域名稱存取關聯。您無法為其建立網域名稱存取關聯。如需詳細資訊，請參閱[為您的 VPC 端點與分享的私有自訂網域名稱建立關聯](apigateway-private-custom-domains-consumer-create.md#apigateway-private-custom-domains-consumer-associate)。

## 允許其他帳戶調用您的私有自訂網域名稱
<a name="apigateway-private-custom-domains-provider-policy-update"></a>

接下來，您會授予 API 取用者之 VPC 端點的存取權，以調用私有自訂網域名稱和任何與其映射的私有 API。

------
#### [ AWS 管理主控台 ]

**允許其他帳戶中的 VPC 端點調用您的私有自訂網域名稱**

1. 在以下網址登入 API Gateway 主控台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 在主要導覽窗格中，選擇**自訂網域名稱**。

1. 選擇您與其他 共用的私有自訂網域名稱 AWS 帳戶。

1. 在**資源政策**標籤上，選擇**編輯資源政策**。

1. 將 API 取用者的 VPC 端點 ID 新增至您的資源政策。

   您可以在私有自訂網域名稱的**網域詳細資訊**頁面上的**資源分享**標籤的**網域名稱存取關聯**區段中，找到 API 取用者的 VPC 端點 ID。

1. 選擇**儲存變更**。

------
#### [ AWS CLI ]

下列的 `execute-api` 服務 `policy`，允許從 VPC 端點 `{{vpce-abcd1234efg}}` 和 `{{vpce-xyz000abc}}` 二者傳入私有自訂網域名稱的流量。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": [
                    "{{vpce-abcd1234}}",
                    "{{vpce-xyzz0000}}"
                    ]
                }
            }
        }
    ]
}
```

下列 [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html) 命令使用修補程式作業來更新私有自訂網域名稱的 `policy`：

```
aws apigateway update-domain-name
    --domain-name private.example.com \
    --domain-name-id abcd1234 \
    --patch-operations op=replace,path=/policy,value='"{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Effect\": \"Allow\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"]},{\"Effect\": \"Deny\",\"Principal\": \"*\",\"Action\": \"execute-api:Invoke\",\"Resource\":[\"execute-api:/*\"],\"Condition\":{\"StringNotEquals\":[\"vpce-abcd1234efg\", \"vpce-xyz000abc\"]}}}]}"
```

------