typescript - Hur prenumererar man en SQS-kö på ett SNS-ämne med AWS CDK?


Jag skapar först en kö:

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

Nu behöver jag prenumerera på den här kön till ett SNS-ämne (något liknande detta men jag behöver skicka in ett IGrantable-objekt - vilket jag inte vet hur man gör)

queue.grantConsumeMessages(grantee: iam.IGrantable)

Så hur skapar jag ett IGrantable-objekt som refererar till ett specifikt SNS-ämne?

Svar #1

Vi kan använda @aws-cdk/aws-sns-subscriptions

vi kan importera dessa:

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";

använd addSubscription-metoden på Sns.

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

Relaterade artiklar