引用 CDK 中已存在的 SNS 主题?

Mat*_*hew 2 amazon-web-services amazon-sns aws-cdk

我的 AWS 环境中已存在一个 SNS 主题。我不想创建新的 SNS 主题,而是想简单地引用已经存在的主题并向其发布消息。

现在,我有以下内容:

const topic = new sns.Topic(this, 'AggregateSNS', {

      contentBasedDeduplication: false,
      displayName: 'Customer subscription topic',
      fifo: true,
      topicName: 'MySNSTopic',

      //how to reference existing topics?
    });
Run Code Online (Sandbox Code Playgroud)

我的理解是这将创建一个新的 SNS 主题,但正如我上面所说,我想引用现有的 SNS 主题。如何在 CDK 中引用现有的 SNS 主题?

fed*_*nev 5

您可以使用静态fromTopicArn方法获取对现有 SNS 主题的只读引用。这样做的一个常见原因是将现有主题添加为事件源。

const topic = sns.Topic.fromTopicArn(this, 'MyTopic', <topic-arn>);

func.addEventSource(new sources.SnsEventSource(topic));
Run Code Online (Sandbox Code Playgroud)

如果您需要使用CDK 应用程序中的发布API(例如,根据某些部署生命周期事件发送通知),您将使用自定义资源。AwsCustomResource构造使可以轻松地在部署过程中进行 SDK 调用。