

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

# AWS 区域 为 适用于 PHP 的 AWS SDK 版本 3 进行设置
<a name="aws-php-sdk-region-resolution"></a>

SDK 客户端会 AWS 服务 连接到您在创建客户端时指定的特定 AWS 区域 内容。此配置允许您的应用程序与该地理区域中的 AWS 资源进行交互。当您在未明确设置区域的情况下创建服务客户端时，SDK 将使用外部配置中的默认区域。

## 区域解析链
<a name="region-resolution-chain"></a>

 适用于 PHP 的 AWS SDK 版本 3 使用以下顺序来确定服务客户端使用哪个区域：

1. 代码中提供的区域 — 如果您在客户端构造函数选项中显式设置了区域，则该区域优先于所有其他来源。

   ```
   $s3Client = new Aws\S3\S3Client([
       'region' => 'us-west-2'
   ]);
   ```

1. 环境变量 — 如果代码中未提供区域，SDK 将按顺序检查以下环境变量：
   + `AWS_REGION`
   + `AWS_DEFAULT_REGION`

   ```
   # Example of setting Region through environment variables.
   export AWS_REGION=us-east-1
   ```

1. AWS 配置文件-如果未设置区域环境变量，SDK 将检查 AWS 配置文件：

   1. SDK 在 `~/.aws/config`（或 `AWS_CONFIG_FILE` 环境变量指定的位置）中查找

   1. SDK 在 `AWS_PROFILE` 环境变量指定的配置文件中检查区域设置

   1. 如果未指定 `AWS_PROFILE`，则 SDK 使用“default”配置文件

   例如，假设我们有以下配置文件设置：

   ```
   # Example ~/.aws/config file.
   [default]
   region = eu-west-1
   
   [profile production]
   region = eu-central-1
   ```

   如果将 `AWS_PROFILE` 环境变量的值设置为“production”，则客户端使用 `eu-central-1 Region`。如果不存在 `AWS_PROFILE` 环境变量，则客户端使用 `eu-west-1` 区域。

1. 如果 SDK 在上述任何来源中均未找到区域值，则会引发异常，因为区域值是服务客户端的一项必需设置。

## 最佳实践
<a name="region-resolution-best-practices"></a>

在 适用于 PHP 的 AWS SDK 版本 3 中使用区域时，请考虑以下最佳实践：

**在生产代码中显式设置区域**  
对于生产应用程序，我们建议在代码中显式设置区域，而不是依赖环境变量或 `config`。这使得您的代码更具可预测性，并且减少了对外部配置的依赖。

**在开发和测试环境中使用环境变量**  
对于开发和测试环境，使用环境变量可以提高灵活性，而无需更改代码。

**在多个环境中使用配置文件**  
如果您的应用程序需要在多个 AWS 环境中运行，请考虑在文件中使用不同的配置 AWS `config`文件并根据需要在它们之间切换。