aws sns的cdk结构
aws-cdk.aws-sns的Python项目详细描述
amazon简单通知服务构造库
将sns主题添加到堆栈:
importsns=require('@aws-cdk/aws-sns');consttopic=newsns.Topic(this,'Topic',{displayName:'Customer subscription topic'});
订阅
可以通过调用
.addSubscription(...)
方法。它接受一个subscription对象,
其默认实现可以在
@aws-cdk/aws-sns-subscriptions
包装:
向主题添加https订阅:
importsubs=require('@aws-cdk/aws-sns-subscriptions');constmyTopic=newsns.Topic(this,'MyTopic');myTopic.addSubscription(newsubs.UrlSubscription('https://foobar.com/'));
订阅主题的队列:
myTopic.addSubscription(newsubs.SqsSubscription(queue));
请注意,不同帐户中队列的订阅需要由 从队列中读取初始消息并访问其中找到的链接。
筛选策略
订阅主题的终结点时,可以指定筛选策略。
lambda订阅示例:
constmyTopic=newsns.Topic(this,'MyTopic');constfn=newlambda.Function(this,'Function',...);// Lambda should receive only message matching the following conditions on attributes:// color: 'red' or 'orange' or begins with 'bl'// size: anything but 'small' or 'medium'// price: between 100 and 200 or greater than 300topic.subscribeLambda(newsubs.LambdaSubscription(fn,{filterPolicy:{color: sns.SubscriptionFilter.stringFilter({whitelist:['red','orange'],matchPrefixes:['bl']}),size: sns.SubscriptionFilter.stringFilter({blacklist:['small','medium'],}),price: sns.SubscriptionFilter.numericFilter({between:{start: 100,stop: 200},greaterThan: 300})}}));
CloudWatch事件规则目标
sns主题可以用作cloudwatch事件规则的目标。
使用@aws-cdk/aws-events-targets.SnsTopicTarget
:
importtargets=require('@aws-cdk/aws-events-targets');codeCommitRepository.onCommit(newtargets.SnsTopicTarget(myTopic));
这将导致向事件规则添加一个目标,还将修改 允许CloudWatch事件发布到主题的主题资源策略。