Sync IVS real-time recording configuration#21
Open
SethSharp wants to merge 15 commits into
Open
Conversation
…ntBridge rule Co-Authored-By: Jarvis <noreply@anthropic.com>
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.
What problems are you solving?
Adds a dedicated
sync:recordingcommand that provisions all recording-related services for IVS real-time streaming, and supports multi-region IVS deployments via aregionsarray in the manifest.Is there anything the reviewer needs to know to deploy this?
1. yolo.yml
Region resolution order:
aws.ivs.regions→[aws.ivs.region]→[aws.region]2. Sync order
After running, env vars are printed per region for the app's
.env:3. IAM permissions required for the user running yolo
AmazonS3FullAccessIVSFullAccessCloudWatchLogsFullAccessAmazonEventBridgeFullAccessWhat
sync:recordingprovisionsSyncIvsRealtimeRecordingBucketStepivs-composite.{region}.amazonaws.comfor all configured IVS regions; grants MediaConvert role read accessSyncIvsStorageConfigurationStepSyncIvsEncoderConfigurationStepWhat
sync:loggingprovisionsSyncIvsCloudWatchLogGroupStepSyncIvsEventBridgeRuleStepaws.ivsstate change events per configured regionSyncIvsEventBridgeTargetStepMulti-region behaviour
All six IVS steps loop over
aws.ivs.regions(defaults to[aws.region]when not set). Each step uses a region-specific AWS SDK client created from the baseawsArgumentswith the region overridden. Results across regions are merged viaStepResult::highest()—CREATEDwins overSYNCEDwins overSKIPPED.The recordings bucket is shared across regions (S3 names are globally unique). Its bucket policy is built to include a principal entry for each configured IVS region so every
ivs-composite.{region}.amazonaws.comservice can write to it.Recording format
IVS composite recording outputs TS-based HLS (not fMP4/CMAF like individual participant recording). This is directly compatible with the existing MediaConvert pipeline — no FFmpeg or pre-processing step required.
Notes
Helpers::keyedResourceName()to avoid global name collisionsaws.ivsconfig is absent — no breaking change for existing deploymentsBucketOwnerPreferredownership — required because IVS writes objects withbucket-owner-full-controlACLsync:iamhas no IVS-specific steps — no IAM roles are provisioned for recording