package awscdkkinesisfirehosedestinationsalpha import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/aws-cdk-go/awscdk/v2/awsiam" "github.com/aws/aws-cdk-go/awscdk/v2/awskms" "github.com/aws/aws-cdk-go/awscdk/v2/awslogs" "github.com/aws/aws-cdk-go/awscdkkinesisfirehosealpha/v2" ) // Props for defining an S3 destination of a Kinesis Data Firehose delivery stream. // // Example: // var bucket bucket // // Provide a Lambda function that will transform records before delivery, with custom // // buffering and retry configuration // lambdaFunction := lambda.NewFunction(this, jsii.String("Processor"), &FunctionProps{ // Runtime: lambda.Runtime_NODEJS_14_X(), // Handler: jsii.String("index.handler"), // Code: lambda.Code_FromAsset(path.join(__dirname, jsii.String("process-records"))), // }) // lambdaProcessor := firehose.NewLambdaFunctionProcessor(lambdaFunction, &DataProcessorProps{ // BufferInterval: awscdk.Duration_Minutes(jsii.Number(5)), // BufferSize: awscdk.Size_Mebibytes(jsii.Number(5)), // Retries: jsii.Number(5), // }) // s3Destination := destinations.NewS3Bucket(bucket, &S3BucketProps{ // Processor: lambdaProcessor, // }) // firehose.NewDeliveryStream(this, jsii.String("Delivery Stream"), &DeliveryStreamProps{ // Destinations: []iDestination{ // s3Destination, // }, // }) // // Experimental. type S3BucketProps struct { // The length of time that Firehose buffers incoming data before delivering it to the S3 bucket. // // Minimum: Duration.seconds(60) // Maximum: Duration.seconds(900) // Experimental. BufferingInterval awscdk.Duration `field:"optional" json:"bufferingInterval" yaml:"bufferingInterval"` // The size of the buffer that Kinesis Data Firehose uses for incoming data before delivering it to the S3 bucket. // // Minimum: Size.mebibytes(1) // Maximum: Size.mebibytes(128) // Experimental. BufferingSize awscdk.Size `field:"optional" json:"bufferingSize" yaml:"bufferingSize"` // The type of compression that Kinesis Data Firehose uses to compress the data that it delivers to the Amazon S3 bucket. // // The compression formats SNAPPY or ZIP cannot be specified for Amazon Redshift // destinations because they are not supported by the Amazon Redshift COPY operation // that reads from the S3 bucket. // Experimental. Compression Compression `field:"optional" json:"compression" yaml:"compression"` // A prefix that Kinesis Data Firehose evaluates and adds to records before writing them to S3. // // This prefix appears immediately following the bucket name. // See: https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html // // Experimental. DataOutputPrefix *string `field:"optional" json:"dataOutputPrefix" yaml:"dataOutputPrefix"` // The AWS KMS key used to encrypt the data that it delivers to your Amazon S3 bucket. // Experimental. EncryptionKey awskms.IKey `field:"optional" json:"encryptionKey" yaml:"encryptionKey"` // A prefix that Kinesis Data Firehose evaluates and adds to failed records before writing them to S3. // // This prefix appears immediately following the bucket name. // See: https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html // // Experimental. ErrorOutputPrefix *string `field:"optional" json:"errorOutputPrefix" yaml:"errorOutputPrefix"` // If true, log errors when data transformation or data delivery fails. // // If `logGroup` is provided, this will be implicitly set to `true`. // Experimental. Logging *bool `field:"optional" json:"logging" yaml:"logging"` // The CloudWatch log group where log streams will be created to hold error logs. // Experimental. LogGroup awslogs.ILogGroup `field:"optional" json:"logGroup" yaml:"logGroup"` // The data transformation that should be performed on the data before writing to the destination. // Experimental. Processor awscdkkinesisfirehosealpha.IDataProcessor `field:"optional" json:"processor" yaml:"processor"` // The IAM role associated with this destination. // // Assumed by Kinesis Data Firehose to invoke processors and write to destinations. // Experimental. Role awsiam.IRole `field:"optional" json:"role" yaml:"role"` // The configuration for backing up source records to S3. // Experimental. S3Backup *DestinationS3BackupProps `field:"optional" json:"s3Backup" yaml:"s3Backup"` }