使用 AWSSDK.Extension s.NETCore.Setup 和 I 配置接口 - Amazon SDK for .NET
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

是否要将 .NET 应用程序部署到Amazon通过几个简单点击即可? 尝试我们的新.NET CLI 工具为了简化部署体验!阅读我们的博客帖子然后提交反馈GitHub

有关更多信息,请参阅部署工具

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

使用 AWSSDK.Extension s.NETCore.Setup 和 I 配置接口

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

.NET Core 中最大的变化之一是删除ConfigurationManager和标准app.configweb.config与 .NET Framework 和 ASP.NET 应用程序一起使用的文件。

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

注意

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

为了更简便地将Amazon SDK for .NET使用 .NET Core,您可以使用AWSSDK. 扩展 .NET CORE.Setup (安装程序)NuGet 程序包。与许多 .NET Core 库一样,它将扩展方法添加到IConfiguration用于获取Amazon无缝配置。

使用 AWSSDK.Extensions.NETCore.Setup

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

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

使用Configuration对象来获取Amazon选项,首先添加AWSSDK.Extensions.NETCore.SetupNuGet 程序包。然后,将选项添加到配置文件,如下所述。

请注意,添加到您的项目的文件之一是appsettings.Development.json. 这对应于EnvironmentName设置为开发. 在开发过程中,您将配置放在此文件中,该文件只能在本地测试期间读取。当您部署具有EnvironmentName设置为生产,此文件将被忽略并且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代码文件中设置的选项,请调用GetAWSOptions已添加扩展方法IConfiguration.

要从这些选项构造服务客户端,请调用 CreateServiceClient。以下示例说明如何创建 Amazon S3 服务客户端。(请务必添加AWSSDK.S3NuGet 程序包。)

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

appset 文件中允许的值

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

  • 区域

  • Profile

  • ProfilesLocation

  • 签名版本

  • RegionEndpoint

  • UseHttp

  • ServiceURL

  • AuthenticationRegion

  • AuthenticationServiceName

  • MaxErrorRetry

  • LogResponse

  • BufferSize

  • ProgressUpdateInterval

  • ResignRetries

  • AllowAutoRedirect

  • LogMetrics

  • DisableLogging

  • UseDualstackEndpoint

ASP.NET Core 依赖关系注入

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

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

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

这些区域有:AWSSDK.Extensions.NETCore.SetupNuGet 软件包添加了新的扩展方法IServiceCollection你可以用来添加Amazon对依赖注入的服务。以下代码演示如何添加Amazon从中读取的选项IConfiguration将 Amazon S3 和 DynamoDB 添加到服务列表中。(请务必添加AWSSDK.S3AWSSDK.DynamoDBv2NuGet 包裹到你的项目中。)

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; } ... }