无法验证以下目标配置(S3 到 SQS)

2023-11-25

我正在尝试使用无服务器设置一个工作流程,该工作流程创建一个新的 S3 存储桶、一个新的 SQS 队列,当在 S3 存储桶中创建一个对象时,将消息放入队列中,并在队列上有足够的消息时启动 lambda队列。我的资源块中有以下内容:

resources:
  Resources:
    AnalyticsQueue:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: "my-queue"
    S3EventQueuePolicy:
      Type: AWS::SQS::QueuePolicy
      DependsOn: AnalyticsQueue
      Properties:
        PolicyDocument:
          Id: SQSPolicy
          Statement:
            - Effect: Allow
              Action: sqs:SendMessage:*
              Resource: !Ref AnalyticsQueue
        Queues:
          - !GetAtt AnalyticsQueue.Arn
    AnalyticsBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: "my-bucket"
        NotificationConfiguration:
          QueueConfigurations:
            - Event: s3:ObjectCreated:*
              Queue: !GetAtt AnalyticsQueue.Arn

当我尝试部署它时,我收到以下错误:

发生错误:AnalyticsBucket - 无法验证以下目标配置(服务:Amazon S3;状态代码:400;错误代码:InvalidArgument;请求 ID:E2A1F8BD6BEE6EF4;)。

一些谷歌搜索,我发现问题出在NotificationConfiguration块上AnalyticsBucket。如果我删除整个子块,它部署得很好,但显然在创建对象时不会在队列上生成消息。

正在寻找解决这个问题的方法。


您需要将这样的内联“访问”策略添加到 SQS 队列中:

{
  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "SQS:SendMessage"
      ],
      "Resource": "arn:aws:sqs:<region>:<account-id>:<queue-name>",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::<my-bucket-name>"
        },
        "StringEquals": {
          "aws:SourceAccount": "bucket-owner-account-id"
        }
      }
    }
  ]
}

Source: https://docs.aws.amazon.com/AmazonS3/latest/userguide/grant-destinations-permissions-to-s3.html

注意:占位符如<region>JSON 中的内容需要替换。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Allow Amazon S3 to use this key",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:<region>:<account-id>:<key-alias>",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "<account-id>"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:s3:::<bucket-name>"
        }
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<account-id>:root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

您的队列还可以使用服务器端加密。在这种情况下,您还需要向客户 KMS 添加策略(必须是客户 KMS 密钥,默认 AWS 密钥将不起作用;请阅读为什么 Amazon S3 事件通知不传送到使用服务器端加密的 Amazon SQS 队列?)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法验证以下目标配置(S3 到 SQS) 的相关文章

