Skip to content

feat(aws): Kinesis Video Streams + signaling channels - #1258

Merged
NitinKumar004 merged 1 commit into
developmentfrom
feat/aws-kinesisvideo
Sep 7, 2026
Merged

feat(aws): Kinesis Video Streams + signaling channels#1258
NitinKumar004 merged 1 commit into
developmentfrom
feat/aws-kinesisvideo

Conversation

@NitinKumar004

Copy link
Copy Markdown
Collaborator

Summary

Adds the Amazon Kinesis Video Streams control-plane service (kinesisvideo) — video streams and signaling channels — as a new greenfield restJson1 handler. Track-1 control-plane only: no GetMedia/PutMedia data plane, no real video. This is distinct from the existing kinesis (Data Streams) service, which is not modified.

Full 3-layer build: services/kinesisvideo/driver/, providers/aws/kinesisvideo/ (COW memstore mock, Snapshottable), server/aws/kinesisvideo/ (wire handler), wired into providers/aws/aws.go and server/aws/aws.go, coverage docs regenerated.

Operations

  • Streams: CreateStream, DescribeStream, UpdateStream, UpdateDataRetention, DeleteStream, ListStreams, TagStream, UntagStream, ListTagsForStream
  • Signaling channels: CreateSignalingChannel, DescribeSignalingChannel, UpdateSignalingChannel, DeleteSignalingChannel, ListSignalingChannels
  • Resource tagging: TagResource, UntagResource, ListTagsForResource

Computed-field stability (drift-free)

Streams/channels are created directly ACTIVE (waiters never hang). The StreamARN — arn:aws:kinesisvideo:<region>:<acct>:stream/<name>/<creation-unix> — the Version token, Status and CreationTime are minted once and stored. UpdateStream / UpdateDataRetention / UpdateSignalingChannel rotate the Version token; every other computed field stays stable across reads, matching real Kinesis Video.

Dispatch

POST-to-action-path (POST /createStream, /describeStream, /createSignalingChannel, …), registered before the S3 catch-all. The stream/channel paths are unique. The three resource-level tagging paths (/TagResource, /UntagResource, /ListTagsForResource) are also claimed by Savings Plans, so this handler scopes them to a request body carrying a :kinesisvideo: ARN and registers before Savings Plans; a non-Kinesis-Video ARN falls through. restJson1 errors carry exact exception names (ResourceNotFoundException 404, ResourceInUseException 409, InvalidArgumentException/InvalidResourceFormatException 400) with X-Amzn-Errortype.

Terraform live e2e (aws_kinesis_video_stream, real hashicorp/aws)

  • apply (name + data_retention_in_hours + media_type + device_name + tags) → created, status ACTIVE, no hang
  • plan -detailed-exitcodeexit 0, no drift on arn/id/creation_time/version
  • update device_name + tags → in-place apply, Version bumps (8d4c3522…25243932…), subsequent plan clean (exit 0)
  • destroy → DescribeStream returns ResourceNotFoundException (404)

SDK dependency aws-sdk-go-v2/service/kinesisvideo is test-only; the lean-binary no-engine-deps test stays green.

Deferred (control-plane scope)

Data plane (GetMedia/PutMedia/GetDataEndpoint), media storage configuration, and signaling edge config are out of scope for Track-1.

Add the Amazon Kinesis Video Streams control-plane service (restJson1,
POST-to-action-path): video streams and signaling channels plus stream-
and resource-level tagging. Streams/channels are created ACTIVE with a
stable ARN (embedding the creation Unix timestamp), Version token, Status
and CreationTime; UpdateStream/UpdateDataRetention/UpdateSignalingChannel
rotate the Version while other computed fields stay stable, so IaC plans
are drift-free. Control-plane only (no GetMedia/PutMedia). Distinct from
the existing kinesis (Data Streams) service, which is untouched.

The shared /TagResource, /UntagResource and /ListTagsForResource paths are
scoped by a :kinesisvideo: ARN in the request body and registered before
Savings Plans so a non-Kinesis-Video ARN falls through.
@NitinKumar004
NitinKumar004 merged commit d19d141 into development Sep 7, 2026
23 checks passed
@NitinKumar004
NitinKumar004 deleted the feat/aws-kinesisvideo branch September 7, 2026 08:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant