配置其他应用程序参数 - Amazon SDK for .NET
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置其他应用程序参数

注意

本主题中的信息特定于基于 .NET Framework 的项目。默认情况下,App.configWeb.config 文件不存在于基于 .NET Core 的项目中。

可配置多种应用程序参数:

这些参数可以在应用程序的 App.configWeb.config 文件中配置。虽然您也可以使用Amazon SDK for .NET API 配置这些参数,但建议您使用应用程序的 .config 文件。此处介绍了这两种方法。

有关本主题后文中所述的使用 <aws> 元素的更多信息,请参阅Amazon SDK for .NET配置文件参考

AWSLogging

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

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

或者:

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

可能的值包括:

None

禁用 事件日志记录。这是默认模式。

log4net

使用 log4net 记录。

SystemDiagnostics

使用 System.Diagnostics 类记录。

您可以为 logTo 属性设置多个值,以逗号分隔。以下示例在 .config 文件中设置 log4netSystem.Diagnostics 日志记录:

<logging logTo="Log4Net, SystemDiagnostics"/>

或者:

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

或者,使用Amazon SDK for .NET API,将 LoggingOptions 枚举的值合并,然后设置 AWSConfigs.Logging 属性:

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

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

AWSLogMetrics

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

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

此外,在 <appSettings> 部分中设置 AWSLogMetrics 关键字:

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

此外,要使用Amazon SDK for .NET API 设置指标日志记录,请设置 AWSConfigs.LogMetrics 属性:

AWSConfigs.LogMetrics = true;

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

AWSRegion

为没有明确指定区域的客户端配置默认 Amazon 区域。要在 .config 文件中设置区域,建议的方法是在 aws 元素中设置 region 属性值:

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

此外,在 部分中设置 AWSRegion<appSettings> 关键字:

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

或者,要使用Amazon SDK for .NET API 设置区域,请设置 AWSConfigs.AWSRegion 属性:

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

有关为特定区域创建 Amazon 客户端的更多信息,请参阅 Amazon 区域选择。对此设置的更改仅对新 Amazon 客户端实例生效。

AWSResponseLogging

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

Never

从不记录服务响应。这是默认模式。

Always

始终记录服务响应。

OnError

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

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

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

此外,在 部分中设置 AWSResponseLogging<appSettings> 关键字:

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

或者,要使用Amazon SDK for .NET API 设置服务日志记录,请将 AWSConfigs.ResponseLogging 属性设置为 ResponseLoggingOption 枚举的值之一:

AWSConfigs.ResponseLogging = ResponseLoggingOption.OnError;

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

AWS.DynamoDBContext.TableNamePrefix

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

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

<dynamoDBContext tableNamePrefix="Test-"/>

此外,在 <appSettings> 部分中设置 AWS.DynamoDBContext.TableNamePrefix 关键字:

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

或者,要使用Amazon SDK for .NET API 设置表名前缀,请设置 AWSConfigs.DynamoDBContextTableNamePrefix 属性:

AWSConfigs.DynamoDBContextTableNamePrefix = "Test-";

对此设置的更改仅在新构建的 DynamoDBContextConfigDynamoDBContext 实例中生效。

AWS.S3.UseSignatureVersion4

配置 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"/>

或者,要使用Amazon SDK for .NET API 设置签名版本 4 签名,请将 AWSConfigs.S3UseSignatureVersion4 属性设置为 true

AWSConfigs.S3UseSignatureVersion4 = true;

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

AWSEndpointDefinition

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

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

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

此外,您可以在 部分中设置 AWSEndpointDefinition<appSettings> 关键字:

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

或者,要使用Amazon SDK for .NET API 设置终端节点定义文件,请设置 AWSConfigs.EndpointDefinition 属性:

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

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

Amazon 服务生成的端点

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

Amazon CloudSearch 端点示例

Amazon CloudSearch 客户端用于访问 Amazon CloudSearch 配置服务。您使用 Amazon CloudSearch 配置服务来创建、配置和管理搜索域。要创建搜索域,请创建 CreateDomainRequest 对象并提供 DomainName 属性。使用请求对象创建 AmazonCloudSearchClient 对象。调用 CreateDomain 方法。调用返回的 CreateDomainResponse 对象包含 DomainStatus 属性,该属性具有 DocServiceSearchService 终端节点。创建 AmazonCloudSearchDomainConfig 对象并使用它来初始化 DocServiceAmazonCloudSearchDomainClientSearchService 类的 实例。

// 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); }

Amazon IoT 终端节点示例

要获取 Amazon IoT 的终端节点,请创建 AmazonIoTClient 对象并调用 DescribeEndPoint 方法。返回的 DescribeEndPointResponse 对象包含 EndpointAddress。创建 AmazonIotDataConfig 对象,设置 ServiceURL 属性,并使用对象实例化 AmazonIotDataClient 类。

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"); }