
Language | Package |
---|---|
![]() |
aws_solutions_constructs.aws_eventbridge_sns
|
![]() |
@aws-solutions-constructs/aws-eventbridge-sns
|
![]() |
software.amazon.awsconstructs.services.eventbridgesns
|
Overview
This AWS Solutions Construct implements an AWS Events rule and an AWS SNS Topic.
Here is a minimal deployable pattern definition:
import { Construct } from 'constructs';
import { Stack, StackProps, Duration } from 'aws-cdk-lib';
import * as events from 'aws-cdk-lib/aws-events';
import * as iam from 'aws-cdk-lib/aws-iam';
import { EventbridgeToSnsProps, EventbridgeToSns } from "@aws-solutions-constructs/aws-eventbridge-sns";
const constructProps: EventbridgeToSnsProps = {
eventRuleProps: {
schedule: events.Schedule.rate(Duration.minutes(5))
}
};
const constructStack = new EventbridgeToSns(this, 'test-construct', 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);
Pattern Construct Props
Name | Type | Description |
---|---|---|
eventRuleProps |
events.RuleProps
|
User provided eventRuleProps to override the defaults. |
existingTopicObj? |
sns.Topic
|
Existing instance of SNS Topic object, providing both
this and topicProps will cause an
error.
|
topicProps? |
sns.TopicProps
|
User provided props to override the default props for the SNS Topic. |
existingEventBusInterface? |
events.IEventBus
|
Optional user-provided custom EventBus for construct to
use. Providing both this and
eventBusProps results an error.
|
eventBusProps? |
events.EventBusProps
|
Optional user-provided properties to override the
default properties when creating a custom EventBus.
Setting this value to {} will create
a custom EventBus using all default properties. If
neither this nor
existingEventBusInterface is provided
the construct will use the default
EventBus. Providing both this and
existingEventBusInterface results an
error.
|
enableEncryptionWithCustomerManagedKey? |
boolean
|
If no key is provided, this flag determines whether the SNS Topic is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: topicProps.masterKey, encryptionKey or encryptionKeyProps. |
encryptionKey? |
kms.Key
|
An optional, imported encryption key to encrypt the SNS Topic with. |
encryptionKeyProps? |
kms.KeyProps
|
Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SNS Topic with. |
Pattern Properties
Name | Type | Description |
---|---|---|
eventBus? |
events.IEventBus
|
Returns the instance of events.IEventBus used by the construct |
eventsRule |
events.Rule
|
Returns an instance of events.Rule created by the construct |
snsTopic |
sns.Topic
|
Returns an instance of sns.Topic created by the construct |
encryptionKey? |
kms.Key
|
Returns an instance of kms Key used for the SNS Topic. |
Default settings
Out of the box implementation of the Construct without any override will set the following defaults:
Amazon EventBridge Rule
-
Grant least privilege permissions to EventBridge Rule to publish to the SNS Topic.
Amazon SNS Topic
-
Configure least privilege access permissions for SNS Topic.
-
Enable server-side encryption forSNS Topic using Customer managed KMS Key.
-
Enforce encryption of data in transit.
Architecture

GitHub
To view the code for this pattern, create/view issues and pull requests, and more: | |
---|---|
![]() |
@aws-solutions-constructs/aws-eventbridge-sns |