问题描述
版本
- .net core sdk v3.1.301
- AWSSDK.Extensions.NETCore.Setup v3.3.101
- AWSSDK.IdentityManagement v3.3.106.19
- AWSSDK.SecurityToken v3.3.105.30
定义
由于该问题涉及不同类型的AWS凭证,因此我认为定义我正在使用的术语会有所帮助
应用程序凭据-.NET Core AWS SDK在启动时加载的AWS凭据
承担角色凭证-在运行时从STS获得的临时AWS凭证
问题
我正在编写一些使用AWS开发工具包与AWS交互的代码。在使用AWS开发工具包时,我倾向于使用依赖注入容器中内置的ASP.NET Core注入服务客户端:
services.AddAWSService<IAmazonIdentityManagementService>();
services.AddAWSService<IAmazonSecurityTokenService>();
当您要使用应用程序凭据时,此方法很好用。 AWS客户端的注入和实例按预期工作
public class IamService : IIamService
{
private readonly IAmazonIdentityManagementService _iamClient;
public IamService(IAmazonIdentityManagementService iamClient)
{
_iamClient = iamClient;
}
}
但是,我的应用程序需要在多个帐户中扮演多个角色
AssumeRoleRequest request = new AssumeRoleRequest()
{
RoleSessionName = "MySession",RoleArn = "arn:aws:iam::123456789012:role/MyRole"
};
AssumeRoleResponse response = await _service.AssumeRoleAsync(request);
_service
的类型为IAmazonSecurityTokenService
然后new
我对AWS开发工具包的所有调用
AmazonIdentityManagementServiceClient service =
new AmazonIdentityManagementServiceClient(response.Credentials);
问题
是否有一种更干净的方法可以处理,这意味着我不必在所有地方实例化新的SDK客户端?
我希望可以采用某种神奇的方式来配置DI容器,例如,如果提供了假设角色凭证,然后使用这些凭证注入AWS开发工具包的实例,否则使用应用程序凭证-经过大量的Google搜索我找不到任何暗示可能的事...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)