|
| 1 | +# aws-eventbridge-kinesisfirehose-s3 module |
| 2 | +<!--BEGIN STABILITY BANNER--> |
| 3 | + |
| 4 | +--- |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | +> All classes are under active development and subject to non-backward compatible changes or removal in any |
| 9 | +> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model. |
| 10 | +> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. |
| 11 | +
|
| 12 | +--- |
| 13 | +<!--END STABILITY BANNER--> |
| 14 | + |
| 15 | +| **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>| |
| 16 | +|:-------------|:-------------| |
| 17 | +<div style="height:8px"></div> |
| 18 | + |
| 19 | +| **Language** | **Package** | |
| 20 | +|:-------------|-----------------| |
| 21 | +| Python|`aws_solutions_constructs.aws_eventbridge_kinesisfirehose_s3`| |
| 22 | +| Typescript|`@aws-solutions-constructs/aws-eventbridge-kinesisfirehose-s3`| |
| 23 | +| Java|`software.amazon.awsconstructs.services.eventbridgekinesisfirehoses3`| |
| 24 | + |
| 25 | +This AWS Solutions Construct implements an Amazon EventBridge Rule to send data to an Amazon Kinesis Data Firehose delivery stream connected to an Amazon S3 bucket. |
| 26 | + |
| 27 | +Here is a minimal deployable pattern definition in Typescript: |
| 28 | + |
| 29 | +``` javascript |
| 30 | +import * as cdk from '@aws-cdk/core'; |
| 31 | +import { EventbridgeToKinesisFirehoseToS3, EventbridgeToKinesisFirehoseToS3Props } from '@aws-solutions-constructs/aws-eventbridge-kinesisfirehose-s3'; |
| 32 | + |
| 33 | +const EventbridgeToKinesisFirehoseToS3Props: EventbridgeToKinesisFirehoseToS3Props = { |
| 34 | + eventRuleProps: { |
| 35 | + schedule: events.Schedule.rate(cdk.Duration.minutes(5)) |
| 36 | + } |
| 37 | +}; |
| 38 | + |
| 39 | +new EventbridgeToKinesisFirehoseToS3(this, 'test-eventbridge-firehose-s3', EventbridgeToKinesisFirehoseToS3Props); |
| 40 | + |
| 41 | +``` |
| 42 | + |
| 43 | +## Initializer |
| 44 | + |
| 45 | +``` text |
| 46 | +new EventbridgeToKinesisFirehoseToS3(scope: Construct, id: string, props: EventbridgeToKinesisFirehoseToS3Props); |
| 47 | +``` |
| 48 | + |
| 49 | +_Parameters_ |
| 50 | + |
| 51 | +* scope [`Construct`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) |
| 52 | +* id `string` |
| 53 | +* props [`EventbridgeToKinesisFirehoseToS3Props`](#pattern-construct-props) |
| 54 | + |
| 55 | +## Pattern Construct Props |
| 56 | + |
| 57 | +| **Name** | **Type** | **Description** | |
| 58 | +|:-------------|:----------------|-----------------| |
| 59 | +|eventRuleProps|[`events.RuleProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-events.RuleProps.html)|User provided eventRuleProps to override the defaults.| |
| 60 | +|kinesisFirehoseProps?|[`kinesisfirehose.CfnDeliveryStreamProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesisfirehose.CfnDeliveryStreamProps.html)|Optional user provided props to override the default props for Kinesis Firehose Delivery Stream| |
| 61 | +|existingBucketObj?|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.IBucket.html)|Existing instance of S3 Bucket object. If this is provided, then also providing bucketProps is an error. | |
| 62 | +|bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.BucketProps.html)|User provided props to override the default props for the S3 Bucket.| |
| 63 | +|logGroupProps?|[`logs.LogGroupProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroupProps.html)|User provided props to override the default props for for the CloudWatchLogs LogGroup.| |
| 64 | + |
| 65 | +## Pattern Properties |
| 66 | + |
| 67 | +| **Name** | **Type** | **Description** | |
| 68 | +|:-------------|:----------------|-----------------| |
| 69 | +|eventsRule|[`events.Rule`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-events.Rule.html)|Returns an instance of events.Rule created by the construct.| |
| 70 | +|kinesisFirehose|[`kinesisfirehose.CfnDeliveryStream`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesisfirehose.CfnDeliveryStream.html)|Returns an instance of kinesisfirehose.CfnDeliveryStream created by the construct| |
| 71 | +|s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct| |
| 72 | +|s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.| |
| 73 | +|eventsRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of the iam.Role created by the construct for Events Rule| |
| 74 | +|kinesisFirehoseRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of the iam.Role created by the construct for Kinesis Data Firehose delivery stream| |
| 75 | +|kinesisFirehoseLogGroup|[`logs.LogGroup`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html)|Returns an instance of the LogGroup created by the construct for Kinesis Data Firehose delivery stream| |
| 76 | + |
| 77 | +## Default settings |
| 78 | + |
| 79 | +Out of the box implementation of the Construct without any override will set the following defaults: |
| 80 | + |
| 81 | +### Amazon EventBridge Rule |
| 82 | +* Configure least privilege access IAM role for Amazon EventBridge Rule to publish to the Kinesis Firehose Delivery Stream. |
| 83 | + |
| 84 | +### Amazon Kinesis Firehose |
| 85 | +* Enable CloudWatch logging for Kinesis Firehose |
| 86 | +* Configure least privilege access IAM role for Amazon Kinesis Firehose |
| 87 | + |
| 88 | +### Amazon S3 Bucket |
| 89 | +* Configure Access logging for S3 Bucket |
| 90 | +* Enable server-side encryption for S3 Bucket using AWS managed KMS Key |
| 91 | +* Turn on the versioning for S3 Bucket |
| 92 | +* Don't allow public access for S3 Bucket |
| 93 | +* Retain the S3 Bucket when deleting the CloudFormation stack |
| 94 | +* Applies Lifecycle rule to move noncurrent object versions to Glacier storage after 90 days |
| 95 | + |
| 96 | +## Architecture |
| 97 | + |
| 98 | + |
| 99 | +*** |
| 100 | +© Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. |
0 commit comments