具有环境变量和依赖项注入的AWS SDK配置.NET Core

问题描述 投票:0回答:2

我在使用 AWS 设置扩展来处理环境变量时遇到问题。

遵循 AWS 文档 + 非官方文档上的说明。

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

 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 安装程序应尝试根据环境变量配置凭证,但无法实现更高优先级的选项。

enter image description here

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

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

aws-sdk-net
2个回答
1
投票

我采取了以下解决方法。没关系,但最好知道 .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 );
            });

0
投票

我遇到了同样的问题,我解决了以下问题:

AWS 开发工具包在使用环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN)设置的会话凭证之前先使用[默认]配置文件凭证。

SDK 不会验证[默认]配置文件凭据,它只关心它们是否存在。

从凭证文件中删除[默认]配置文件后,SDK 按照我最初的预期使用了环境变量。

凭证文件通常位于“~/.aws/credentials”。

© www.soinside.com 2019 - 2024. All rights reserved.