首页 文章

AWS Assume角色与EC2实例IAM角色无法正常工作

提问于
浏览
1

在我们的应用程序中,我们使用自定义角色访问aws API . 在开发人员环境中,我们在app.config中提供了访问密钥和密钥,它运行良好 .

在prod环境中,我们设置了具有自定义角色必要权限的IAM角色,并使用该IAM角色启动EC2实例 . 当我们尝试使用代码切换角色时,我们会遇到错误

Message: User: arn:aws:sts::XXXXXXXXX:assumed-role//i-0490fbbb5ea7df6a8 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::XXXXXXXXXX:role/

Code:

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);

Policy details:

"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::account_id:role/role-name"

对此的任何帮助都会很棒 . 提前致谢 .

1 回答

  • 2

    我们通过在自定义角色的受信任关系中添加以下策略来解决此问题 .

    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "<ARN of role that has to assume the custom role>"
      },
      "Action": "sts:AssumeRole"
    }
    

相关问题