使用 AWSSDK.Extensions.NETCore.Setup 和 IConfiguration 界面 - Amazon SDK for .NET
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 AWSSDK.Extensions.NETCore.Setup 和 IConfiguration 界面

(本主题之前的标题是“使用.NET Core 配置Amazon SDK for .NET”)

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

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

注意

有关更多信息,请参阅 ASP.NET Core 中的配置

为了便于将Amazon SDK for .NET与 .NET Core 结合使用,您可以使用 AWSSDK.Extensions.NETCore.Setup NuGet 程序包。与许多 .NET Core 库一样,它将扩展方法添加到 Amazon 接口,以实现无缝获取 IConfiguration 配置。

使用 AWSSDK.Extensions.NETCore.Setup

假设您创建了一个 ASP.NET Core 模型视图控制器(MVC)应用程序,该应用程序可以使用 Visual Studio 中的 ASP.NET Core Web Application 模板或在 .NET Core CLI 中运行 dotnet new mvc ... 来完成。创建此类应用程序时,Startup.cs 的构造函数通过从配置提供商读取各种输入源来处理配置,例如读取 appsettings.json

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

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

请注意,添加到您项目中的其中一个文件是 appsettings.Development.json。这就代表 EnvironmentName 设置为 Development。在开发过程中,将配置放入此文件中,该文件只能在本地测试期间读取。在您部署将 EnvironmentName 设置为 Production 的 Amazon EC2 实例时,将忽略此文件并且Amazon SDK for .NET回退到为 Amazon EC2 实例配置的 IAM 凭证和区域。

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

{ "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>

要访问在文件中从代码设置的 Amazon 选项,请调用在 IConfiguration 上添加的 GetAWSOptions 扩展方法。

要从这些选项构造服务客户端,请调用 CreateServiceClient。以下示例代码说明了如何创建 Amazon S3 服务客户端。(请务必将 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 文件中允许的值

以下应用程序配置值可以在 appsettings.Development.json 文件中设置。字段名必须使用所示的大小写。有关这些设置的详细信息,请参阅 AWS.Runtime.ClientConfig 类。

  • 区域

  • 配置文件

  • ProfilesLocation

  • SignatureVersion

  • RegionEndpoint

  • UseHttp

  • ServiceURL

  • AuthenticationRegion

  • AuthenticationServiceName

  • MaxErrorRetry

  • LogResponse

  • BufferSize

  • ProgressUpdateInterval

  • ResignRetries

  • AllowAutoRedirect

  • LogMetrics

  • DisableLogging

  • UseDualstackEndpoint

ASP.NET Core 依赖关系注入

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

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

有关 .NET Core 中依赖关系注入的背景信息在 .NET Core 文档网站上提供。

以下 AWSSDK.Extensions.NETCore.Setup NuGet 程序包将新的扩展方法添加到 IServiceCollection,您可用来将 Amazon 服务添加到依赖关系注入。以下代码演示如何添加从 IConfiguration 读取的 Amazon 选项,用于将 Amazon S3 和 DynamoDB 添加到服务列表中。(请务必将 AWSSDK.S3AWSSDK.DynamoDBv2 程序包添加到您的项目)。

public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonS3>(); services.AddAWSService<IAmazonDynamoDB>(); }

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

public class HomeController : Controller { IAmazonS3 S3Client { get; set; } public HomeController(IAmazonS3 s3Client) { this.S3Client = s3Client; } ... }