文档冲突
与AssumeRole
相关的documentation here似乎在一个连续的块中自相矛盾:
您必须使用现有的IAM用户凭据来调用此API。更多 信息,请参阅创建角色以将权限委派给IAM 用户和配置受MFA保护的API访问。
这是一个未签名的电话,意味着该应用不需要 访问任何AWS安全凭证以进行通话。
矛盾被强调为粗体。
代码示例
code sample provided here当然似乎需要凭据:
AmazonSecurityTokenServiceClient securityTokenServiceClient = new AmazonSecurityTokenServiceClient(
Config.AccessKey,
secretKeyAsString,
securityTokenServiceConfig);
...
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest
{
DurationSeconds = sessionDurationSec,
RoleArn = roleArn,
RoleSessionName = awsUsername,
ExternalId = groupSid
};
...
assumeRoleResponse = securityTokenServiceClient.AssumeRole(assumeRoleRequest);
总结
哪个是真的?代码示例中的请求真的是多余的吗?
谢谢!
答案 0 :(得分:2)
AssumeRole
API调用确实需要现有的AWS凭据。
为了承担IAM角色,必须使用现有的一组凭据,以便AWS知道谁在担任该角色。这样AWS就可以验证假定方可以担任该角色。
在文档中:
这是一个未签名的电话,这意味着该应用无需访问任何AWS安全凭证即可进行通话。
这似乎是不正确的信息。
答案 1 :(得分:1)
这确实是文档中的错误,正在纠正过程中。 AssumeRole确实需要现有的长期(IAM用户)或临时凭证凭证才能调用。它是两个联邦等价物,AssumeRoleWithSAML和AssumeRoleWithWebIdentity,可以在没有凭证的情况下调用。抱歉混乱!