要授予访问权限,策略必须执行的操作具有适用的资源或条件

hak*_*nin 5 amazon-s3 amazon-web-services

政策json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "...",
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::bucket-name"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是在AWS控制台中显示为警告的内容:

此策略定义一些不提供权限的操作,资源或条件。要授予访问权限,策略必须执行的操作具有适用的资源或条件。

该警告中甚至提供了指向此处的链接:http : //docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html?icmpid=docs_iam_console#policy-summary-not-grant-permissions

但是尝试他们的建议无济于事,策略摘要仍然抱怨,而且我仍然无法从我的代码访问存储桶。

更新:当我将资源设置为"Resource": "*"它时,它在控制台中停止抱怨,但是代码仍然无法上传到存储桶。

Update2:问题是我的代码中的存储桶名称不正确(因为我尝试了其他教程,但未更改其中的存储桶名称)。

Z.W*_*Wei 9

我遇到的原因之一是我将存储桶资源列为:

arn:aws:s3:::my-datasets
arn:aws:s3:::my-datasets/*
Run Code Online (Sandbox Code Playgroud)

但是在我的“我的数据集”存储桶下没有子文件夹。因此,“/*”使 AWS 感到困惑,因为当它评估此策略时,它在“my-datasets”下找不到任何内容。在“我的数据集”下创建了一个新文件夹后,警告消失了。