从实例配置文件中检索 IAM 角色以与 v4 签名者一起使用

Retrieve IAM Role from Instance Profile for Use With v4 Signer

我正在尝试实现与我使用 AWS .NET SDK 的 Ruby 示例代码相同的结果,但 运行 在查询实例配置文件凭证时遇到了麻烦。 .NET SDK 似乎在查询实例配置文件时隐藏了凭据提供程序。但是,我需要了解它,以便我可以使用它来签署 STS 请求并将其传递给使用该信息进行身份验证的 API。到目前为止,我还没有找到查询实例配置文件并承担 IAM EC2 角色的方法。

有没有人知道如何做到这一点?

Ruby:

request = Aws::Sigv4::Signer.new(
  service: 'sts',
  region: 'us-east-1',
  credentials_provider: Aws::InstanceProfileCredentials.new
).sign_request(
  http_method: 'GET',
  url: 'https://sts.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15'
).headers

我试图避免的是在实例上存储任何凭据。但是,v4 signer 方法的签名是:

var signer = new Amazon.Runtime.Internal.Auth.AWS4Signer();
signer.SignRequest(IRequest request, IClientConfig clientConfig, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey);

此代码将在 EC2 实例上 运行。

如有任何帮助,我们将不胜感激!

我能够使用 Amazon.Runtime.InstanceProfileAWSCredentials.GetCredentials() 调用获取临时凭据,我可以使用这些凭据作为 IAM 角色查询其他内容。