constructor()

in lib/kinesis/firehose-to-s3-delivery-stream-construct.ts [19:63]


    constructor(scope: cdk.Construct, id: string, props: FirehoseToS3DeliveryStreamProps) {
        super(scope, id);
        const firehoseToS3StreamName = props.name;

        this.serviceRole = new iam.Role(this, 'WriteDataToS3', {
            assumedBy: new iam.ServicePrincipal('firehose.amazonaws.com'),
            inlinePolicies: {
                WriteDataToS3: iam.PolicyDocument.fromJson({
                    Statement: [
                        {
                            Effect: 'Allow',
                            Action: [
                                's3:AbortMultipartUpload',
                                's3:GetBucketLocation',
                                's3:GetObject',
                                's3:ListBucket',
                                's3:ListBucketMultipartUploads',
                                's3:PutObject'
                            ],
                            Resource: [
                                `${props.targetS3Bucket.bucketArn}`,
                                `${props.targetS3Bucket.bucketArn}/*`
                            ]
                        }
                    ],
                    Version: '2012-10-17'
                })
            }
        });


        this.deliveryStream = new kinesisFirehose.CfnDeliveryStream(this, 'FirehoseToS3', {
            deliveryStreamName: firehoseToS3StreamName,
            deliveryStreamType: 'DirectPut',
            s3DestinationConfiguration: {
                bucketArn: props.targetS3Bucket.bucketArn,
                bufferingHints: {
                    intervalInSeconds: props.bufferingIntervalSeconds,
                    sizeInMBs: props.bufferingIntervalMB
                },
                prefix: 'assetData/',
                roleArn: this.serviceRole.roleArn
            }
        });
    }