sma*_*rds 4 amazon-sns aws-cdk
我在CDK中遇到这个问题。我有一个由 SNS 主题触发的 lambda(从 S3 存储桶接收事件),但现在它在传递到 SNS 主题的每条消息上执行。我希望 Lambda 仅对特定存储桶名称、文件结尾和 PutObject 操作执行。
我知道如何将 SNS 连接到我的 lambda,只是不使用过滤器:
const myTopic = new sns.Topic(this, "Topic", {});
myTopic.addToResourcePolicy(new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: ["sns:Publish"],
resources: [myTopic.topicArn],
principals: [new iam.AccountPrincipal('XXXXXXXXX')]
}))
const snsEventSource = new lambdaEventSources.SnsEventSource(myTopic);
myLambda.addEventSource(snsEventSource)
Run Code Online (Sandbox Code Playgroud)
我不知道如何添加过滤器,我尝试过使用 sns.SubscriptionFilter 但没有任何运气
我让它与这样的代码一起工作:
const myTopic = new sns.Topic(this, "Topic", {});
myTopic.addToResourcePolicy(new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: ["sns:Publish"],
resources: [myTopic.topicArn],
principals: [new iam.AccountPrincipal('XXXXXXXXX')]
}))
myLambda.grantInvoke(new iam.ServicePrincipal('sns.amazonaws.com'))
myTopic.addSubscription(new subs.LambdaSubscription(myLambda, {
filterPolicy: {
S3_BUCKET_NAME: sns.SubscriptionFilter.stringFilter({allowlist: ['myBucket']}),
S3_EVENT_NAME: sns.SubscriptionFilter.stringFilter({allowlist: ['ObjectCreated:Put']})
}
}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3972 次 |
| 最近记录: |