

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

# 服務特定的端點
<a name="feature-ss-endpoints"></a>

**注意**  
如需了解設定頁面配置或解譯以下 **Support AWS SDKs和工具**資料表的說明，請參閱 [了解本指南的設定頁面](settings-reference.md#settingsPages)。

服務特定的端點組態提供選項，讓您針對 API 請求使用您選擇的端點，並讓該選擇持續存在。這些設定提供支援本機端點、VPC 端點和第三方本機 AWS 開發環境的彈性。不同的端點可用於測試和生產環境。您可以為個人 AWS 服務指定端點 URL。

使用下列項目設定此功能：

**`endpoint_url` - 共用 AWS `config`檔案設定`AWS_ENDPOINT_URL` - 環境變數`aws.endpointUrl` - JVM 系統屬性：僅限 Java/Kotlin**  
當直接在設定檔中或做為環境變數指定時，此設定會指定用於所有服務請求的端點。此端點會由任何已設定的服務特定端點覆寫。  
您也可以在共用 AWS `config`檔案的 `services`區段中使用此設定，為特定服務設定自訂端點。如需用於 `services` 區段中子區段的所有服務識別符索引鍵清單，請參閱 [服務特定端點的識別符](ss-endpoints-table.md)。  
**預設值**：`none`  
**有效值：**包含端點方案和主機的 URL。URL 可以選擇性地包含包含一或多個路徑區段的路徑元件。

**`AWS_ENDPOINT_URL_<SERVICE>` - 環境變數`aws.endpointUrl<ServiceName>` - JVM 系統屬性：僅限 Java/Kotlin**  
`AWS_ENDPOINT_URL_<SERVICE>`，其中 `<SERVICE>`是 AWS 服務 識別符， 會為特定服務設定自訂端點。如需所有服務特定環境變數的清單，請參閱 [服務特定端點的識別符](ss-endpoints-table.md)。  
此服務特定的端點會覆寫 中設定的任何全域端點`AWS_ENDPOINT_URL`。  
**預設值**：`none`  
**有效值：**包含端點方案和主機的 URL。URL 可以選擇性地包含包含一或多個路徑區段的路徑元件。

**`ignore_configured_endpoint_urls` - 共用 AWS `config`檔案設定`AWS_IGNORE_CONFIGURED_ENDPOINT_URLS` - 環境變數`aws.ignoreConfiguredEndpointUrls` - JVM 系統屬性：僅限 Java/Kotlin**  
此設定用於忽略所有自訂端點組態。  
請注意，無論此設定為何，都會使用程式碼中或服務用戶端本身上設定的任何明確端點。例如，包含具有 AWS CLI 命令的`--endpoint-url`命令列參數，或將端點 URL 傳遞至用戶端建構函式，一律會生效。  
**預設值**：`false`  
**有效值**：  
+ **`true`** – SDK 或工具不會從共用`config`檔案或環境變數讀取任何自訂組態選項，以設定端點 URL。
+ **`false`** – SDK 或工具使用共用`config`檔案或環境變數中的任何可用使用者提供的端點。

## 使用環境變數設定端點
<a name="ss-endpoints-envar"></a>

若要將所有服務的請求路由到自訂端點 URL，請設定`AWS_ENDPOINT_URL`全域環境變數。

```
export AWS_ENDPOINT_URL={{http://localhost:4567}}
```

若要將特定 的請求路由 AWS 服務 至自訂端點 URL，請使用 `AWS_ENDPOINT_URL_<SERVICE>`環境變數。 Amazon DynamoDB 具有 `serviceId`的 [https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/dynamodb/2012-08-10/service-2.json#L10](https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/dynamodb/2012-08-10/service-2.json#L10)。對於此服務，端點 URL 環境變數為 `AWS_ENDPOINT_URL_DYNAMODB`。此端點優先於`AWS_ENDPOINT_URL`針對此服務在 中設定的全域端點。

```
export AWS_ENDPOINT_URL_DYNAMODB={{http://localhost:5678}}
```

 另一個範例 AWS Elastic Beanstalk 是 `serviceId`的 [https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9](https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9)。 AWS 服務 識別符是以 API 模型的 為基礎`serviceId`，方法是將所有空格替換為底線和大寫所有字母。若要設定此服務的端點，對應的環境變數為 `AWS_ENDPOINT_URL_ELASTIC_BEANSTALK`。如需所有服務特定環境變數的清單，請參閱 [服務特定端點的識別符](ss-endpoints-table.md)。

```
export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK={{http://localhost:5567}}
```

## 使用共用`config`檔案設定端點
<a name="ss-endpoints-config"></a>

在共用`config`檔案中， `endpoint_url` 會在不同位置用於不同功能。
+ `endpoint_url` 會直接在 內指定 ，`profile`使該端點成為全域端點。
+ `endpoint_url` 巢狀在`services`區段中的服務識別符索引鍵下，可讓該端點僅適用於對該服務提出的請求。如需在共用 `config` 檔案中定義 `services` 區段的詳細資訊，請參閱 [組態檔案的格式](file-format.md#file-format-config)。

 下列範例使用 `services`定義來設定要用於 Amazon S3 的服務特定端點 URL，以及要用於所有其他服務的自訂全域端點：

```
[profile {{dev-s3-specific-and-global}}]
endpoint_url = {{http://localhost:1234}}
services = {{s3-specific}}

[services {{s3-specific}}]
s3 = 
  endpoint_url = {{https://play.min.io:9000}}
```

單一設定檔可以設定多個服務的端點。此範例說明如何在相同的設定檔中設定 Amazon S3 和 AWS Elastic Beanstalk 的服務特定端點 URLs。 AWS Elastic Beanstalk 具有 `serviceId`的 [https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9](https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9)。 AWS 服務 識別符是以 API 模型的 為基礎`serviceId`，方法是將所有空格替換為底線，並縮小所有字母大小寫。因此，服務識別符金鑰會變成 `elastic_beanstalk`，且此服務的設定會從第 行開始`elastic_beanstalk = `。如需要在 `services` 區段中使用的所有服務識別碼金鑰的清單，請參閱 [服務特定端點的識別符](ss-endpoints-table.md)。

```
[services {{testing-s3-and-eb}}]
s3 = 
  endpoint_url = {{http://localhost:4567}}
elastic_beanstalk = 
  endpoint_url = {{http://localhost:8000}}

[profile {{dev}}]
services = {{testing-s3-and-eb}}
```

服務組態區段可從多個設定檔使用。例如，兩個設定檔可以使用相同的`services`定義，同時變更其他設定檔屬性：

```
[services {{testing-s3}}]
s3 = 
  endpoint_url = {{https://localhost:4567}}

[profile {{testing-json}}]
output = json
services = {{testing-s3}}

[profile {{testing-text}}]
output = text
services = {{testing-s3}}
```

## 使用角色型登入資料在設定檔中設定端點
<a name="ss-endpoints-role"></a>

如果您的設定檔具有透過 `source_profile` 參數設定用於 IAM 假設角色功能，以角色為基礎的憑證，則 SDK 只會使用指定設定檔的服務組態。它不會使用與其連結的角色的設定檔。例如，使用下列共用 `config` 檔案：

```
[profile {{A}}]
credential_source = {{Ec2InstanceMetadata}}
endpoint_url = {{https://profile-a-endpoint.aws/}}

[profile {{B}}]
source_profile = {{A}}
role_arn = {{arn:aws:iam::123456789012:role/roleB}}
services = {{profileB}}

[services {{profileB}}]
ec2 = 
  endpoint_url = {{https://profile-b-ec2-endpoint.aws}}
```

 如果您使用設定檔 `B` 並在程式碼中呼叫 Amazon EC2，則端點會解析為 `https://profile-b-ec2-endpoint.aws`。如果您的程式碼向任何其他服務發出要求，端點解析將不會遵循任何自訂邏輯。端點未解析為設定檔 `A` 中定義的全域端點。若要讓全域端點對設定檔 `B` 生效，您需要直接在 `B` 設定檔中設定 `endpoint_url`。如需 `source_profile` 設定的詳細資訊，請參閱[擔任角色登入資料提供者](feature-assume-role-credentials.md)。

## 設定的優先順序
<a name="ss-endpoints-precedence"></a>

 此功能的設定可以同時使用，但每個服務只會優先使用一個值。對於對指定 進行的 API 呼叫 AWS 服務，以下順序用於選取值：

1. 程式碼中或服務用戶端本身上設定的任何明確設定，都優先於任何其他設定。
   + 對於 AWS CLI，這是`--endpoint-url`命令列參數提供的值。對於 SDK，明確指派可以採用您在執行個體化 AWS 服務 用戶端或組態物件時設定的參數形式。

1. 服務特定環境變數提供的值，例如 `AWS_ENDPOINT_URL_DYNAMODB`。

1. `AWS_ENDPOINT_URL` 全域端點環境變數所提供的值。

1. 由 `endpoint_url`設定所提供的值，巢狀在共用`config`檔案的 `services`區段中的服務識別符索引鍵下。

1. 直接在共用`config`檔案`profile`的 內指定的`endpoint_url`設定所提供的值。

1. 最後 AWS 服務 會使用個別 的任何預設端點 URL。

## 支援 AWS SDKs和工具
<a name="ss-endpoints-sdk-compat"></a>

下列 SDKs 支援本主題中所述的功能和設定。會記下任何部分例外狀況。 適用於 Java 的 AWS SDK 和 適用於 Kotlin 的 AWS SDK 僅支援任何 JVM 系統屬性設定。


| SDK | 支援 | 備註或更多資訊 | 
| --- | --- | --- | 
| [AWS CLI  ](https://docs.aws.amazon.com/cli/latest/userguide/) v2 | 是 |  | 
| [適用於 C\+\+ 的 SDK](https://docs.aws.amazon.com/sdk-for-cpp/latest/developer-guide/) | 是 |  | 
| [適用於 Go V2 的 SDK (1.x)](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/) | 是 |  | 
| [適用於 Go 的 SDK 1.x (V1)](https://docs.aws.amazon.com/sdk-for-go/latest/developer-guide/) | 否 |  | 
| [適用於 Java 的 SDK 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/) | 是 |  | 
| [適用於 Java 的 SDK 1.x](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/) | 否 |  | 
| [適用於 JavaScript 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/) | 是 |  | 
| [適用於 JavaScript 2.x 的 SDK](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/) | 否 |  | 
| [適用於 Kotlin 的 SDK](https://docs.aws.amazon.com/sdk-for-kotlin/latest/developer-guide/) | 是 |  | 
| [適用於 .NET 4.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/) | 是 |  | 
| [適用於 .NET 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/) | 是 |  | 
| [適用於 PHP 的 SDK 3.x](https://docs.aws.amazon.com/sdk-for-php/latest/developer-guide/) | 是 |  | 
| [適用於 Python 的 SDK (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) | 是 |  | 
| [適用於 Ruby 的 SDK 3.x](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/) | 是 |  | 
| [適用於 Rust 的 SDK](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/) | 是 |  | 
| [適用於 Swift 的 SDK](https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/) | 是 |  | 
| [PowerShell V5 的工具](https://docs.aws.amazon.com/powershell/latest/userguide/) | 是 |  | 
| [PowerShell V4 的工具](https://docs.aws.amazon.com/powershell/v4/userguide/) | 是 |  | 