# Amazon EventBridge Pipes Enrichments Construct Library

> Version 2.275.0-alpha.0

> **Separate package**
>
> `@aws-cdk/aws-pipes-enrichments-alpha` is not part of `aws-cdk-lib` — install it separately:
>
> ```sh
> npm install @aws-cdk/aws-pipes-enrichments-alpha
> pip install aws-cdk.aws-pipes-enrichments-alpha
> ```
>
> This module is [**experimental**](/stability) (alpha): its API may change in any release, without a major version bump.
---

![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)

> The APIs of higher level constructs in this module are experimental and under active development.
> They are subject to non-backward compatible changes or removal in any future version. These are
> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be
> announced in the release notes. 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.

---

EventBridge Pipes Enrichments let you create enrichments for an EventBridge Pipe.

For more details see the service documentation:

[Documentation](https://docs.aws.amazon.com/eventbridge/latest/userguide/pipes-enrichment.html)

## Pipe sources

Pipe enrichments are invoked prior to sending the events to a target of a EventBridge Pipe.

### Lambda function

A Lambda function can be used to enrich events of a pipe.

```ts
declare const sourceQueue: sqs.Queue;
declare const targetQueue: sqs.Queue;

declare const enrichmentFunction: lambda.Function;

const enrichment = new enrichments.LambdaEnrichment(enrichmentFunction);

const pipe = new pipes.Pipe(this, 'Pipe', {
  source: new SomeSource(sourceQueue),
  enrichment,
  target: new SomeTarget(targetQueue),
});
```

### Step Functions state machine

Step Functions state machine can be used to enrich events of a pipe.

**Note:** EventBridge Pipes only supports Express workflows invoked synchronously.

> Visit [Amazon EventBridge Pipes event enrichment](https://docs.aws.amazon.com/eventbridge/latest/userguide/pipes-enrichment.html) for more details.

```ts
declare const sourceQueue: sqs.Queue;
declare const targetQueue: sqs.Queue;

declare const enrichmentStateMachine: stepfunctions.StateMachine;

const enrichment = new enrichments.StepFunctionsEnrichment(enrichmentStateMachine);

const pipe = new pipes.Pipe(this, 'Pipe', {
  source: new SomeSource(sourceQueue),
  enrichment,
  target: new SomeTarget(targetQueue),
});
```

### API destination

API destination can be used to enrich events of a pipe.

```ts
declare const sourceQueue: sqs.Queue;
declare const targetQueue: sqs.Queue;

declare const apiDestination: events.ApiDestination;

const enrichment = new enrichments.ApiDestinationEnrichment(apiDestination);

const pipe = new pipes.Pipe(this, 'Pipe', {
  source: new SomeSource(sourceQueue),
  enrichment,
  target: new SomeTarget(targetQueue),
});
```

### API Gateway (REST API)

API Gateway can be used to enrich events of a pipe.
Pipes only supports API Gateway REST APIs. HTTP APIs are not supported.

```ts
declare const sourceQueue: sqs.Queue;
declare const targetQueue: sqs.Queue;

declare const restApi: apigateway.RestApi;

const enrichment = new enrichments.ApiGatewayEnrichment(restApi);

const pipe = new pipes.Pipe(this, 'Pipe', {
  source: new SomeSource(sourceQueue),
  enrichment,
  target: new SomeTarget(targetQueue),
});
```

## Types

| Name | Kind | Summary |
| --- | --- | --- |
| [`ApiDestinationEnrichment`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.ApiDestinationEnrichment) | Class | An API Destination enrichment for a pipe. |
| [`ApiDestinationEnrichmentProps`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.ApiDestinationEnrichmentProps) | Struct | Properties for a ApiDestinationEnrichment. |
| [`ApiGatewayEnrichment`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.ApiGatewayEnrichment) | Class | An API Gateway enrichment for a pipe. |
| [`ApiGatewayEnrichmentProps`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.ApiGatewayEnrichmentProps) | Struct | Properties for a ApiGatewayEnrichment. |
| [`LambdaEnrichment`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.LambdaEnrichment) | Class | A Lambda enrichment for a pipe. |
| [`LambdaEnrichmentProps`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.LambdaEnrichmentProps) | Struct | Properties for a LambdaEnrichment. |
| [`StepFunctionsEnrichment`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.StepFunctionsEnrichment) | Class | A StepFunctions enrichment for a pipe. |
| [`StepFunctionsEnrichmentProps`](/v2/docs/@aws-cdk_aws-pipes-enrichments-alpha.StepFunctionsEnrichmentProps) | Struct | Properties for a StepFunctionsEnrichment. |
