带有环境变量和依赖注入.NET Core的AWS开发工具包配置

问题描述

我无法让AWS Setup Extension来处理环境变量。

遵循AWS Docs + Unofficial Docs上的说明。

在启动文件中,添加以下配置和服务。

 services.AddDefaultAWSOptions(root.GetAWSOptions());
 services.AddAWSService<IAmazonDynamoDB>();

我的配置包括一个带有AWS设置以及环境变量的JSON文件

    public static IConfigurationRoot Configuration  => new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json",optional: false,reloadOnChange: true)
    .AddEnvironmentvariables()
    .Build();

根据下图和Unofficial Docs。 AWS Setup应该尝试从优先级选项失败的环境变量中配置凭证。

enter image description here

但是,我发现它能够导入AWS配置文件,但不能导入环境变量。

如果有人愿意复制,我一直在研究控制台应用程序下的以下回购。 https://github.com/aws/aws-sdk-net/issues/1717

解决方法

我已采取以下解决方法。很好,但是最好知道该文档对于.NET Core是否不正确,或者I @ m做错了什么。

            services.AddSingleton<IAmazonDynamoDB>(sp =>
            {
                var clientConfig = root.GetAWSOptions();
                var credentials = new BasicAWSCredentials(
                    System.Environment.GetEnvironmentVariable("AWS_ACCESS_KEY_ID"),System.Environment.GetEnvironmentVariable("AWS_SECRET_ACCESS_KEY")); // default credentials no need real one                    
                return new AmazonDynamoDBClient(credentials,clientConfig.Region );
            });