

的版本 4 (V4) 适用于 .NET 的 AWS SDK 已经发布！

有关重大更改和迁移应用程序的信息，请参阅[迁移主题](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# 适用于 .NET 的 AWS SDK 项目的高级配置
<a name="net-dg-advanced-config"></a>

本部分中的主题包含有关您可能感兴趣的其它配置任务和方法的信息。

**Topics**
+ [AWSSDK. 扩展。 NETCore.Setup 和 IConfiguration](net-dg-config-netcore.md)
+ [配置其他应用程序参数](net-dg-config-other.md)
+ [的配置文件参考 适用于 .NET 的 AWS SDK](net-dg-config-ref.md)

# 使用 AWSSDK .Extions。 NETCore.Setup 和界面 IConfiguration
<a name="net-dg-config-netcore"></a>

（本主题之前的标题是 “ 适用于 .NET 的 AWS SDK 使用.NET 核心配置”）

.NET Core 中最大的改变之一是删除了以前在 .NET Framework 和 ASP.NET 应用程序中使用的 `ConfigurationManager` 以及标准 `app.config` 和 `web.config` 文件。

.NET Core 中的配置基于配置提供商建立的键/值对。配置提供商将配置数据从各种配置源读取为键/值对，包括命令行参数、目录文件、环境变量和设置文件。

**注意**  
有关更多信息，请参阅 [ASP.NET Core 中的配置](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration)。

为了便于在.NET Core 中 适用于 .NET 的 AWS SDK 使用，你可以使用.E [AWSSDKxtensions。 NETCore.安装](https://www.nuget.org/packages/AWSSDK.Extensions.NETCore.Setup/) NuGet 包。与许多.NET Core 库一样，它向`IConfiguration`接口添加了扩展方法，以实现无缝 AWS 配置。

该软件包的源代码 GitHub 位于[https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.NETCore.Setup)。

## 使用 AWSSDK .Extions。 NETCore.Setup
<a name="net-core-configuration-builder"></a>

假设你创建了一个 ASP.NET Core Model-View-Controller (MVC) 应用程序，可以使用 Visual Studio 中的 **ASP.NET Core Web 应用程序**模板或在.NET Core CLI `dotnet new mvc ...` 中运行来完成。创建此类应用程序时，`Startup.cs` 的构造函数通过从配置提供商读取各种输入源来处理配置，例如读取 `appsettings.json`。

```
public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}
```

要使用`Configuration`对象获取*AWS*选项，请先添加`AWSSDK.Extensions.NETCore.Setup` NuGet 软件包。然后，将选项添加到下面所述的配置文件中。

请注意，添加到您项目中的其中一个文件是 `appsettings.Development.json`。这就代表 `EnvironmentName` 设置为 **Development**。在开发过程中，将配置放入此文件中，该文件只能在本地测试期间读取。当您部署已`EnvironmentName`设置为**生产**的 Amazon EC2 实例时，该文件将被忽略，并回退到为 Amazon EC2 实例配置的 IAM 证书和区域。 适用于 .NET 的 AWS SDK 

以下配置设置显示您可以添加到您项目的 `appsettings.Development.json` 文件中用于提供 AWS 设置的值的示例。

```
{
  "AWS": {
    "Profile": "local-test-profile",
    "Region": "us-west-2"
  },
  "SupportEmail": "TechSupport@example.com"
}
```

要访问 *CSHTML* 文件中的设置，请使用 `Configuration` 指令：

```
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1>Contact</h1>

<p>
    <strong>Support:</strong> <a href='mailto:@Configuration["SupportEmail"]'>@Configuration["SupportEmail"]</a><br />
</p>
```

要从代码访问文件中设置的 AWS 选项，请调用添加到的`GetAWSOptions`扩展方法`IConfiguration`。

要从这些选项构造服务客户端，请调用 `CreateServiceClient`。以下示例代码说明了如何创建 Amazon S3 服务客户端。（请务必将 [AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3) NuGet 包添加到您的项目中。）

```
var options = Configuration.GetAWSOptions();
IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();
```

您还可以使用 `appsettings.Development.json` 文件中的多个条目创建具有不兼容设置的多个服务客户端，如以下示例所示，其中 `service1` 的配置包括 `us-west-2` 区域，`service2` 的配置包括特殊端点 *URL*。

```
{
  "service1": {
    "Profile": "default",
    "Region": "us-west-2"
  },
  "service2": {
    "Profile": "default",
    "ServiceURL": "URL"
  }
}
```

然后，您可以使用 JSON 文件中的条目获取特定服务的选项。例如，要获取 `service1` 的设置，请使用以下项目。

```
var options = Configuration.GetAWSOptions("service1");
```

### appsettings 文件中允许的值
<a name="net-core-appsettings-values"></a>

以下应用程序配置值可以在 `appsettings.Development.json` 文件中设置。字段名必须使用所示的大小写。有关这些设置的详细信息，请参阅 `[AWS.Runtime.ClientConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html)` 类。
+ Region
+ 配置文件
+ ProfilesLocation
+ SignatureVersion
+ RegionEndpoint
+ UseHttp
+ ServiceURL
+ AuthenticationRegion
+ AuthenticationServiceName
+ MaxErrorRetry
+ LogResponse
+ BufferSize
+ ProgressUpdateInterval
+ ResignRetries
+ AllowAutoRedirect
+ LogMetrics
+ DisableLogging
+ UseDualstackEndpoint

## ASP.NET Core 依赖关系注入
<a name="net-core-dependency-injection"></a>

*AWSSDK.Extensions NETCore.Setup* NuGet 包还与 ASP.NET Core 中的新依赖注入系统集成。应用程序的 `Startup` 类中的 `ConfigureServices` 方法是添加 MVC 服务的位置。如果应用程序正在使用实体框架，则这也是进行初始化的位置。

```
public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();
}
```

**注意**  
有关 .NET Core 中依赖关系注入的背景信息在 [.NET Core 文档网站](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection)上提供。

该`AWSSDK.Extensions.NETCore.Setup` NuGet 软件包添加了新的扩展方法`IServiceCollection`，您可以使用这些方法向依赖注入中添加 AWS 服务。以下代码向您展示了如何添加从中读取的 AWS 选项，`IConfiguration`以便将 Amazon S3 和 DynamoDB 添加到服务列表中。（请务必将 [AWSSDK.S3 和AWSSDK.](https://www.nuget.org/packages/AWSSDK.S3) [Dynamo DBv2](https://www.nuget.org/packages/AWSSDK.DynamoDBv2) NuGet 包添加到您的项目中。）

```
public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();

    services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
    services.AddAWSService<IAmazonS3>();
    services.AddAWSService<IAmazonDynamoDB>();
}
```

现在，如果您的 MVC 控制器使用 `IAmazonS3` 或 `IAmazonDynamoDB` 作为其构造函数中的参数，则依赖关系注入系统会传入这些服务。

```
public class HomeController : Controller
{
    IAmazonS3 S3Client { get; set; }

    public HomeController(IAmazonS3 s3Client)
    {
        this.S3Client = s3Client;
    }

    ...

}
```

# 配置其他应用程序参数
<a name="net-dg-config-other"></a>

**注意**  
本主题中的信息特定于基于 .NET Framework 的项目。默认情况下，`App.config` 和 `Web.config` 文件不存在于基于 .NET Core 的项目中。

## 打开查看 .NET Framework 内容
<a name="w2aac11c29b9b5b1"></a>

可配置多种应用程序参数：
+  `AWSLogging` 
+  `AWSLogMetrics` 
+  `AWSRegion` 
+  `AWSResponseLogging` 
+  `AWS.DynamoDBContext.TableNamePrefix` 
+  `AWS.S3.UseSignatureVersion4` 
+  `AWSEndpointDefinition` 
+  [AWS 服务生成的终端节点](#config-setting-service-generated-awsendpointdefinition) 

这些参数可以在应用程序的 `App.config` 或 `Web.config` 文件中配置。尽管您也可以使用 适用于 .NET 的 AWS SDK API 对其进行配置，但我们建议您使用应用程序的`.config`文件。此处介绍了这两种方法。

有关本主题后文中所述的使用 `<aws>` 元素的更多信息，请参阅[适用于 .NET 的 AWS SDK配置文件参考](net-dg-config-ref.md)。

### AWSLogging
<a name="config-setting-awslogging"></a>

配置开发工具包应如何记录事件 (如果记录)。例如，建议的方法是使用 `<logging>` 元素，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <logging logTo="Log4Net"/>
</aws>
```

或者：

```
<add key="AWSLogging" value="log4net"/>
```

可能的值包括：

** `None` **  
禁用 事件日志记录。这是默认值。

** `log4net` **  
使用 log4net 记录。

** `SystemDiagnostics` **  
使用 `System.Diagnostics` 类记录。

您可以为 `logTo` 属性设置多个值，以逗号分隔。以下示例在 `.config` 文件中设置 `log4net` 和 `System.Diagnostics` 日志记录：

```
<logging logTo="Log4Net, SystemDiagnostics"/>
```

或者：

```
<add key="AWSLogging" value="log4net, SystemDiagnostics"/>
```

或者，使用 适用于 .NET 的 AWS SDK API 合并[LoggingOptions](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TLoggingOptions.html)枚举值并设置 [AWSConfigs.Logging](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html) 属性：

```
AWSConfigs.Logging = LoggingOptions.Log4Net | LoggingOptions.SystemDiagnostics;
```

对此设置的更改仅对新的 AWS 客户端实例生效。

### AWSLog指标
<a name="config-setting-awslogmetrics"></a>

指定开发工具包是否应记录性能指标。要在 `.config` 文件中设置指标日志记录配置，请在 `<logging>` 元素中设置 `logMetrics` 属性值，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <logging logMetrics="true"/>
</aws>
```

此外，在 `<appSettings>` 部分中设置 `AWSLogMetrics` 关键字：

```
<add key="AWSLogMetrics" value="true">
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置指标日志记录，请设置[AWSConfigs。 LogMetrics](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)财产:

```
AWSConfigs.LogMetrics = true;
```

对于所有客户端/配置，此设置用于配置默认 `LogMetrics` 属性。对此设置的更改仅对新的 AWS 客户端实例生效。

### AWSRegion
<a name="config-setting-awsregion"></a>

为未明确指定 AWS 区域的客户端配置默认区域。要在 `.config` 文件中设置区域，建议的方法是在 `aws` 元素中设置 `region` 属性值：

```
<aws region="us-west-2"/>
```

此外，在 `<appSettings>` 部分中设置 *AWSRegion* 关键字：

```
<add key="AWSRegion" value="us-west-2"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置区域，请设置[AWSConfigs。 AWSRegion](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)财产:

```
AWSConfigs.AWSRegion = "us-west-2";
```

有关为特定区域创建 AWS 客户端的更多信息，请参阅[AWS 区域选择](net-dg-region-selection.md)。对此设置的更改仅对新的 AWS 客户端实例生效。

### AWSResponse正在记录
<a name="config-setting-awsresponselogging"></a>

配置开发工具包在什么情况下记录服务响应。可能的值包括：

** `Never` **  
从不记录服务响应。这是默认值。

** `Always` **  
始终记录服务响应。

** `OnError` **  
仅在出错时记录服务响应。

要在 `.config` 文件中设置服务日志记录配置，推荐的方法是在 `<logging>` 元素中设置 `logResponses` 属性值，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <logging logResponses="OnError"/>
</aws>
```

或者，在以下`<appSettings>`部分中*AWSResponse设置 Logging* 密钥：

```
<add key="AWSResponseLogging" value="OnError"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置服务日志记录，请设置[AWSConfigs。 ResponseLogging](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)将属性设置为[ResponseLoggingOption](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TResponseLoggingOption.html)枚举的其中一个值：

```
AWSConfigs.ResponseLogging = ResponseLoggingOption.OnError;
```

对此设置的更改会立即生效。

### `AWS.DynamoDBContext.TableNamePrefix`
<a name="config-setting-aws-dynamodbcontext-tablenameprefix"></a>

配置 `TableNamePrefix` 将使用的默认 `DynamoDBContext` (在未手动配置的情况下)。

要在 `.config` 文件中设置表名前缀，建议的方法是在 `<dynamoDBContext>` 元素中设置 `tableNamePrefix` 属性值，该元素是 `<dynamoDB>` 元素 (这又是 `<aws>` 的子元素) 的子元素：

```
<dynamoDBContext tableNamePrefix="Test-"/>
```

此外，在 `<appSettings>` 部分中设置 `AWS.DynamoDBContext.TableNamePrefix` 关键字：

```
<add key="AWS.DynamoDBContext.TableNamePrefix" value="Test-"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置表名前缀，请设置 [AWSConfigs.Dynamo 属性 DBContext TableNamePrefix](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)：

```
AWSConfigs.DynamoDBContextTableNamePrefix = "Test-";
```

对此设置的更改仅在新构建的 `DynamoDBContextConfig` 和 `DynamoDBContext` 实例中生效。

### `AWS.S3.UseSignatureVersion4`
<a name="config-setting-aws-s3-usesignatureversion4"></a>

配置 Amazon S3 客户端是否应使用签名版本 4 对请求签名。

要在 `.config` 文件中为 Amazon S3 设置签名版本 4 的签名，推荐的方法是在 `<s3>` 元素中设置 `useSignatureVersion4` 属性，该元素是 `<aws>` 元素的子元素：

```
<aws>
  <s3 useSignatureVersion4="true"/>
</aws>
```

此外，在 `<appSettings>` 部分中将 `AWS.S3.UseSignatureVersion4` 密钥设置为 `true`：

```
<add key="AWS.S3.UseSignatureVersion4" value="true"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置签名版本 4 签名，请将 [AWSConfigs.S3 UseSignatureVersion 4](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html) 属性设置为：`true`

```
AWSConfigs.S3UseSignatureVersion4 = true;
```

默认情况下，此设置是 `false`，但在某些情况下或者在某些区域中，默认会使用签名版本 4。当设置为 `true` 时，签名版本 4 将用于所有请求。对此设置的更改仅对新 Amazon S3 客户端实例生效。

### AWSEndpoint定义
<a name="config-setting-awsendpointdefinition"></a>

配置开发工具包是否应使用自定义配置文件，该文件定义区域和终端节点。

要在 `.config` 文件中设置终端节点定义文件，建议在 `<aws>` 元素中设置 `endpointDefinition` 属性值。

```
<aws endpointDefinition="c:\config\endpoints.json"/>
```

或者，你可以在以下`<appSettings>`部分中设置*AWSEndpoint定义*密钥：

```
<add key="AWSEndpointDefinition" value="c:\config\endpoints.json"/>
```

或者，要使用 适用于 .NET 的 AWS SDK API 设置端点定义文件，请设置[AWSConfigs。 EndpointDefinition](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)财产:

```
AWSConfigs.EndpointDefinition = @"c:\config\endpoints.json";
```

如果没有提供文件名，则不使用自定义配置文件。对此设置的更改仅对新的 AWS 客户端实例生效。该`endpoints.json`文件可从中获得[https://github.com/aws/aws-sdk-net/blob/main/sdk/src/Core/endpoints.json](https://github.com/aws/aws-sdk-net/blob/main/sdk/src/Core/endpoints.json)。

### AWS 服务生成的终端节点
<a name="config-setting-service-generated-awsendpointdefinition"></a>

有些 AWS 服务会生成自己的终端节点，而不是使用区域终端节点。这些服务的客户端使用特定于该服务的服务 URL 以及您的资源。这些服务的两个例子是 Amazon CloudSearch 和 AWS IoT。以下示例演示如何获取这些服务的终端节点。

#### Amazon CloudSearch 终端节点示例
<a name="cs-endpoints-example"></a>

亚马逊 CloudSearch 客户端用于访问亚马逊 CloudSearch 配置服务。您可以使用 Amazon CloudSearch 配置服务创建、配置和管理搜索域。要创建搜索域，请创建一个[CreateDomainRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/TCreateDomainRequest.html)对象并提供该`DomainName`属性。使用请求[AmazonCloudSearchClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/TCloudSearchClient.html)对象创建对象。调用 [CreateDomain](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/MCloudSearchCreateDomainCreateDomainRequest.html) 方法。调用返回的[CreateDomainResponse](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearch/TCreateDomainResponse.html)对象包含一个同时具有`DocService`和`SearchService`端点的`DomainStatus`属性。创建一个[AmazonCloudSearchDomainConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearchDomain/TCloudSearchDomainConfig.html)对象并使用它来初始化该[AmazonCloudSearchDomainClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/CloudSearchDomain/TCloudSearchDomainClient.html)类的`SearchService`实例`DocService`和实例。

```
// Create domain and retrieve DocService and SearchService endpoints
DomainStatus domainStatus;
using (var searchClient = new AmazonCloudSearchClient())
{
    var request = new CreateDomainRequest
    {
        DomainName = "testdomain"
    };
    domainStatus = searchClient.CreateDomain(request).DomainStatus;
    Console.WriteLine(domainStatus.DomainName + " created");
}

// Test the DocService endpoint
var docServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.DocService.Endpoint
};
using (var domainDocService = new AmazonCloudSearchDomainClient(docServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain DocService client instantiated using the DocService endpoint");
    Console.WriteLine("DocService endpoint = " + domainStatus.DocService.Endpoint);

    using (var docStream = new FileStream(@"C:\doc_source\XMLFile4.xml", FileMode.Open))
    {
        var upload = new UploadDocumentsRequest
        {
            ContentType = ContentType.ApplicationXml,
            Documents = docStream
        };
        domainDocService.UploadDocuments(upload);
    }
}

// Test the SearchService endpoint
var searchServiceConfig = new AmazonCloudSearchDomainConfig
{
    ServiceURL = "https://" + domainStatus.SearchService.Endpoint
};
using (var domainSearchService = new AmazonCloudSearchDomainClient(searchServiceConfig))
{
    Console.WriteLine("Amazon CloudSearchDomain SearchService client instantiated using the SearchService endpoint");
    Console.WriteLine("SearchService endpoint = " + domainStatus.SearchService.Endpoint);

    var searchReq = new SearchRequest
    {
        Query = "Gambardella",
        Sort = "_score desc",
        QueryParser = QueryParser.Simple
    };
    var searchResp = domainSearchService.Search(searchReq);
}
```

#### AWS IoT 端点示例
<a name="iotlong-endpoints-example"></a>

要获取的终端节点 AWS IoT，请创建一个[AmazonIoTClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IoT/TIoTClient.html)对象并调用[DescribeEndPoint](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IoT/MIoTDescribeEndpointDescribeEndpointRequest.html)方法。返回的[DescribeEndPointResponse](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IoT/TDescribeEndpointResponse.html)对象包含`EndpointAddress`。创建[AmazonIotDataConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IotData/TIotDataConfig.html)对象，设置`ServiceURL`属性，然后使用该对象实例化该类。[AmazonIotDataClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IotData/TIotDataClient.html)

```
string iotEndpointAddress;
using (var iotClient = new AmazonIoTClient())
{
    var endPointResponse = iotClient.DescribeEndpoint();
    iotEndpointAddress = endPointResponse.EndpointAddress;
}

var ioTdocServiceConfig = new AmazonIotDataConfig
{
    ServiceURL = "https://" + iotEndpointAddress
};
using (var dataClient = new AmazonIotDataClient(ioTdocServiceConfig))
{
    Console.WriteLine("AWS IoTData client instantiated using the endpoint from the IotClient");
}
```

# 的配置文件参考 适用于 .NET 的 AWS SDK
<a name="net-dg-config-ref"></a>

**注意**  
本主题中的信息特定于基于 .NET Framework 的项目。默认情况下，`App.config` 和 `Web.config` 文件不存在于基于 .NET Core 的项目中。

## 打开查看 .NET Framework 内容
<a name="w2aac11c29c11b5b1"></a>

您可以使用.NET 项目`App.config`或`Web.config`文件来指定 AWS 设置，例如 AWS 证书、日志选项、 AWS 服务终端节点和 AWS 区域，以及一些 AWS 服务的设置，例如亚马逊 DynamoDB、Amazon 和 Ama EC2 zon S3。以下信息介绍了如何正确设置 `App.config` 或 `Web.config` 文件的格式，以指定这些设置类型。

**注意**  
尽管您可以继续使用`App.config`或`Web.config`文件中的`<appSettings>`元素来指定 AWS 设置，但我们建议您按照本主题后面的说明使用`<configSections>`和`<aws>`元素。有关该`<appSettings>`元素的更多信息，请参阅[配置 适用于 .NET 的 AWS SDK 应用程序中的`<appSettings>`](net-dg-config.md)元素示例。

**注意**  
尽管您可以继续在代码文件中使用以下[https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)类属性来指定 AWS 设置，但以下属性已过时，将来的版本可能不支持这些属性：  
 `DynamoDBContextTableNamePrefix` 
 `EC2UseSignatureVersion4` 
 `LoggingOptions` 
 `LogMetrics` 
 `ResponseLoggingOption` 
 `S3UseSignatureVersion4` 
通常，我们建议您不要在代码文件中使用`AWSConfigs`类属性来指定 AWS 设置，而应使用`App.config`或`Web.config`文件中的`<configSections>`和`<aws>`元素来指定 AWS 设置，如本主题后面所述。有关上述属性的更多信息，请参阅[配置 适用于 .NET 的 AWS SDK 应用程序](net-dg-config.md)中的`AWSConfigs`代码示例。

**Topics**
+ [声明 AWS 设置部分](#net-dg-config-ref-declaring)
+ [允许的元素](#net-dg-config-ref-elements)
+ [元素参考](#net-dg-config-ref-elements-ref)

### 声明 AWS 设置部分
<a name="net-dg-config-ref-declaring"></a>

您可以从`<aws>`元素内部在`App.config`或`Web.config`文件中指定 AWS 设置。在开始使用 `<aws>` 元素之前，您必须先创建一个 `<section>` 元素 (`<configSections>` 元素的子元素) 并将其 `name` 属性和 `aws` 属性分别设置为 `type` 和 `Amazon.AWSSection, AWSSDK.Core` (如以下示例所示)：

```
<?xml version="1.0"?>
<configuration>
  ...
  <configSections>
    <section name="aws" type="Amazon.AWSSection, AWSSDK.Core"/>
  </configSections>
  <aws>
    <!-- Add your desired AWS settings declarations here. -->
  </aws>
  ...
</configuration>
```

Visual Studio 编辑器不为`<aws>`元素或其子元素提供自动代码完成功能 (IntelliSense)。

调用 `<aws>` 方法可帮助您创建 `Amazon.AWSConfigs.GenerateConfigTemplate` 元素格式正确的版本。这将以美观打印字符串形式输出 `<aws>` 元素的规范版本，可调整该字符串以满足您的需求。以下部分介绍 `<aws>` 元素的属性和子元素。

### 允许的元素
<a name="net-dg-config-ref-elements"></a>

以下是 AWS 设置部分中允许的元素之间的逻辑关系列表。要生成此列表的最新版本，您可以调用 `Amazon.AWSConfigs.GenerateConfigTemplate` 方法，这将以字符串形式输出 `<aws>` 元素的规范版本，可调整该字符串以满足您的需求。

```
<aws
  endpointDefinition="string value"
  region="string value"
  profileName="string value"
  profilesLocation="string value">
  <logging
    logTo="None, Log4Net, SystemDiagnostics"
    logResponses="Never | OnError | Always"
    logMetrics="true | false"
    logMetricsFormat="Standard | JSON"
    logMetricsCustomFormatter="NameSpace.Class, Assembly" />
  <dynamoDB
    conversionSchema="V1 | V2">
    <dynamoDBContext
      tableNamePrefix="string value">
      <tableAliases>
        <alias
          fromTable="string value"
          toTable="string value" />
      </tableAliases>
      <map
        type="NameSpace.Class, Assembly"
        targetTable="string value">
        <property
          name="string value"
          attribute="string value"
          ignore="true | false"
          version="true | false"
          converter="NameSpace.Class, Assembly" />
      </map>
    </dynamoDBContext>
  </dynamoDB>
  <s3
    useSignatureVersion4="true | false" />
  <ec2
    useSignatureVersion4="true | false" />
  <proxy
    host="string value"
    port="1234"
    username="string value"
    password="string value" />
</aws>
```

### 元素参考
<a name="net-dg-config-ref-elements-ref"></a>

以下是 AWS 设置部分中允许使用的元素的列表。对于每个元素，将列出其允许的属性和父-子元素。

**Topics**
+ [别名](#net-dg-config-ref-elements-alias)
+ [`aws`](#net-dg-config-ref-elements-aws)
+ [dynamoDB](#net-dg-config-ref-elements-dynamodb)
+ [发电机 DBContext](#net-dg-config-ref-elements-ddbcontext)
+ [ec2](#net-dg-config-ref-elements-ec2)
+ [logging](#net-dg-config-ref-elements-logging)
+ [映射](#net-dg-config-ref-elements-map)
+ [property](#net-dg-config-ref-elements-property)
+ [proxy](#net-dg-config-ref-elements-proxy)
+ [S3](#net-dg-config-ref-elements-s3)

#### 别名
<a name="net-dg-config-ref-elements-alias"></a>

`<alias>` 元素表示集合中的一个项，该集合包含一个或多个源表到目标表的映射，用于指定与为某一类型配置的表不同的表。此元素将从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.DynamoDBConfig.Context.TableAliases` 属性映射到 `Amazon.Util.TableAlias` 类的实例。在应用表名称前缀之前，将执行重新映射。

此元素可以包含以下属性：

** `fromTable` **  
源表到目标表的映射的源表部分。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.TableAlias.FromTable` 属性。

** `toTable` **  
源表到目标表的映射的目标表部分。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.TableAlias.ToTable` 属性。

`<alias>` 元素的父级为 `<tableAliases>` 元素。

`<alias>` 元素不包含子元素。

以下是使用中的 `<alias>` 元素的示例：

```
<alias
  fromTable="Studio"
  toTable="Studios" />
```

#### `aws`
<a name="net-dg-config-ref-elements-aws"></a>

该`<aws>`元素代表 AWS 设置部分中最上面的元素。此元素可以包含以下属性：

** `endpointDefinition` **  
定义要使用的 AWS 区域和端点的自定义配置文件的绝对路径。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.EndpointDefinition` 属性。

** `profileName` **  
用于进行服务调用的存储 AWS 凭据的配置文件名称。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.AWSProfileName` 属性。

** `profilesLocation` **  
指向与其他人共享的凭据文件位置的绝对路径 AWS SDKs。默认情况下，凭证文件存储在当前用户主目录的 `.aws` 目录中。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.AWSProfilesLocation` 属性。

** `region` **  
未明确指定 AWS 区域的客户端的默认区域 ID。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.AWSRegion` 属性。

`<aws>` 元素没有父元素。

`<aws>` 元素可包含以下子元素：
+  `<dynamoDB>` 
+  `<ec2>` 
+  `<logging>` 
+  `<proxy>` 
+  `<s3>` 

以下是使用中的 `<aws>` 元素的示例：

```
<aws
  endpointDefinition="C:\Configs\endpoints.xml"
  region="us-west-2"
  profileName="development"
  profilesLocation="C:\Configs">
  <!-- ... -->
</aws>
```

#### dynamoDB
<a name="net-dg-config-ref-elements-dynamodb"></a>

`<dynamoDB>` 元素表示一组 Amazon DynamoDB 设置。此元素可以包含 *conversionSchema* 属性，该属性表示在 .NET 和 DynamoDB 对象之间进行转换所用的版本。允许的值包括 V1 和 V2。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.DynamoDBv2.DynamoDBEntryConversion` 类。有关更多信息，请参阅 [DynamoDB 系列 - 转换架构](http://blogs.aws.amazon.com/net/post/Tx2TCOGWG7ARUH5/DynamoDB-Series-Conversion-Schemas)。

`<dynamoDB>` 元素的父级为 `<aws>` 元素。

`<dynamoDB>` 元素可以包含 `<dynamoDBContext>` 子元素。

以下是使用中的 `<dynamoDB>` 元素的示例：

```
<dynamoDB
  conversionSchema="V2">
  <!-- ... -->
</dynamoDB>
```

#### 发电机 DBContext
<a name="net-dg-config-ref-elements-ddbcontext"></a>

`<dynamoDBContext>` 元素表示一组 Amazon DynamoDB 上下文特定的设置。此元素可以包含*tableNamePrefix*属性，该属性表示 DynamoDB 上下文在未手动配置的情况下将使用的默认表名前缀。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.DynamoDBConfig.Context.TableNamePrefix` 属性映射到 `Amazon.Util.DynamoDBContextConfig.TableNamePrefix` 属性。有关更多信息，请参阅 [DynamoDB 开发工具包的增强功能](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK)。

`<dynamoDBContext>` 元素的父级为 `<dynamoDB>` 元素。

`<dynamoDBContext>` 元素可包含以下子元素：
+  `<alias>` (一个或多个实例)
+  `<map>` (一个或多个实例)

以下是使用中的 `<dynamoDBContext>` 元素的示例：

```
<dynamoDBContext
  tableNamePrefix="Test-">
  <!-- ... -->
</dynamoDBContext>
```

#### ec2
<a name="net-dg-config-ref-elements-ec2"></a>

该`<ec2>`元素表示 Amazon EC2 设置的集合。此元素可以包含 *useSignatureVersion4* 属性，该属性指定是否将对所有请求使用签名版本 4 签名（true），或者是否不对所有请求使用签名版本 4 签名（false，默认值）。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.EC2Config.UseSignatureVersion4` 属性映射到 `Amazon.Util.EC2Config.UseSignatureVersion4` 属性。

`<ec2>` 元素的父级为该元素。

`<ec2>` 元素不包含子元素。

以下是使用中的 `<ec2>` 元素的示例：

```
<ec2
  useSignatureVersion4="true" />
```

#### logging
<a name="net-dg-config-ref-elements-logging"></a>

`<logging>` 元素表示一组用于响应日志记录和性能指标日志记录的设置。此元素可以包含以下属性：

** `logMetrics` **  
是否将为所有客户端和配置记录性能指标，如果是，则为 true；否则为 false。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.LoggingConfig.LogMetrics` 属性映射到 `Amazon.Util.LoggingConfig.LogMetrics` 属性。

** `logMetricsCustomFormatter` **  
用于日志记录指标的自定义格式化程序的数据类型和程序集名称。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.LoggingConfig.LogMetricsCustomFormatter` 属性映射到 `Amazon.Util.LoggingConfig.LogMetricsCustomFormatter` 属性。

** `logMetricsFormat` **  
用于表示日志记录指标的格式（从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.LoggingConfig.LogMetricsFormat` 属性映射到 `Amazon.Util.LoggingConfig.LogMetricsFormat` 属性）。  
允许的值包括：    
** `JSON` **  
使用 JSON 格式。  
** `Standard` **  
使用默认格式。

** `logResponses` **  
记录服务响应的时间（从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.LoggingConfig.LogResponses` 属性映射到 `Amazon.Util.LoggingConfig.LogResponses` 属性）。  
允许的值包括：    
** `Always` **  
始终记录服务响应。  
** `Never` **  
从不记录服务响应。  
** `OnError` **  
仅在出错时记录服务响应。

** `logTo` **  
登录到哪里（从中的`LogTo``Amazon.AWSConfigs.LoggingConfig.LogTo`属性映射到该属性 适用于 .NET 的 AWS SDK）。  
允许的值包括下列一个或多个值：    
** `Log4Net` **  
记录到 log4net。  
** `None` **  
禁用日志记录。  
** `SystemDiagnostics` **  
记录到 System.Diagnostics。

`<logging>` 元素的父级为 `<aws>` 元素。

`<logging>` 元素不包含子元素。

以下是使用中的 `<logging>` 元素的示例：

```
<logging
  logTo="SystemDiagnostics"
  logResponses="OnError"
  logMetrics="true"
  logMetricsFormat="JSON"
  logMetricsCustomFormatter="MyLib.Util.MyMetricsFormatter, MyLib" />
```

#### 映射
<a name="net-dg-config-ref-elements-map"></a>

该`<map>`元素表示从.NET 类型到 DynamoDB 表的 type-to-table映射集合中的单个项目（映射到中`Amazon.AWSConfigs.DynamoDBConfig.Context.TypeMappings`属性的`TypeMapping`类实例）。 适用于 .NET 的 AWS SDK有关更多信息，请参阅 [DynamoDB 开发工具包的增强功能](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK)。

此元素可以包含以下属性：

** `targetTable` **  
映射对应的 DynamoDB 表。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.TypeMapping.TargetTable` 属性。

** `type` **  
映射对应的类型和程序集名称。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.TypeMapping.Type` 属性。

`<map>` 元素的父级为 `<dynamoDBContext>` 元素。

`<map>` 元素可包含 `<property>` 子元素的一个或多个实例。

以下是使用中的 `<map>` 元素的示例：

```
<map
  type="SampleApp.Models.Movie, SampleDLL"
  targetTable="Movies">
  <!-- ... -->
</map>
```

#### property
<a name="net-dg-config-ref-elements-property"></a>

`<property>` 元素表示 DynamoDB 属性。（此元素映射到 Amazon.Util 的实例。 PropertyConfig [中的`AddProperty`方法中的类 适用于 .NET 的 AWS SDK）有关更多信息，请参阅 DynamoDB 开发工具包和 D [ynamoDB 属性的增强功能](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK)。](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DeclarativeTagsList.html)

此元素可以包含以下属性：

** `attribute` **  
属性的属性名，例如范围键的名称。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.PropertyConfig.Attribute` 属性。

** `converter` **  
应该用于此属性的转换器的类型。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.PropertyConfig.Converter` 属性。

** `ignore` **  
是否应忽略关联的属性，如果忽略，则为 true；否则为 false。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.PropertyConfig.Ignore` 属性。

** `name` **  
属性的名称。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.PropertyConfig.Name` 属性。

** `version` **  
此属性是否应存储项目版本号，如果是，则为 true；否则为 false。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.Util.PropertyConfig.Version` 属性。

`<property>` 元素的父级为 `<map>` 元素。

`<property>` 元素不包含子元素。

以下是使用中的 `<property>` 元素的示例：

```
<property
  name="Rating"
  converter="SampleApp.Models.RatingConverter, SampleDLL" />
```

#### proxy
<a name="net-dg-config-ref-elements-proxy"></a>

`<proxy>` 元素表示用于配置代理以供 适用于 .NET 的 AWS SDK 使用的设置。此元素可以包含以下属性：

**host**  
代理服务器的主机名或 IP 地址。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.ProxyConfig.Host` 属性映射到 `Amazon.Util.ProxyConfig.Host` 属性。

**password**  
用于对代理服务器进行身份验证的密码。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.ProxyConfig.Password` 属性映射到 `Amazon.Util.ProxyConfig.Password` 属性。

**端口**  
代理的端口号。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.ProxyConfig.Port` 属性映射到 `Amazon.Util.ProxyConfig.Port` 属性。

**username**  
用于对代理服务器进行身份验证的用户名。此属性从 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.ProxyConfig.Username` 属性映射到 `Amazon.Util.ProxyConfig.Username` 属性。

`<proxy>` 元素的父级为 `<aws>` 元素。

`<proxy>` 元素不包含子元素。

以下是使用中的 `<proxy>` 元素的示例：

```
<proxy
  host="192.0.2.0"
  port="1234"
  username="My-Username-Here"
  password="My-Password-Here" />
```

#### S3
<a name="net-dg-config-ref-elements-s3"></a>

`<s3>` 元素表示 Amazon S3 设置的集合。此元素可以包含 *useSignatureVersion4* 属性，该属性指定是否将对所有请求使用签名版本 4 签名（true），或者是否不对所有请求使用签名版本 4 签名（false，默认值）。此属性映射到 适用于 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.S3Config.UseSignatureVersion4` 属性。

`<s3>` 元素的父级为 `<aws>` 元素。

`<s3>` 元素不包含子元素。

以下是使用中的 `<s3>` 元素的示例：

```
<s3 useSignatureVersion4="true" />
```