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

S3 Bucket操作不适用于任何资源

翁翰墨
2023-03-14

我将按照此答案中的说明生成以下S3桶策略:

{
  "Id": "Policy1495981680273",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1495981517155",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::surplace-audio",
      "Principal": "*"
    }
  ]
}

我返回以下错误:

操作不适用于语句中的任何资源

我的政策遗漏了什么?

共有3个答案

岑熙云
2023-03-14

错误操作不适用于语句中的任何资源

简单地说,这意味着操作(您在策略中编写的)不适用于资源。我试图公开我的桶,这样任何人都可以从我的桶下载。我得到的错误,直到我删除(s3: ListBucket)从我的语句。

{
  "Id": "Policyxxxx961",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmtxxxxx4365",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucket-name/*",
      "Principal": "*"
    }
  ]
}

因为list bucket不适用于bucket内部,所以删除此操作策略效果很好。

庾才
2023-03-14

仅仅删除s3:ListBucket权限对我来说并不是一个很好的解决方案,对很多其他人来说可能也不是。

如果你想要s3:ListBucket权限,你只需要拥有bucket的普通arn(末尾没有/*),因为该权限适用于bucket本身,而不是bucket中的项目。

如下所示,您必须将s3: ListBucket权限作为与桶中的项相关的权限(如s3: GetObjects3: PutObject)的单独语句:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"        
      ],
      "Principal": {
        "AWS": "[IAM ARN HERE]"
      },
      "Resource": "arn:aws:s3:::my-bucket-name"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject", 
        "s3:PutObject"
      ],
      "Principal": {
        "AWS": "[IAM ARN HERE]"
      },
      "Resource": "arn:aws:s3:::my-bucket-name/*"
    }
  ]
}
贺卜霸
2023-03-14

来自IAM docs,http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action

有些服务不允许您为单个资源指定操作;相反,您在Action或NotAction元素中列出的任何操作都适用于该服务中的所有资源。在这些情况下,可以在资源元素中使用通配符*。

有了这些信息,资源的值应该如下所示:

"Resource": "arn:aws:s3:::surplace-audio/*"
 类似资料:
  • 我试图在wordpress中使用AMP与表单动作。我使用action-xhr与POST方法。 当我提交表单时,它会给出错误信息 响应必须包含AMP-访问-控制-允许-源-起源头 表单提交失败:错误:响应必须包含AMP-访问-控制-允许-源-源头 甚至尝试添加标题,如下所示 这个问题仍然存在。有什么建议吗? 我使用的是wordpress版本5.0.3

  • 拖放操作不适用于selenium 3.8。 下面是该元素的JS代码 这就是我尝试过的。但这只是选择元素。保持和放弃是不会发生的。 我也试过这个。 也尝试过机器人。每次我只能看到源元素和目标元素都被选中。但不是被拖拽掉的。 还尝试了dragAndDrop ActionsChain。那也没用。

  • 我在SQL Server 2014上使用Kafka Connect和Confluent MSSQL connector。我尝试了插入和更新操作,它们工作正常,将正确的记录推送到Kafka。如果我删除了一条记录,我会收到以下关于Kafka主题的消息: 相反,我希望删除记录的详细信息。 我使用以下命令启用CDC:

  • 我正在尝试通过NIFI从oracle数据库中提取数据。在画布中,我将文件大小为0 KB的“GenerateFlowFile”处理器安排为每5分钟运行一次。这只是为了在成功时触发“executesql”处理器。对于“executeSQL”,我将DB连接池服务设置为DBCPConnectionPool。我输入SQL查询“select*FROM sometable”。我的DBCPConnectionPo

  • 在安装了最新浏览器的情况下使用Selenium w/Java绑定和ChromeDriver 2.3 在花了足够多的时间试图找到一个解决方案后,我现在被难倒了。我正在尝试将一个元素拖放到另一个元素。唯一需要注意的是,我需要移动到的元素目标只有在移动源元素后才可见。有什么建议吗? 因此,这里是我点击并按住的源元素的屏幕截图,然后拖动它,我也可以删除两个选项: 元素是源 因此,当我按住鼠标并拖动一小部分

  • 我发现Http 207可以用于批量插入/删除/。。。等等。从业务角度来看,我们可能会插入多个项目,并且部分成功。 我想知道如果我们有API Post调用一些外部服务,是否同样适用? 业务场景示例: 我们有正在创建订单的HttpPost终结点。 现在我们假设,除了创建订单之外,这个endpoint还将调用外部服务来打印该订单的标签,另一个endpoint将通过REST向外部第三方系统发送某种确认。