如何使用 aws cdk 将 SQS 队列订阅到 SNS 主题?

时间:2021-03-28 20:11:28

标签: typescript amazon-iam amazon-sqs amazon-sns aws-cdk

我首先创建一个队列:

const notificationQueue: sqs.IQueue = new sqs.Queue(this, `${domain}-notificationsQueue`, {
  queueName: `${domain}-notificationsQueue.fifo`,
  fifo: true,
  contentBasedDeduplication: false
});

现在我需要将此队列订阅到一个 SNS 主题(类似这样,但我需要传入一个 IGrantable 对象 - 我不知道该怎么做)

queue.grantConsumeMessages(grantee: iam.IGrantable)

那么如何创建一个引用特定 SNS 主题的 IGrantable 对象?

1 个答案:

答案 0 :(得分:0)

我们可以使用@aws-cdk/aws-sns-subscriptions

我们可以导入这些:

import * as subscriptions from "@aws-cdk/aws-sns-subscriptions";
import * as sns from "@aws-cdk/aws-sns";
import * as sqs from "@aws-cdk/aws-sqs";

在 Sns 上使用 addSubscription 方法。

const myTopic = new sns.Topic(this, "MyTopic");
const myQueue = new sqs.Queue(this, "MyQueue");
myTopic.addSubscription(new subscriptions.SqsSubscription(myQueue));