0

DefaultAWSCredentialsProviderChain 中使用的 ProfileConfigFileAWSCredentialsProvider 只会忽略~/.aws/config和中的角色~/.aws/credentials。STSProfileCredentialsProvider 看起来好像是用于此目的,但 1)它未在 DefaultAWSCredentialsProviderChain 中使用,因此您必须明确使用它,以及 2)它仅读取config. #2 表示,例如,如果基于角色的配置文件指定了源配置文件,并且源配置文件的凭据在其中,credentials则 STSProfileCredentialsProvider 将无法找到源配置文件的凭据,然后将无法获取角色的临时凭据。

4

1 回答 1

1

这实际上是由 AWS C++ SDK 中的一个问题引起的,其中 DefaultCredentialsProviderChain 忽略了具有假定角色的配置:https ://github.com/aws/aws-sdk-cpp/issues/150 但是,我们需要找到一种解决方法早在 2016 年就承诺“非常快”地解决这个问题,但仍未解决,事实上这个问题现在已经解决了。

编辑:这里还有另一个问题https://github.com/aws/aws-sdk-cpp/issues/1330

看来您唯一的选择是自己使用 Aws::Config::GetCachedConfigProfile(Aws::Auth::GetConfigProfileName()) 之类的东西找到活动配置文件,然后使用 GetRoleArn()/GetSourceProfile() 并自己调用 STS 服务来自源配置文件的凭据。

如果您找到更好的解决方案,请告诉我!

于 2020-03-01T15:11:40.327 回答