本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWSSDK.Extensions.NETCore.Setup 和 IConfiguration 界面
(本主题之前的标题是“使用.NET Core 配置Amazon SDK for .NET”)
.NET Core 中最大的改变之一是删除了以前在 .NET Framework 和 ASP.NET 应用程序中使用的 ConfigurationManager
以及标准 app.config
和 web.config
文件。
.NET Core 中的配置基于配置提供商建立的键/值对。配置提供商将配置数据从各种配置源读取为键/值对,包括命令行参数、目录文件、环境变量和设置文件。
注意
有关更多信息,请参阅 ASP.NET Core 中的配置
为了便于将Amazon SDK for .NET与 .NET Core 结合使用,您可以使用 AWSSDK.Extensions.NETCore.SetupIConfiguration
配置。
使用 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
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.S3
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; } ... }