设置
我正在构建一个需要访问AWS SQS和S3的.Net应用程序。
到目前为止,我已使用AWS的首选方法(putting them in a credentials file)为单个帐户定义了AWS凭证。
所以,我的凭证文件位于:
C:\aws_service_credentials\credentials
看起来像这样:
[default]
aws_access_key_id = ACCESS_KEY_01
aws_secret_access_key = SECRET_KEY_01
我的App.Config
文件如下所示:
<appSettings>
<add key="AWSProfileName" value="default" />
<add key="AWSProfilesLocation" value="C:\aws_service_credentials\credentials" />
</appSettings>
这非常有效,我可以直接在代码中初始化我的客户端,例如:
var sqsClient = new AmazonSQSClient(Amazon.RegionEndpoint.USEast1);
问题
现在,我被告知S3凭据将属于一个单独的客户帐户 - Say Client01和SQS凭据将属于另一个帐户 - Client02。
这两个客户帐户在同一个AWS账户下不,并且是完全独立的。
问题
是否可以使用凭证文件实现此方案?
我知道我可以在Credentials文件中创建多个配置文件。例如:
[client01]
aws_access_key_id = ACCESS_KEY_01
aws_secret_access_key = SECRET_KEY_01
[client02]
aws_access_key_id = ACCESS_KEY_02
aws_secret_access_key = SECRET_KEY_02
但是如何在运行时以编程方式切换?
能够做到这样的事情会很棒:
的AppSettings
<appSettings>
<add key="AWSProfilesLocation" value="C:\aws_service_credentials\credentials" />
</appSettings>
代码:
var sqsClient = new AmazonSQSClient("client02", Amazon.RegionEndpoint.USEast1);
var s3Client = new AmazonSQSClient("client01", Amazon.RegionEndpoint.USEast1);
我目前的解决方案是定义键和键。直接在配置文件中保密,然后我将以编程方式访问并在初始化期间将值传递给客户端 - 但我希望避免这种情况。
有什么想法吗?谢谢!