Amazon web services AWS DotNet核心凭据

Amazon web services AWS DotNet核心凭据,amazon-web-services,.net-core,aws-sdk-net,Amazon Web Services,.net Core,Aws Sdk Net,我有一个现有的dotnet核心web应用程序,当我在本地开发时,我需要使用[default]以外的配置文件 我遇到了一个问题,凭证文件的位置似乎尚未默认为~/.aws/credentials。根据检查,如果在创建SSM客户端之前设置了AWSConfigs.AWSProfileName的值,那么2应该可以工作,但是它没有,只是通过剩余的流,并抛出一个错误,说它找不到EC2元数据。检查3的情况也是如此。当凭证位于[default]定义中时,检查4将成功,我预计如果默认值尚未初始化,也会失败。我有多个

我有一个现有的dotnet核心web应用程序,当我在本地开发时,我需要使用[default]以外的配置文件

我遇到了一个问题,凭证文件的位置似乎尚未默认为~/.aws/credentials。根据检查,如果在创建SSM客户端之前设置了
AWSConfigs.AWSProfileName
的值,那么2应该可以工作,但是它没有,只是通过剩余的流,并抛出一个错误,说它找不到EC2元数据。检查3的情况也是如此。当凭证位于[default]定义中时,检查4将成功,我预计如果默认值尚未初始化,也会失败。我有多个AWS帐户,我根据配置文件从SSO系统获得临时安全令牌,由于临时令牌要求,我无法使用[default]配置文件,因为我需要能够在它们之间切换以运行相同的代码库

我已经能够通过显式访问凭证存储并生成一组凭证传递到SSM客户机的构造函数来绕过这个问题

Amazon.Runtime.CredentialManagement.CredentialProfile developerProfile;
AmazonSimpleSystemsManagementClient ssmClient;
if(new Amazon.Runtime.CredentialManagement.SharedCredentialsFile().TryGetProfile(配置[“AWS:Profile”],out developerProfile))//测试以确定是否有带有配置文件的本地凭据文件
{
AWSCredentials credentials=new Amazon.Runtime.sessionawscdentials(developerProfile.Options.AccessKey、developerProfile.Options.SecretKey、developerProfile.Options.Token);
ssmClient=新AmazonSimpleSystemsManagementClient(凭证,developerProfile.Region);
}
其他的
{
ssmClient=新AmazonSimpleSystemsManagementClient(地区);
}
上面的代码段旨在允许使用特定的配置文件和文件位置在本地运行,并且当其中一个配置文件和文件不存在时,假定它正在EC2或ECS环境中运行,并且可以从元数据中获取凭据

需要访问AWS参数存储的代码位置位于
Startup
方法中,以便在运行
ConfigureServices
方法之前可以初始化其他属性。在
ConfigureServices
运行后,我有额外的AWS服务,可以按照预期为该工作初始化客户端。我是否应该在运行
ConfigureServices
方法之前正确初始化凭据提供程序