

 适用于 .NET 的 AWS SDK V3 已进入维护模式。

我们建议您迁移到 [适用于 .NET 的 AWS SDK V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)。有关如何迁移的更多详细信息和信息，请参阅我们的[维护模式公告](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

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

# 使用 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/aws-sdk-net-v3.7/extensions/src/AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v3.7/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/v3/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;
    }

    ...

}
```