以编程方式写入 AWS S3 -returns- root 帐户不能承担角色。

write to AWS S3 programatically -returns- Roles may not be assumed by root accounts.

com.amazonaws.AmazonClientException: com.amazonaws.AmazonServiceException: 根帐户不能承担角色。 (服务:AWSSecurityTokenService;状态代码:403;错误代码:AccessDenied;

我创建了一个角色,它的信任关系是:

    {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<awsID>:root",
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

我什至尝试创建一个策略并将其分配给我的角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::secorbackup"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::secorbackup/*"
            ]
        }
    ]
}

似乎没有任何效果。我遇到了同样的错误。我正在使用 pinterest/secor 从 kafka 到 s3 的日志持久性。有什么建议吗?

Roles may not be assumed by root accounts.

这个错误就是它所说的。

在任何情况下,您都不能在使用根帐户时担任角色。您必须使用 IAM 帐户。

对此没有其他解决方法。该行为是设计使然。