用于部署调用 AWS SNS 的 AWS 事件规则的 CDK 构造
项目描述
aws-events-rule-sns 模块
---我们的一些早期构造不符合为图书馆发展的命名标准。我们正在发布具有更正名称的完全功能兼容版本。无论您使用旧名称还是新名称部署构造,底层实现代码都是相同的。我们将支持所有 1.x 版本的这两个名称,但在 2.x 中,我们只会发布正确命名的结构。此构造正在被功能相同的 aws-eventbridge-sns 所取代。
| 参考文档: | https://docs.aws.amazon.com/solutions/latest/constructs/ |
|---|
| 语 | 包裹 |
|---|---|
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. 或其附属公司。版权所有。