

适用于 JavaScript 的 AWS SDK v2 已终止支持。建议您迁移到 [适用于 JavaScript 的 AWS SDK v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)。有关更多详情和如何迁移的信息，请参阅本[公告](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

# 使用全局配置对象
<a name="global-config-object"></a>

可通过两种方式配置开发工具包：
+ 使用 `AWS.Config` 设置全局配置。
+ 将额外的配置信息传递给服务对象。

使用 `AWS.Config` 设置全局配置通常更容易上手，但服务级别的配置可以提供对单个服务的更多控制。由 `AWS.Config` 指定的全局配置为您随后创建的服务对象提供默认设置，从而简化其配置。但是，当您的需求与全局配置不同时，您可以更新各个服务对象的配置。

## 设置全局配置
<a name="setting-global-configuration"></a>

在代码中加载 `aws-sdk` 程序包后，您可以使用 ` AWS` 全局变量来访问开发工具包的类并与各个服务进行交互。开发工具包中包含一个全局配置对象 `AWS.Config`，您可以利用它来指定您的应用程序所需的开发工具包配置设置。

根据您的应用程序的需求设置 `AWS.Config` 属性，对开发工具包进行配置。下表总结了常用于设置开发工具包配置的 `AWS.Config` 属性。


****  

| 配置选项 | 说明 | 
| --- | --- | 
|  credentials  | 必填？ 指定用于确定服务和资源访问权限的凭证。 | 
|  region  | ：必填项。指定执行服务请求的区域。 | 
|  maxRetries  | 可选。指定给定请求的最大重试次数。 | 
|  logger  | 可选。指定要将调试信息写入的记录器对象。 | 
|  update  | 可选。使用新值更新当前配置。 | 

有关配置对象的更多信息，请参阅 API 参考中的 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html)。

### 全局配置示例
<a name="global-configuration-examples"></a>

您必须在 `AWS.Config` 中设置区域和凭证。您可以将这些属性设置为 `AWS.Config` 构造函数的一部分，如以下浏览器脚本示例所示：

```
var myCredentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:'IDENTITY_POOL_ID'});
var myConfig = new AWS.Config({
  credentials: myCredentials, region: 'us-west-2'
});
```

您还可以在使用 `AWS.Config` 方法创建 `update` 后设置这些属性，如用于更新区域的以下示例所示：

```
myConfig = new AWS.Config();
myConfig.update({region: 'us-east-1'});
```

您可以通过调用 ` getCredentials` 的静态 `AWS.config` 方法来获取默认的凭证：

```
var AWS = require("aws-sdk");

AWS.config.getCredentials(function(err) {
  if (err) console.log(err.stack);
  // credentials not loaded
  else {
    console.log("Access key:", AWS.config.credentials.accessKeyId);
  }
});
```

同样，如果您已在 `config` 文件中正确设置了区域，您可以通过将 `AWS_SDK_LOAD_CONFIG` 环境变量设置为任何值并调用 `AWS.config` 的静态 `region` 属性来获取该值：

```
var AWS = require("aws-sdk");

console.log("Region: ", AWS.config.region);
```

## 设置每个服务的配置
<a name="service-specific-configuration"></a>

您在 SDK for JavaScript 中使用的每个服务都是通过服务对象访问的，该服务对象是该服务的 API 的一部分。例如，要访问 Amazon S3 服务，您需要创建 Amazon S3 服务对象。您可以将特定于某项服务的配置设置指定为该服务对象的构造函数的一部分。在服务对象上设置配置值时，构造函数将采用 `AWS.Config` 使用的所有配置值，包括凭证。

例如，如果需要访问多个区域中的 Amazon EC2 对象，请为每个区域创建一个 Amazon EC2 服务对象，然后相应地设置每个服务对象的区域配置。

```
var ec2_regionA = new AWS.EC2({region: 'ap-southeast-2', maxRetries: 15, apiVersion: '2014-10-01'});
var ec2_regionB = new AWS.EC2({region: 'us-east-1', maxRetries: 15, apiVersion: '2014-10-01'});
```

在使用 `AWS.Config` 配置开发工具包时，您还可以设置特定于服务的配置值。全局配置对象支持许多特定于服务的配置选项。有关特定于服务的配置的更多信息，请参阅 适用于 JavaScript 的 AWS SDK API 参考中的 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html)。

## 不可变的配置数据
<a name="immutable-config"></a>

全局配置更改适用于所有新创建的服务对象的请求。新创建的服务对象首先使用当前的全局配置数据进行配置，然后使用任何本地配置选项进行配置。您对全局 `AWS.config` 对象所做的更新不适用于以前创建的服务对象。

必须使用新配置数据手动更新现有服务对象，或者必须创建和使用具有新配置数据的新服务对象。以下示例使用新配置数据创建一个新的 Amazon S3 服务对象：

```
s3 = new AWS.S3(s3.config);
```