首页 > 解决方案 > 具有环境变量和依赖注入 .NET Core 的 AWS 开发工具包配置

问题描述

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

按照AWS 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();

根据下图和非官方文档。AWS 设置应尝试从环境变量配置凭证,但较高优先级选项失败。

在此处输入图像描述

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

如果有人愿意重现,我一直在控制台应用程序下的以下存储库中进行调查。 https://github.com/aws/aws-sdk-net/issues/1717

标签: aws-sdk-net

解决方案


我采用了以下解决方法。没关系,但最好知道文档对于 .NET Core 是否不正确,或者我是否做错了什么。

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

推荐阅读