feat(aws): Kinesis Video Streams + signaling channels - #1258
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 existingkinesis(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 intoproviders/aws/aws.goandserver/aws/aws.go, coverage docs regenerated.Operations
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/UpdateSignalingChannelrotate 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) withX-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 hangplan -detailed-exitcode→ exit 0, no drift on arn/id/creation_time/version8d4c3522…→25243932…), subsequent plan clean (exit 0)destroy→ DescribeStream returns ResourceNotFoundException (404)SDK dependency
aws-sdk-go-v2/service/kinesisvideois 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.