packages/@aws-cdk/aws-pipes-targets-alpha/lib/firehose.ts (26 lines of code) (raw):
import { IInputTransformation, IPipe, ITarget, TargetConfig } from '@aws-cdk/aws-pipes-alpha';
import { IRole } from 'aws-cdk-lib/aws-iam';
import { IDeliveryStream } from 'aws-cdk-lib/aws-kinesisfirehose';
/**
* Amazon Data Firehose target properties.
*/
export interface FirehoseTargetParameters {
/**
* The input transformation to apply to the message before sending it to the target.
*
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pipes-pipe-pipetargetparameters.html#cfn-pipes-pipe-pipetargetparameters-inputtemplate
* @default - none
*/
readonly inputTransformation?: IInputTransformation;
}
/**
* An EventBridge Pipes target that sends messages to an Amazon Data Firehose delivery stream.
*/
export class FirehoseTarget implements ITarget {
private deliveryStream: IDeliveryStream;
private deliveryStreamParameters: FirehoseTargetParameters;
public readonly targetArn: string;
constructor(deliveryStream: IDeliveryStream, parameters: FirehoseTargetParameters = {}) {
this.deliveryStream = deliveryStream;
this.targetArn = deliveryStream.deliveryStreamArn;
this.deliveryStreamParameters = parameters;
}
grantPush(grantee: IRole): void {
this.deliveryStream.grantPutRecords(grantee);
}
bind(pipe: IPipe): TargetConfig {
return {
targetParameters: {
inputTemplate: this.deliveryStreamParameters.inputTransformation?.bind(pipe).inputTemplate,
},
};
}
}