

第 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.Extensions.NETCore.Setup 和 IConfiguration](net-dg-config-netcore.md)
+ [設定其他應用程式參數](net-dg-config-other.md)
+ [的組態檔案參考 適用於 .NET 的 AWS SDK](net-dg-config-ref.md)

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

（本主題先前標題為「 適用於 .NET 的 AWS SDK 使用 .NET Core 設定 」)

.NET Core 中最大的變更之一是移除 `ConfigurationManager`以及與 .NET Framework `app.config`和 ASP.NET 應用程式搭配使用的標準 和 `web.config` 檔案。

.NET Core 中的組態是以組態提供者建立的鍵值對為基礎。組態提供者會將組態資料從各種組態來源讀入鍵/值組，包括命令列引數、目錄檔案、環境變數和設定檔案。

**注意**  
如需詳細資訊，請參閱 [ASP.NET Core 中的組態](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration)。

若要輕鬆 適用於 .NET 的 AWS SDK 搭配 .NET Core 使用 ，您可以使用 [AWSSDK.Extensions.NETCore.Setup](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.Extensions.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`設定為**開發**。在開發期間，您會將組態放入此檔案中，此檔案只會在本機測試期間讀取。當您部署已`EnvironmentName`設定為**生產**的 Amazon EC2 執行個體時，會忽略此檔案，而 適用於 .NET 的 AWS SDK 會回到為 Amazon EC2 執行個體設定的 IAM 登入資料和區域。

下列組態設定顯示您可以在專案的 `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)`類別。
+ 區域
+ 設定檔
+ 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 核心中使用新的相依性注入系統。應用程式`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](https://www.nuget.org/packages/AWSSDK.S3) 和 [AWSSDK.DynamoDBv2](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 用戶端執行個體。

### AWSLogMetrics
<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 用戶端執行個體。

### AWSResponseLogging
<a name="config-setting-awsresponselogging"></a>

設定開發套件應何時記錄服務回應。可能值如下：

** `Never` **  
永遠不用記錄服務回應。這是預設值。

** `Always` **  
一直記錄服務回應。

** `OnError` **  
只在發生錯誤時記錄服務回應。

若要在 `.config` 檔案裡設定服務記錄組態，建議方式為設定 `<logging>` 元素的 `logResponses` 屬性值，此元素為 `<aws>` 元素的子元素：

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

或者，在 `<appSettings>`區段中設定 *AWSResponseLogging* 金鑰：

```
<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` 檔案的表格的前綴名稱，建議的方法為設定 `<dynamoDB>` 元素的子元素 `<dynamoDBContext>` 元素之 `tableNamePrefix` 屬性值，此元素其本身又為 `<aws>` 的子元素：

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

或者，在 `<appSettings>` 設定 `AWS.DynamoDBContext.TableNamePrefix` 金鑰：

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

或者，若要使用 適用於 .NET 的 AWS SDK API 設定資料表名稱字首，請設定 [AWSConfigs.DynamoDBContextTableNamePrefix](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>
```

或者，`true`在 `<appSettings>`區段中將`AWS.S3.UseSignatureVersion4`金鑰設定為 ：

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

或者，若要使用 適用於 .NET 的 AWS SDK API 設定簽章第 4 版簽署，請將 [AWSConfigs.S3UseSignatureVersion4](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html) 屬性設定為 `true`：

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

在預設情況下，此設定為 `false`，但第四版的簽章可能在某些情況下或某些區域中會做為預設使用。當設定為 `true`，第四版的簽章將用於所有的請求。此設定的變更僅在新的 Amazon S3 用戶端執行個體上生效。

### AWSEndpointDefinition
<a name="config-setting-awsendpointdefinition"></a>

設定開發套件是否應開始用自訂組態檔案定義區域和端點。

若要設定 `.config` 檔案的端點定義檔案，我們建議設定 `<aws>` 元素的 `endpointDefinition` 屬性值。

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

或者，您可以在 `<appSettings>`區段中設定 *AWSEndpointDefinition* 金鑰：

```
<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>

Amazon CloudSearch 用戶端用於存取 Amazon 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) 物件包含 `DomainStatus` 屬性，同時具有 `DocService` 和 `SearchService` 端點。建立 [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) 類別的 `DocService`和 `SearchService`執行個體。

```
// 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 服務設定，例如 Amazon DynamoDB、Amazon EC2 和 Amazon S3。以下資訊說明如何正確地格式化 `App.config` 或 `Web.config` 檔案，以指定這些類型的設定。

**注意**  
雖然您可以繼續使用 `App.config`或 `Web.config` 檔案中的 `<appSettings>` 元素來指定 AWS 設定，但我們建議您如本主題稍後所述使用 `<configSections>`和 `<aws>`元素。如需 `<appSettings>`元素的詳細資訊，請參閱[設定 適用於 .NET 的 AWS SDK 應用程式](net-dg-config.md)中的 `<appSettings>`元素範例。

**注意**  
雖然您可以繼續使用程式碼檔案中的下列[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)
+ [dynamoDBContext](#net-dg-config-ref-elements-ddbcontext)
+ [ec2](#net-dg-config-ref-elements-ec2)
+ [日誌](#net-dg-config-ref-elements-logging)
+ [映射](#net-dg-config-ref-elements-map)
+ [屬性](#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>` 元素表示在一個或多個從表格 (from-table) 至到表格 (to-table) 對應的單一項目，為類型設定指定不同的表格。此元素會對應到 適用於 .NET 的 AWS SDK之 `Amazon.AWSConfigs.DynamoDBConfig.Context.TableAliases` 屬性中 `Amazon.Util.TableAlias` 類別的執行個體。在套用表格的前綴名稱前，會完成重新對應。

這個元素可以包含下列屬性：

** `fromTable` **  
從表格 (from-table) 至到表格 (to-table) 對應的從表格 (from-table) 部分。此屬性對應到 適用於 .NET 的 AWS SDK中的 `Amazon.Util.TableAlias.FromTable` 屬性。

** `toTable` **  
從表格 (from-table) 至到表格 (to-table) 對應的至表格 (to-table) 部分。此屬性對應到 適用於 .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>` 元素代表 AmazonDynamoDB 設定的設定集合。這個元素可以包含 *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>
```

#### dynamoDBContext
<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* 屬性，指定第四版的簽章簽署將用於所有請求 (true) 或第四版的簽章簽署將不會用於所有請求 (false，預設)。此屬性從 適用於 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.EC2Config.UseSignatureVersion4` 屬性對應到 `Amazon.Util.EC2Config.UseSignatureVersion4` 屬性。

`<ec2>` 的父系為此元素。

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

以下為範例使用的 `<ec2>` 元素：

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

#### 日誌
<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 資料表 (從 適用於 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.DynamoDBConfig.Context.TypeMappings` 屬性對應到 `TypeMapping` 類別的執行個體) 之類型到資料表 (type-to-table) 對應集合中的單一項目，如需詳細資訊，請參閱 [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>
```

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

`<property>` 元素表示 DynamoDB 屬性。（此元素對應至 中 `AddProperty`方法的 Amazon.Util.PropertyConfig 類別執行個體 適用於 .NET 的 AWS SDK) 如需詳細資訊，請參閱 [ DynamoDB SDK 和 DynamoDB 屬性的增強功能](http://blogs.aws.amazon.com/net/post/Tx2C4MHH2H0SA5W/Enhancements-to-the-DynamoDB-SDK)。 [DynamoDB ](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 要使用之代理程式的設定。這個元素可以包含下列屬性：

**託管**  
代理伺服器的主機名稱或 IP 地址。此屬性從 適用於 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.ProxyConfig.Host` 屬性對應到 `Amazon.Util.ProxyConfig.Host` 屬性。

**密碼**  
此密碼使用代理伺服器的進行身分驗證。此屬性從 適用於 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.ProxyConfig.Password` 屬性對應到 `Amazon.Util.ProxyConfig.Password` 屬性。

**port**  
此代理的連接埠號碼。此屬性從 適用於 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.ProxyConfig.Port` 屬性對應到 `Amazon.Util.ProxyConfig.Port` 屬性。

**使用者名稱**  
使用代理伺服器進行身分驗證的使用者名稱。此屬性從 適用於 .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* 屬性，指定第四版的簽章簽署將用於所有請求 (true) 或第四版的簽章簽署將不會用於所有請求 (false，預設)。此屬性對應到 適用於 .NET 的 AWS SDK中的 `Amazon.AWSConfigs.S3Config.UseSignatureVersion4` 屬性。

`<s3>` 元素的父系為 `<aws>` 元素。

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

以下為範例使用的 `<s3>` 元素：

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