Amazon web services AWS假定在使用SDK时角色访问被拒绝

Amazon web services AWS假定在使用SDK时角色访问被拒绝,amazon-web-services,sdk,amazon-iam,assume-role,Amazon Web Services,Sdk,Amazon Iam,Assume Role,我正在使用GoSDK创建一个新角色并承担它。这两项都是使用相同的IAM用户完成的。 角色信任关系如下所示: { "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "<an admin user>" }, "Action": [ "sts:AssumeRole" ] }] } { “声明”:[{ “效果”:“允许”, “委托人”:{“AWS”:“}, “行动

我正在使用GoSDK创建一个新角色并承担它。这两项都是使用相同的IAM用户完成的。 角色信任关系如下所示:

{
    "Statement": [{
        "Effect": "Allow",
        "Principal": { "AWS": "<an admin user>" },
        "Action": [ "sts:AssumeRole" ]
    }]
}
{
“声明”:[{
“效果”:“允许”,
“委托人”:{“AWS”:“},
“行动”:[“sts:假设角色”]
}]
}
稍后,当尝试将对象添加到bucket时,我可以创建一个会话令牌, 但是PutObject操作失败,访问被拒绝。 桶策略是:

{
      "Effect": "Allow",
      "Action":"s3:*",
      "Resource": [
        "arn:aws:s3:::<name of the bucket>/*"
      ],
      "Condition": {}
}
{
“效果”:“允许”,
“行动”:“s3:*”,
“资源”:[
“arn:aws:s3::/*”
],
“条件”:{}
}

如果您假设的角色没有通过角色策略授予对S3 bucket的访问权限,则需要将角色作为主体添加到bucket策略中

这里有一个方便的工具;这有助于生成bucket策略。但最终应该是这样的:

{
      "Effect": "Allow",
      "Action":"s3:*",
      "Principal": {
          "AWS": ["arn:aws:iam::<accountid>:role/<name of assumed role>"]
      },
      "Resource": [
        "arn:aws:s3:::<name of the bucket>/*"
      ],
      "Condition": {}
}
{
“效果”:“允许”,
“行动”:“s3:*”,
“委托人”:{
“AWS”:[“arn:AWS:iam:::角色/”]
},
“资源”:[
“arn:aws:s3::/*”
],
“条件”:{}
}