Attaching a function using the CLI
Important
update-feed replaces the whole feed configuration. The
outputs array that you send replaces the existing array, and omitting
accessRoleArn clears the stored role. Always call get-feed
first and resend the complete list, including the access role. If the feed has a function
output with a model target, clearing the role this way is rejected, but an output that
you forget to resend is silently dropped.
-
Get the current configuration of the feed.
aws elemental-inference get-feed \ --regionus-west-2\ --idfeed-id -
Resend the feed with your function output added, and with the access role. In the following example,
medialive-clippingis an existing output that must be preserved, andplay-descriptionis the new function output.aws elemental-inference update-feed \ --regionus-west-2\ --idfeed-id\ --namemy-feed\ --access-role-arn arn:aws:iam::111122223333:role/ElementalInferenceFeedAccessRole\ --outputs '[ { "name": "medialive-clipping", "status": "ENABLED", "outputConfig": { "clipping": { "callbackMetadata": "game-1234" } }, "fromAssociation": true }, { "name": "play-description", "description": "One-sentence description of the last 10 seconds of play", "status": "ENABLED", "outputConfig": { "function": { "functionArn": "arn:aws:elemental-inference:us-west-2:111122223333:function/function-id", "trigger": { "fixedInterval": { "intervalSeconds": 10 } }, "frameSettings": { "frameSampling": { "mode": "UNIFORM", "count": 4 } } } } } ]'Preserve
"fromAssociation": trueon any output that was created by the service that associated the feed, such as AWS Elemental MediaLive. Omit the field when it isfalse.
You can also include a function output in the outputs array of
create-feed, when you create the feed in the first place.
Attachment examples
Transcript summary every 30 seconds, sourced from a
smart subtitles output named subs-eng.
{ "name": "transcript-summary", "status": "ENABLED", "outputConfig": { "function": { "functionArn": "arn:aws:elemental-inference:us-west-2:111122223333:function/function-id", "trigger": { "fixedInterval": { "intervalSeconds": 30 } }, "subtitlingSettings": { "outputName": "subs-eng" } } } }
Brand-safety check once per scene, sourced from a
contextual metadata output named ctx-md.
{ "name": "ad-suitability", "status": "ENABLED", "outputConfig": { "function": { "functionArn": "arn:aws:elemental-inference:us-west-2:111122223333:function/function-id", "trigger": { "perScene": {} }, "contextualMetadataSettings": { "outputName": "ctx-md" } } } }
Shot described once per shot boundary, with three frames sampled evenly across the shot and resized to 640 x 360.
{ "name": "shot-description", "status": "ENABLED", "outputConfig": { "function": { "functionArn": "arn:aws:elemental-inference:us-west-2:111122223333:function/function-id", "trigger": { "perShot": {} }, "frameSettings": { "frameSampling": { "mode": "UNIFORM", "count": 3 }, "frameSize": { "widthPixels": 640, "heightPixels": 360 } } } } }
Headline written for each detected clip, sourced from
an event clipping output named game-clips, with the first frame of the clip
as visual context.
{ "name": "clip-headline", "status": "ENABLED", "outputConfig": { "function": { "functionArn": "arn:aws:elemental-inference:us-west-2:111122223333:function/function-id", "trigger": { "perClip": {} }, "clippingSettings": { "outputName": "game-clips" }, "frameSettings": { "frameSampling": { "mode": "FIRST", "count": 1 } } } } }