Destinations

AWS Kinesis

Stream events to an Amazon Kinesis Data Stream.

Configuration

Config

FieldTypeRequiredDescription
config.stream_namestringYesThe Kinesis stream name
config.regionstringYesAWS region (e.g., us-east-1)
config.endpointstringNoCustom endpoint URL (for LocalStack, etc.)
config.partition_key_templatestringNoJMESPath expression for partition key

Credentials

FieldTypeRequiredDescription
credentials.keystringYesAWS Access Key ID
credentials.secretstringYesAWS Secret Access Key
credentials.sessionstringNoAWS Session Token (for temporary credentials)

Example

curl --location 'https://<OUTPOST_API_URL>/api/v1/<TENANT_ID>/destinations' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <API_KEY>' \ --data '{ "type": "aws_kinesis", "topics": ["orders"], "config": { "stream_name": "my-stream", "region": "us-east-1" }, "credentials": { "key": "<AWS_ACCESS_KEY_ID>", "secret": "<AWS_SECRET_ACCESS_KEY>" } }'
sh

Partition Key

By default, the event ID is used as the partition key. You can customize this using a JMESPath expression in partition_key_template:

{ "config": { "stream_name": "my-stream", "region": "us-east-1", "partition_key_template": "data.customer_id" } }
json

Record Format

If you publish an event:

{ "topic": "orders", "data": { "order_id": "123", "status": "created" }, "metadata": { "source": "checkout-service" } }
json

By default, the Kinesis record includes both metadata and the event's data field. The metadata object contains system metadata (event-id, topic, timestamp) plus any event metadata from the published event:

{ "metadata": { "event-id": "evt_123", "topic": "orders", "timestamp": "1704067200", "source": "checkout-service" }, "data": { "order_id": "123", "status": "created" } }
json

When DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD is set to false, only the event's data field is sent:

{ "order_id": "123", "status": "created" }
json

IAM Permissions

The IAM user or role needs the following permission:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:*:*:stream/my-stream" } ] }
json

Operator Configuration

Environment VariableDefaultDescription
DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOADtrueInclude Outpost metadata in the Kinesis record payload