in src/handlers/shared.ts [97:131]
export async function HandleFinishedTranscoding(event: EventBridgeEvent<"MediaConvert Job State Change", any>) {
const userMetaData = event.detail.userMetadata;
// https://docs.aws.amazon.com/mediaconvert/latest/ug/user-metadata-tags.html
const token = `${userMetaData.StepFunctionTaskToken1!}${userMetaData.StepFunctionTaskToken2!}${userMetaData.StepFunctionTaskToken3!}`;
if (event.detail.status === "COMPLETE") {
await StepFunctions.sendTaskSuccess({
output: JSON.stringify({
AssetId: userMetaData.AssetId,
Bucket: userMetaData.Bucket,
// tslint:disable-next-line:max-line-length
// MediaConvert adds a suffix to the output to allow for multiple outputs in the same location (i.e. _720p, _1080p, ..)
// We get the actual filename from the output details
Key: event.detail.outputGroupDetails[0].outputDetails[0].outputFilePaths[0].replace(`s3://${userMetaData.Bucket}/`, ""),
Type: "Video"
}),
taskToken: token
}).promise();
}
if (event.detail.status === "STATUS_UPDATE" || event.detail.status === "PROGRESSING") {
await StepFunctions.sendTaskHeartbeat({
taskToken: token
}).promise();
}
if (event.detail.status === "ERROR" || event.detail.status === "CANCELED") {
await StepFunctions.sendTaskFailure({
error: event.detail.errorMessage,
taskToken: token
}).promise();
}
return;
}