我在使用 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 安装程序应尝试根据环境变量配置凭证,但无法实现更高优先级的选项。
但是,我发现它能够导入AWS配置文件,但不能导入环境变量。
我一直在控制台应用程序下的以下存储库中调查是否有人愿意重现。 https://github.com/aws/aws-sdk-net/issues/1717
我采取了以下解决方法。没关系,但最好知道 .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 );
});
我遇到了同样的问题,我解决了以下问题:
AWS 开发工具包在使用环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN)设置的会话凭证之前先使用[默认]配置文件凭证。
SDK 不会验证[默认]配置文件凭据,它只关心它们是否存在。
从凭证文件中删除[默认]配置文件后,SDK 按照我最初的预期使用了环境变量。
凭证文件通常位于“~/.aws/credentials”。