以下是使用AWS CDK创建嵌套SNS订阅筛选策略的代码示例:
import * as cdk from 'aws-cdk-lib';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as iam from 'aws-cdk-lib/aws-iam';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'NestedSnsSubscriptionStack');
// 创建主题
const topic = new sns.Topic(stack, 'MyTopic');
// 创建订阅筛选策略
const filterPolicy = {
color: sns.SubscriptionFilter.stringFilter({
allowlist: ['red', 'blue'], // 只接受红色和蓝色的消息
}),
};
// 创建订阅
const subscription = new sns.Subscription(stack, 'MySubscription', {
topic,
protocol: sns.SubscriptionProtocol.EMAIL,
filterPolicy,
endpoint: 'your-email@example.com',
});
// 添加SNS主题策略以允许订阅订阅筛选策略
const topicPolicy = new sns.TopicPolicy(stack, 'MyTopicPolicy', {
topics: [topic],
});
// 为订阅添加SNS筛选策略
topicPolicy.document.addStatements(
new iam.PolicyStatement({
actions: ['sns:SetSubscriptionAttributes'],
effect: iam.Effect.ALLOW,
resources: [subscription.subscriptionArn],
principals: [new iam.ArnPrincipal('*')],
})
);
app.synth();
上述代码示例创建了一个包含嵌套SNS订阅筛选策略的AWS CDK堆栈。它使用CDK库创建了一个SNS主题和一个订阅,并将订阅筛选策略设置为只接受特定颜色的消息。还添加了一个SNS主题策略,以允许设置订阅的订阅筛选策略。
注意:在运行此代码之前,请确保已安装aws-cdk-lib和相应的AWS SDK。