当使用AWS SDK尝试假定角色时,可能会遇到“Access Denied”错误,虽然相同的操作用AWS CLI是成功的。这通常是因为AWS SDK使用的IAM用户缺少必要的权限来访问角色。
解决此问题的方法是确保在以下代码中使用的IAM用户拥有假定角色的权限:
AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient();
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest()
{
RoleArn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME",
RoleSessionName = "SESSION_NAME",
};
AssumeRoleResponse assumeRoleResponse = stsClient.AssumeRole(assumeRoleRequest);
为IAM用户分配必要的权限可以通过以下步骤完成:
请注意,如果IAM用户仅在对应于目标帐户的同一区域中创建,则假定角色可能仍会失败。在这种情况下,您需要在“RoleArn”中指定适当的区域,如下所示:
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest()
{
RoleArn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME",
RoleSessionName = "SESSION_NAME",
ClientRegion = RegionEndpoint.USEast1 //或适当的区域
};