

 适用于 .NET 的 Amazon SDK V3 已进入维护模式。

我们建议您迁移到 [适用于 .NET 的 Amazon SDK V4](https://docs.amazonaws.cn/sdk-for-net/v4/developer-guide/welcome.html)。有关如何迁移的更多详细信息和信息，请参阅我们的[维护模式公告](https://www.amazonaws.cn/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置 Amazon 区域
<a name="net-dg-region-selection"></a>

使用 Amazon 区域可以访问实际位于特定地理区域的 Amazon 服务。它可用于保证冗余，并保证您的数据和应用程序接近您和用户访问它们的位置。

要查看当前各 Amazon 服务所有支持的区域和端点列表，请参阅 *Amazon Web Services 一般参考* 中的区域和端点。要查看现有区域端点的列表，请参阅 [Amazon服务终端节点](https://docs.amazonaws.cn/general/latest/gr/rande.html)。要查看有关区域的详细信息，请参阅[指定您的账户可以使用哪些 Amazon 区域](https://docs.amazonaws.cn/accounts/latest/reference/manage-acct-regions.html)。

您可以创建转到[特定区域](#per-client)的 Amazon 服务客户端。您还可以为应用程序配置一个将用于[所有 Amazon 服务客户端](#globally)的区域。接下来将解释这两种情况。

## 创建具有特定区域的服务客户端
<a name="per-client"></a>

您可以为应用程序中的任何 Amazon 服务客户端指定区域。以此方式设置区域优先于该特定服务客户端的任何全局设置。

### 现有区域
<a name="w2aab9c21c11b5"></a>

此示例向您展示了如何在现有区域中实例化 [Amazon EC2 客户端](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/EC2/TEC2Client.html)。它使用已定义的 [RegionEndpoint](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Amazon/TRegionEndpoint.html) 字段。

```
using (AmazonEC2Client ec2Client = new AmazonEC2Client(RegionEndpoint.USWest2))
{
  // Make a request to EC2 in the us-west-2 Region using ec2Client
}
```

### 使用 RegionEndpoint 类的新区域
<a name="w2aab9c21c11b7"></a>

此示例向您展示了如何使用 [RegionEndpoint.GetBySystemName](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Amazon/MRegionEndpointGetBySystemNameString.html) 构造新的区域端点。

```
var newRegion = RegionEndpoint.GetBySystemName("us-west-new");
using (var ec2Client = new AmazonEC2Client(newRegion))
{
  // Make a request to EC2 in the new Region using ec2Client
}
```

### 使用服务客户端配置类的新区域
<a name="w2aab9c21c11b9"></a>

此示例向您展示如何使用服务客户端配置类的 `ServiceURL` 属性来指定区域；在本例中是使用 [AmazonEC2Config](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/EC2/TEC2Config.html) 类。

即使区域端点未遵循正规区域端点模式，此技术仍适用。

```
var ec2ClientConfig = new AmazonEC2Config
{
    // Specify the endpoint explicitly
    ServiceURL = "https://ec2.us-west-new.amazonaws.com"
};

using (var ec2Client = new AmazonEC2Client(ec2ClientConfig))
{
  // Make a request to EC2 in the new Region using ec2Client
}
```

## 为所有服务客户端指定区域
<a name="globally"></a>

您可以通过多种方式为应用程序创建的所有 Amazon 服务客户端指定区域。此区域用于不是通过特定区域创建的服务客户端。

适用于 .NET 的 Amazon SDK按以下顺序查找区域值。

### 配置文件
<a name="w2aab9c21c15b7"></a>

在您的应用程序或软件开发工具包已加载的配置文件中进行设置。有关更多信息，请参阅 [凭证和配置文件解析](creds-assign.md)。

### 环境变量
<a name="w2aab9c21c15b9"></a>

在 `AWS_REGION` 环境变量中设置。

在 Linux 或 macOS 上：

```
export AWS_REGION='us-west-2'
```

在 Windows 上：

```
set AWS_REGION=us-west-2
```

**注意**  
如果您为整个系统设置此环境变量（使用 `export` 或 `setx`），则它会影响所有 SDK 和工具包，而不仅仅是适用于 .NET 的 Amazon SDK。

### AWSConfigs 类
<a name="w2aab9c21c15c11"></a>

设置为 [AWSConfigs.AWSRegion](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) 属性。

```
AWSConfigs.AWSRegion = "us-west-2";
using (var ec2Client = new AmazonEC2Client())
{
  // Make request to Amazon EC2 in us-west-2 Region using ec2Client
}
```

## 区域解析
<a name="net-dg-region-resolution"></a>

如果没有使用上述方法来指定 Amazon Web Services 区域，则适用于 .NET 的 Amazon SDK会尝试查找 Amazon 服务客户端要运行的区域。

**区域解析顺序**

1. 应用程序配置文件，例如 `app.config` 和 `web.config`。

1. 环境变量（`AWS_REGION` 和 `AWS_DEFAULT_REGION`）。

1. 名称由 `AWSConfigs.AWSProfileName` 中的值指定的配置文件。

1. 名称由 `AWS_PROFILE` 环境变量指定的配置文件。

1. `[default]` 配置文件。

1. Amazon EC2 实例元数据（如果在 EC2 实例上运行）。

如果未找到区域，软件开发工具包会引发异常，指出 Amazon 服务客户端没有配置区域。

## 有关中国（北京）区域的特殊信息
<a name="net-dg-region-cn-north-1"></a>

要使用中国 (北京) 区域中的服务，您必须拥有特定于中国 (北京) 区域的账户和凭证。其他 Amazon 区域的账户和凭证不适用于中国（北京）区域。同样，中国（北京）区域的账户和凭证也不适用于其他 Amazon 区域。有关可在中国（北京）区域使用的端点和协议的信息，请参阅[中国（北京）区域端点](https://docs.amazonaws.cn/en_us/aws/latest/userguide/endpoints-Beijing.html)。

## 有关新 Amazon 服务的特殊信息
<a name="net-dg-region-new-services"></a>

新的 Amazon 服务会首先在少数几个区域中推出，然后在其它区域中支持。在这些情况下，您无需安装最新的软件开发工具包来访问该服务的新区域。您可以按各个客户端或者按全球来指定新添加的区域，如之前所示。