managing-amazon-kinesis-data-streams — Claude Code skill: KDS to S3
A skill for Amazon Kinesis Data Streams that sets up delivery from a stream into Iceberg tables on S3 Tables or plain S3 buckets.
npx skills add aws/agent-toolkit-for-aws --skill managing-amazon-kinesis-data-streams -a claude-codeWhat managing-amazon-kinesis-data-streams does
The skill hands your agent working knowledge of streaming tables and Amazon S3 delivery. That means serverless delivery from a KDS stream straight into Apache Iceberg tables on S3 Tables, or into general-purpose S3 buckets. No consumers, no Firehose, no Flink for append-only delivery.
Delivery is configured as a channel on a stream through CreateChannel. Channels take no shard capacity and no enhanced fan-out slots, so they do not compete with consumers you already run. The skill walks through channel setup, IAM, Glue schemas, output key templates, CloudWatch metrics and alarms, DLQ handling, quotas and troubleshooting. The AWS MCP server is the recommended way to run operations; without it, use the AWS CLI.
Both destinations need an ON_DEMAND stream, since provisioned mode is not supported. You also need an IAM service execution role trusted by kinesis.amazonaws.com and a destination in the same Region as the stream. Check the hard limits before you design anything: append-only, no CDC or deletes, no schema evolution, no backfill, no transformations, one new table per channel, and data freshness of 300–900 seconds. A schema change means deleting the channel and creating it again. If any of that blocks you, the skill points to Managed Service for Apache Flink instead.
What it helps with
- set up delivery from a KDS stream into Iceberg tables on S3 Tables
- create a channel on a stream with CreateChannel without disturbing existing consumers
- grant the IAM role the delivery needs
- debug a channel stuck in ACTIVE with no data arriving
- add CloudWatch alarms on data freshness
Example prompts for the agent
- Set up delivery from my Kinesis stream into an Iceberg table on S3 Tables
- The channel is active but no records show up — check the DLQ and data freshness
- Create a channel on my stream that writes to an S3 bucket with a date-based key template
How to install managing-amazon-kinesis-data-streams
1Skills CLI (Vercel)
npx skills add aws/agent-toolkit-for-aws --skill managing-amazon-kinesis-data-streams -a claude-code2Manually: put the files in place
~/.claude/skills/managing-amazon-kinesis-data-streams/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/managing-amazon-kinesis-data-streams/
1Skills CLI (Vercel)
npx skills add aws/agent-toolkit-for-aws --skill managing-amazon-kinesis-data-streams -a codex2Manually: put the files in place
.agents/skills/managing-amazon-kinesis-data-streams/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add aws/agent-toolkit-for-aws --skill managing-amazon-kinesis-data-streams -a cursor2Manually: put the files in place
.cursor/skills/managing-amazon-kinesis-data-streams/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install aws/agent-toolkit-for-aws managing-amazon-kinesis-data-streams2Manually: put the files in place
.github/skills/managing-amazon-kinesis-data-streams/SKILL.md1Skills CLI (Vercel)
npx skills add aws/agent-toolkit-for-aws --skill managing-amazon-kinesis-data-streams -a gemini-cli2Platform CLI
gemini skills install https://github.com/aws/agent-toolkit-for-aws --path skills/specialized-skills/analytics-skills/managing-amazon-kinesis-data-streamsManually: put the files in place
.devin/skills/managing-amazon-kinesis-data-streams/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add aws/agent-toolkit-for-aws --skill managing-amazon-kinesis-data-streams -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about managing-amazon-kinesis-data-streams
How do I install managing-amazon-kinesis-data-streams in Claude?
Run npx skills add aws/agent-toolkit-for-aws --skill managing-amazon-kinesis-data-streams -a claude-code. The skill lands at ~/.claude/skills/managing-amazon-kinesis-data-streams/SKILL.md.
What does managing-amazon-kinesis-data-streams do?
It helps your agent configure delivery from Amazon Kinesis Data Streams into Apache Iceberg on S3 Tables or into general-purpose S3 buckets, covering channels, IAM, schemas, metrics and failure triage.
Does it cover Kinesis Data Firehose or Managed Service for Apache Flink?
No. Firehose, Kinesis Video Streams and Managed Service for Apache Flink need dedicated skills or the AWS documentation.
Source text
SKILL.md · Apache-2.0
--- name: managing-amazon-kinesis-data-streams description: >- Operates Amazon Kinesis Data Streams (KDS). Covers streaming tables and Amazon S3 delivery - serverless, fully managed delivery from a KDS stream to Apache Iceberg tables on S3 Tables or to general-purpose S3 buckets. Includes channel setup, IAM, schemas, output key templates, CloudWatch metrics and alarms, DLQ handling, quotas, and troubleshooting. For all other KDS topics and questions, search AWS documentation and blogs instead. Triggers: Kinesis Data Streams, KDS, streaming tables, stream to S3, stream to Iceberg, stream to S3 Tables, KDS delivery, KDS channel, CreateChannel, data channel, data freshness, dead-letter queue, KDS lakehouse, serverless Kinesis delivery, Firehose alternative for KDS, zero-ops Kinesis to S3. DO NOT USE for Kinesis Data Firehose, Kinesis Video Streams, or Managed Service for Apache Flink — use dedicated skills or search documentation instead. version: 1 --- # Amazon Kinesis Data Streams ## Overview Domain expertise for Amazon Kinesis Data Streams. This skill covers **streaming tables and Amazon S3 delivery**, which provide serverless, fully managed delivery from a KDS stream directly to Apache Iceberg tables on S3 Tables or to general-purpose S3 buckets — no consumers, no Firehose, no Flink required for append-only delivery. Delivery is configured as a **channel** on a stream via `CreateChannel`. Channels consume no shard capacity and no enhanced fan-out slots, so they do not compete with existing consumers. The AWS MCP server is recommended for executing AWS operations. When the MCP server is not available, use the AWS CLI or shell commands instead. ## Which Workflow Do You Need? | Customer Intent | Reference | |---|---| | Deliver stream data to Apache Iceberg tables on S3 Tables — setup, IAM, Glue schema, type mapping, partitioning, channel lifecycle | [references/streaming-tables.md](references/streaming-tables.md) | | Deliver stream data to a general-purpose S3 bucket as objects — setup, IAM, compression, storage class, output key templates, channel lifecycle | [references/general-purpose-delivery-to-s3.md](references/general-purpose-delivery-to-s3.md) | | Build a lakehouse / data lake from Kinesis; make streaming data queryable in Athena | [references/streaming-tables.md](references/streaming-tables.md) | | Zero-ops, serverless alternative to Firehose or Kinesis consumers for KDS → S3 delivery | [references/general-purpose-delivery-to-s3.md](references/general-purpose-delivery-to-s3.md) | | CloudWatch metrics and alarms, delivery logging, CloudTrail, encryption, channel states, quotas, naming rules, what can be updated | [references/monitoring-security-and-limits.md](references/monitoring-security-and-limits.md) | | Channel is ACTIVE but no data arrives; records landing in the DLQ; rising data freshness | Start with [references/monitoring-security-and-limits.md](references/monitoring-security-and-limits.md), then the destination-specific troubleshooting table | | Deliver to both S3 and S3 Tables from one stream | Supported — create one channel per destination | ## Prerequisites Both destinations require an **ON_DEMAND stream** — provisioned-mode streams are not supported. Each channel also needs an IAM service execution role trusted by `kinesis.amazonaws.com`, and a destination in the **same Region** as the stream. ## Hard Limits to Check First These rule out the feature entirely, so confirm them before designing a solution: - **Append-only** — no CDC, upserts, or deletes - **No schema evolution** — a schema change means deleting and recreating the channel - **No backfill** — only records produced after the channel is `ACTIVE` are delivered - **No transformations** — records are delivered as-is - **New table per channel** — cannot deliver into an existing Iceberg table - **Data freshness is 300–900 seconds** — not sub-minute - **Same Region only** — cross-account is supported, cross-Region is not If any of these block the customer, recommend **Managed Service for Apache Flink** instead. ## Additional Resources - [KDS Developer Guide](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) - [KDS API Reference](https://docs.aws.amazon.com/kinesis/latest/APIReference/) - [S3 Tables Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables.html) - [Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html)
© aws · Apache-2.0 · aws/agent-toolkit-for-aws