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
}
});
}