在.Net应用程序中同时使用多个AWSProfileNames

时间:2018-02-21 06:00:09

标签: c# asp.net .net amazon-web-services aws-sdk

设置
我正在构建一个需要访问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);

我目前的解决方案是定义键和键。直接在配置文件中保密,然后我将以编程方式访问并在初始化期间将值传递给客户端 - 但我希望避免这种情况。

有什么想法吗?谢谢!

0 个答案:

没有答案