Skip to main content

用于部署调用 AWS SNS 的 AWS 事件规则的 CDK 构造

项目描述

aws-events-rule-sns 模块

---

稳定性:已弃用

我们的一些早期构造不符合为图书馆发展的命名标准。我们正在发布具有更正名称的完全功能兼容版本。无论您使用旧名称还是新名称部署构造,底层实现代码都是相同的。我们将支持所有 1.x 版本的这两个名称,但在 2.x 中,我们只会发布正确命名的结构。此构造正在被功能相同的 aws-eventbridge-sns 所取代。


参考文档 https://docs.aws.amazon.com/solutions/latest/constructs/
包裹
蟒蛇标志Python aws_solutions_constructs.aws_events_rule_sns
打字稿徽标打字稿 @aws-solutions-constructs/aws-events-rule-sns
爪哇徽标爪哇 software.amazon.awsconstructs.services.eventsrulesns

概述

此 AWS Solutions Construct 实施 AWS 事件规则和 AWS SNS 主题。

这是一个最小的可部署模式定义:

打字稿

// aws-events-rule-sns has been deprecated for CDK V2 in favor of aws-eventbridge-sns.
// This sample uses the CDK V1 syntax
import * as cdk from '@aws-cdk/core';
import * as events from '@aws-cdk/aws-events';
import * as iam from '@aws-cdk/aws-iam';
import { EventsRuleToSnsProps, EventsRuleToSns } from "@aws-solutions-constructs/aws-events-rule-sns";

const constructProps: EventsRuleToSnsProps = {
  eventRuleProps: {
    schedule: events.Schedule.rate(cdk.Duration.minutes(5)),
  }
};

const constructStack = new EventsRuleToSns(this, 'test', constructProps);

// Grant yourself permissions to use the Customer Managed KMS Key
const policyStatement = new iam.PolicyStatement({
  actions: ["kms:Encrypt", "kms:Decrypt"],
  effect: iam.Effect.ALLOW,
  principals: [new iam.AccountRootPrincipal()],
  resources: ["*"]
});

constructStack.encryptionKey?.addToResourcePolicy(policyStatement);

Python

# aws-events-rule-sns has been deprecated for CDK V2 in favor of aws-eventbridge-sns.
# This sample uses the CDK V1 syntax
from aws_solutions_constructs.aws_events_rule_sns import EventsRuleToSns, EventsRuleToSnsProps
from aws_cdk import (
    aws_events as events,
    aws_iam as iam,
    core
)

construct_stack = EventsRuleToSns(self, 'test',
                                event_rule_props=events.RuleProps(
                                    schedule=events.Schedule.rate(
                                        core.Duration.minutes(5))
                                ))

# Grant yourself permissions to use the Customer Managed KMS Key
policy_statement = iam.PolicyStatement(
    actions=["kms:Encrypt", "kms:Decrypt"],
    effect=iam.Effect.ALLOW,
    principals=[iam.AccountRootPrincipal()],
    resources=["*"]
)

construct_stack.encryption_key.add_to_resource_policy(policy_statement)

爪哇

// aws-events-rule-sns has been deprecated for CDK V2 in favor of aws-eventbridge-sns.
// This sample uses the CDK V1 syntax
import software.constructs.Construct;
import java.util.List;

import software.amazon.awscdk.core.*;
import software.amazon.awscdk.services.events.*;
import software.amazon.awscdk.services.iam.*;
import software.amazon.awsconstructs.services.eventsrulesns.*;

final EventsRuleToSns constructStack = new EventsRuleToSns(this, "test",
    new EventsRuleToSnsProps.Builder()
        .eventRuleProps(new RuleProps.Builder()
            .schedule(Schedule.rate(Duration.minutes(5)))
            .build())
        .build());

// Grant yourself permissions to use the Customer Managed KMS Key
final PolicyStatement policyStatement = PolicyStatement.Builder.create()
    .actions(List.of("kms:Encrypt", "kms:Decrypt"))
    .effect(Effect.ALLOW)
    .principals(List.of(new AccountRootPrincipal()))
    .resources(List.of("*"))
    .build();

constructStack.getEncryptionKey().addToResourcePolicy(policyStatement);

模式构造道具

姓名 类型 描述
eventRuleProps events.RuleProps 用户提供 eventRuleProps 以覆盖默认值。
现有的TopicObj? sns.Topic SNS Topic 对象的现有实例,同时提供 this 并topicProps会导致错误。
主题道具? sns.TopicProps 用户提供的道具来覆盖 SNS 主题的默认道具。
现有的EventBus接口? events.IEventBus 可选的用户提供的自定义 EventBus 供构造使用。提供这两者并eventBusProps导致错误。
事件总线道具? events.EventBusProps 创建自定义 EventBus 时可选的用户提供的属性以覆盖默认属性。将此值设置为{}将使用所有默认属性创建自定义 EventBus。如果既没有提供也没有existingEventBusInterface提供该构造将使用defaultEventBus。提供这两者并existingEventBusInterface导致错误。
enableEncryptionWithCustomerManagedKey? boolean 使用由此 CDK 应用程序管理或导入的 KMS 密钥。如果导入加密密钥,则必须在此构造的 encryptionKey 属性中指定它。
加密密钥? kms.Key 用于加密 SNS 主题的可选导入加密密钥。
加密密钥道具? kms.KeyProps 用户提供的可选属性,用于覆盖 KMS 加密密钥的默认属性。

模式属性

姓名 类型 描述
事件总线? events.IEventBus 返回构造使用的 events.IEventBus 的实例
事件规则 events.Rule 返回由构造创建的 events.Rule 的实例
sns主题 sns.Topic 返回由构造创建的 sns.Topic 的实例
加密密钥? kms.Key 返回用于 SNS 主题的 kms Key 实例。

默认设置

没有任何覆盖的 Construct 的开箱即用实现将设置以下默认值:

Amazon EventBridge 规则

  • 向 EventBridge 规则授予最低权限以发布到 SNS 主题。

亚马逊 SNS 主题

  • 为 SNS 主题配置最低权限访问权限。
  • 使用客户管理的 KMS 密钥为 SNS 主题启用服务器端加密。
  • 对传输中的数据实施加密。

建筑学

架构图


© 版权所有 2022 Amazon.com, Inc. 或其附属公司。版权所有。

项目详情