随机推荐

  • SQL Server 中的日期时间问题

    我正在尝试对 MS SQL Server 中已设置的数据库执行 INSERT 该数据库服务器位于共享主机 godaddy 中 我想要实现的是将一篇文章存储到数据库中 但是每次我发布或预览该文章时 服务器都会抛出我的错误 SqlDateTim
  • 使用 ggplot2 绘制 Excel 图形

    我的公司想要在 R 中进行报告 他们希望尽可能保持 Excel 报告的相同 ggplot2 有没有办法保持 Excel 中俗气的 3D 外观 我想要制作一个如下所示的情节 我已经能够接近了 这是我到目前为止所拥有的 gender lt c
  • 优化字节对编码

    注意到字节对编码 BPE 大型文本压缩基准测试非常缺乏 我非常很快就做好了它的一个简单的字面实现 压缩率 考虑到没有进一步处理 例如没有霍夫曼或算术编码 出奇的好 然而 我这个微不足道的实现的运行时间并不那么出色 如何对此进行优化 是否可以
  • 如何在django上为每个用户创建一个模型(表)?

    我有一个模型 并希望系统的每个用户都有一个为自己保留的表 尊重这个模型 为了明确起见 想象一下 游戏 模型 我不希望只有一张桌子 游戏 但是有 foo games bar games foo bar 是系统的用户 这个怎么做 edit wh
  • 自定义 HTMLElement 的 connectCallback() 中的 textContent 为空

    内connectedCallback 我的自定义元素的方法textContent作为空字符串返回 本质上我的代码可以归结为以下内容 class MyComponent extends HTMLElement constructor supe
  • 如何解决“请确保该文件可访问并且它是有效的程序集或 COM 组件”?

    我正在 C 中使用 OpenCV 构建一个项目 它需要一个名为的 dll 文件cvextern dll 但是 当添加此文件作为参考时 会出现此消息 无法添加引用 cvextern dll 请确保该文件可访问并且它是有效的程序集或 COM 组
  • 如何从字符串中删除所有空格

    如何去除Python字符串中的所有空格 例如 我想要一个像这样的字符串strip my spaces将变成stripmyspaces 但我似乎无法做到这一点strip gt gt gt strip my spaces strip strip
  • 如何在单个 HTML 表单中提交多个值?

    所以我有一个 HTML 表单
  • 如何在QT中接收正确的UDP数据包?

    我正在尝试编写一个QT程序来接收UDP数据包 我正在尝试从Packet Sender软件接收 这是我的代码 socket new QUdpSocket this bool result socket gt bind QHostAddress
  • angularjs $http.get如何强制UTF-8编码

    我必须读取使用 utf 8 字符集编码的 JSON 文件我使用这个语法 http get resources negozi json header Content Type application json charset UTF 8 su
  • 将警告视为错误没有任何效果

    在 Visual Studio 的项目设置中 我已将 将警告视为错误 设置为 全部 警告级别设置为 4 我通过故意引入违反 CA1305 的代码来对此进行测试 但它成功构建 并重建 并返回警告 我所期望的是构建会失败并返回一个错误 我的理解
  • Permissions.askAsync 未按预期工作

    我在通知 Permissions askAsync 时遇到问题 const status await Permissions askAsync Permissions NOTIFICATIONS 当使用 Permissions askAsy
  • 如何处理指向通用接口的指针的 JPA 注释

    我有一个泛型类 它也是一个映射的超类 它有一个私有字段 该字段保存指向同一类型的另一个对象的指针 MappedSuperclass public abstract class MyClass
  • kotlin 中数据类的流畅方法

    我们熟悉在java和其他编程语言中调用方法的流畅接口 例如 Picasso with this load url into imageView 这是通过返回所需类型对象的 setter 方法实现的 public Picasso with C
  • 使用 python 进行 oauth 谷歌

    我对网络编程相当陌生 我想在这里从头开始 我试图在网上搜索 但最终完全困惑了 现在我想学习的是如何通过Python脚本验证Google帐户 任何人都可以向我提供代码片段或任何示例 预先非常感谢 在过去几周的几次失败尝试之后 我花了一整天的时
  • 模拟私有构造函数

    The Site课程是由外部团队向我提供的 并且有private构造函数 public class Site int id String brand private Site int id String brand this id id t
  • Entity Framework 4.1“Code First”SetInitializer 在 Database.Delete 之后不会再次调用

    首先尝试使用 EF 4 1 代码进行一些单元测试 我有我的实时数据库 SQL Server 和我的单元测试数据库 Sql CE 在与 EF Sql CE 4 0 和事务支持进行斗争 并失败 后 我决定运行测试的最简单方法是 创建数据库 运行
  • 从 CouchDB 中的 Erlang 视图发出元组

    CouchDB 版本 0 10 0 使用本机 erlang 视图 我有一个以下形式的简单文档 id user 1 rev 1 9ccf63b66b62d15d75daa211c5a7fb0d type user identifiers AB
  • 使用 SCM 进行没有历史记录的 git 克隆

    我们的项目很大 我们希望避免克隆所有 git 历史记录 是否有可能git clone通过depth 1 using checkout scm在詹金斯 我找不到任何有关如何配置的文档SCM或者如果可能的话如何传递参数 Added 找到文档了
  • 无法验证以下目标配置(S3 到 SQS)

    我正在尝试使用无服务器设置一个工作流程 该工作流程创建一个新的 S3 存储桶 一个新的 SQS 队列 当在 S3 存储桶中创建一个对象时 将消息放入队列中 并在队列上有足够的消息时启动 lambda队列 我的资源块中有以下内容 resour