当前位置: 首页 > 知识库问答 >
问题:

AWS承担EC2实例IAM角色不工作的角色

禄烨然
2023-03-14

在我们的应用程序中,我们使用自定义角色访问aws API。在开发者环境中,我们在app.config中提供访问密钥和秘密密钥,它工作得很好。

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

消息:用户:arn:aws:sts::XXXXXXXXX:假定角色//i-0490fbbb5ea7df6a8无权在资源上执行:sts:AssumeRole:arn:aws:iam::XXXXXXXXXXXXX:角色/

代码:

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"

这方面的任何帮助都会很好。提前谢谢。

共有1个答案

戚繁
2023-03-14

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

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "<ARN of role that has to assume the custom role>"
  },
  "Action": "sts:AssumeRole"
}
 类似资料:
  • 获取错误 引起原因:org.springframework.beans.BeanInstantiationExc0019:未能实例化[software.amazon.awssdk.services.dynamodb.DynamoDbClient]:工厂方法'amazonDynamoDB'抛出异常;嵌套异常java.lang.NullPointerExc0019: STS客户端不得为空。atspri

  • 是否可以将IAM角色链接到Cognito用户池中Cognito用户的Cognito组? 我的配置: Cognito用户池: 认知用户属于 认知组已分配给. null null 这段代码允许我对Cognito用户池进行身份验证: 然后从cognito标识池中获取链接到cognito用户池的凭据:

  • 问题内容: 我有两个AWS账户-假设A和B. 在帐户B中,我定义了一个角色,该角色允许从帐户A中访问另一个角​​色。我们称其为角色B 在帐户A中,我定义了一个角色,该角色允许root用户承担角色。让我们称之为角色A 角色A附加了以下策略 作为帐户A的用户,我担任角色A。现在使用此临时凭据,我想承担角色B并访问帐户B拥有的资源。我有以下代码 该代码适用于我从客户端获得的一组角色,但不适用于我在我有权

  • 场景:我在同一个帐户下有一个EC2实例和一个S3 bucket,我在该EC2上的web应用程序希望访问该bucket中的资源。 在官方文档之后,我使用创建了一个IAM角色,并将其分配给EC2实例。根据我的理解,现在我的web应用程序应该可以访问桶。但是,经过试验,我似乎必须添加桶策略,如下所示: 否则我就被禁止进入。 但是,既然我已经向EC2实例授予了IAM角色,为什么还要使用这个桶策略呢?

  • 我正在设置一些文件传输脚本,并正在使用boto3来做这件事。 我需要从本地发送一些文件到第三方AWS帐户(跨帐户)。我在另一个帐户上设置了一个角色,具有写入桶的权限,并将此角色分配给了我帐户上的一个用户。 我可以在CLI上做到这一点,但Boto一直在为桶踢出一个AccessDenied错误。 编辑:作为对John的多部分权限评论的回应,我尝试通过put_object方法上传以绕过此操作-但仍然被访

  • 我已经启动了一个具有IAM角色“WebApp”的EC2实例。角色已附加,我可以使用 webapp角色具有S3的附加策略 我也需要更改bucket权限吗?或者我在Conf上做错了什么。EC2的?