gpt4 book ai didi

amazon-sns - 如何在 CDK 中向 SNS 主题添加订阅过滤器

转载 作者:行者123 更新时间:2023-12-02 18:31:52 27 4
gpt4 key购买 nike

我在 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)

我不确定如何添加过滤器,我尝试过使用 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']})
}
}))

关于amazon-sns - 如何在 CDK 中向 SNS 主题添加订阅过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69313402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com