

第 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)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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;
    }

    ...

}
```