如何通过 CDK 配置 AWS SQS 以接收来自外界的消息?
How to configure AWS SQS via CDK to receive messages from outside world?
我在 Heroku 上有一个普通的单体应用 运行。我想使用 SQS 队列来处理一些后台作业。
Monolith -> 发布到 SQS -> SQS 持有事件和调用 -> Monolith -> 确认处理并从 SQS 删除事件
我已经有一个通过 AWS CDK 配置的 S3 存储桶,现在我正在尝试配置一个 SQS 队列,我也可以从外部调用它(通过 access_token/key 身份验证):
// The user I used for S3 uploads
const uploadUser = new iam.User(this, "upload-user", {
userName: "upload-user",
})
// ...Here is some other code to initialize S3 bucket
const bucket = ...
bucket.grantWrite(uploadUser)
// But when creating a queue this does not work
const queue = new sqs.Queue(this, 'linear-sync.fifo')
queue.grant(uploadUser) // errors
尝试这样做时出现错误:
Argument of type 'User' is not assignable to parameter of type 'IGrantable'
知道如何实现吗?
编辑:我最终放弃了使用 SQS 队列的想法,我可能稍后会回来,但决定使用 Redis,它更容易设置我们当前的基于 docker 的堆栈但我稍后可能会重新考虑这个想法
首先,Queue.grant
method requires you to list which actions you want to grant access to. If you want to post messages to the queue, you would call Queue.grantSend
.
现在,User
可能无法分配给 IGrantable
的原因是您安装的 CDK 版本不匹配。你用的是V1吗?所有的 CDK 模块都是同一个版本吗?确保您没有同时使用 V1 和 V2。
我在 Heroku 上有一个普通的单体应用 运行。我想使用 SQS 队列来处理一些后台作业。
Monolith -> 发布到 SQS -> SQS 持有事件和调用 -> Monolith -> 确认处理并从 SQS 删除事件
我已经有一个通过 AWS CDK 配置的 S3 存储桶,现在我正在尝试配置一个 SQS 队列,我也可以从外部调用它(通过 access_token/key 身份验证):
// The user I used for S3 uploads
const uploadUser = new iam.User(this, "upload-user", {
userName: "upload-user",
})
// ...Here is some other code to initialize S3 bucket
const bucket = ...
bucket.grantWrite(uploadUser)
// But when creating a queue this does not work
const queue = new sqs.Queue(this, 'linear-sync.fifo')
queue.grant(uploadUser) // errors
尝试这样做时出现错误:
Argument of type 'User' is not assignable to parameter of type 'IGrantable'
知道如何实现吗?
编辑:我最终放弃了使用 SQS 队列的想法,我可能稍后会回来,但决定使用 Redis,它更容易设置我们当前的基于 docker 的堆栈但我稍后可能会重新考虑这个想法
首先,Queue.grant
method requires you to list which actions you want to grant access to. If you want to post messages to the queue, you would call Queue.grantSend
.
现在,User
可能无法分配给 IGrantable
的原因是您安装的 CDK 版本不匹配。你用的是V1吗?所有的 CDK 模块都是同一个版本吗?确保您没有同时使用 V1 和 V2。