在我们的应用程序中,我们使用自定义角色访问aws API。在开发人员环境中,我们在app.config中提供了访问密钥和密钥,效果很好。
在prod环境中,我们设置了一个IAM角色,该角色具有对自定义角色的必要权限,EC2实例将使用该IAM角色启动。当我们试图使用代码切换角色时,我们得到的错误
消息:用户:arn:aws:sts::XXXXXXXX:假定的角色//i-0490fbbb5ea7df6a8未被授权在资源上执行:sts:AssumeRole:arn:aws:iam::XXXXXXXXXX:角色//strong>
代码:
AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient();
AssumeRoleResponse assumeRoleResponse = await stsClient.AssumeRoleAsync(new AssumeRoleRequest
{
RoleArn = roleArn,
RoleSessionName = sessionName
});
var sessionCredentials = new SessionAWSCredentials(assumeRoleResponse.Credentials.AccessKeyId, assumeRoleResponse.Credentials.SecretAccessKey, assumeRoleResponse.Credentials.SessionToken);
AmazonS3Client s3Client = new AmazonS3Client(sessionCredentials);
政策详细信息:
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::account_id:role/role-name"
这方面的任何帮助都将是伟大的。提前谢谢。
我们通过在自定义角色的信任关系中添加以下策略来解决问题。
{
"Effect": "Allow",
"Principal": {
"AWS": "<ARN of role that has to assume the custom role>"
},
"Action": "sts:AssumeRole"
}