AWS Elemental MediaConvert
AWS Elemental MediaConvert (mediaconvert) on fakecloud: a complete 34-operation video-transcoding control plane (100% conformance). restJson1.
fakecloud implements AWS Elemental MediaConvert as a restJson1 service. All 34 operations ship with 100% conformance against AWS's own Smithy model, backed by account-partitioned state that persists across restarts in persistent mode. MediaConvert signs SigV4 with the mediaconvert scope and is routed by HTTP method plus @http URI path under the /2017-08-29 prefix (POST /2017-08-29/queues, GET /2017-08-29/jobs/{Id}, PUT /2017-08-29/presets/{Name}, POST /2017-08-29/endpoints, ...).
AWS Elemental MediaConvert on fakecloud is a faithful transcoding control plane: every CreateQueue / CreatePreset / CreateJobTemplate / CreateJob is reflected by its Get* / List*, every Delete* deletes, and a submitted job's lifecycle is modelled by advancing its stored status on the next read.
The transcoding data plane is not implemented (documented, not stubbed)
fakecloud does not run a real video transcoder. No media file is read from the input location and no rendition is written to the output location. A job is created SUBMITTED and settles to COMPLETE on the next read with correctly-shaped outputGroupDetails (one OutputGroupDetail per configured output group, each with an empty outputDetails list, because nothing was actually produced) and a populated timing. Probe returns an empty probeResults list rather than fabricating container/track metadata for a file it never opened. This is the honest control-plane treatment: clients that create jobs, poll GetJob for terminal status, and manage queues/presets/templates behave exactly as against AWS, but no pixels are transcoded.
Resources
- Queues -
CreateQueue(POST /2017-08-29/queues) validates the requirednameand thepricingPlan(ON_DEMAND/RESERVED),status(ACTIVE/PAUSED), andreservationPlanSettingsenums, then mints anarn:aws:mediaconvert:<region>:<account>:queues/<name>ARN. ARESERVEDqueue materialises areservationPlan(commitment, renewal type, reserved slots, purchased/expires timestamps) from its settings. Every account is seeded with theDefaultSYSTEM queue, which isACTIVE,ON_DEMAND, and cannot be deleted (DeleteQueueon it returnsConflictException).GetQueue/ListQueues/UpdateQueue/DeleteQueueround-trip the storedQueue;ListQueueshonorslistBy/order/maxResults/nextToken. - Presets -
CreatePreset/GetPreset/ListPresets/UpdatePreset/DeletePresetover custom presets. The requiredsettings(PresetSettings: audio/caption descriptions, container settings, video description) are stored verbatim so a read echoes exactly what the create persisted.ListPresetsfilters bycategory. - Job templates -
CreateJobTemplate/GetJobTemplate/ListJobTemplates/UpdateJobTemplate/DeleteJobTemplateover custom templates, validating thepriorityrange (-50..50),statusUpdateIntervalenum, andaccelerationSettings.mode, and storing theJobTemplateSettingsverbatim. - Jobs -
CreateJob(POST /2017-08-29/jobs) validates the requiredroleandsettings, mints anarn:aws:mediaconvert:...:jobs/<id>job id of AWS's<epoch-millis>-<suffix>form, defaults thequeueto the account'sDefaultqueue, and persists the settings, role, priority, hop destinations, acceleration settings and user metadata. The job is createdSUBMITTEDand settles toCOMPLETEon the nextGetJob/ListJobsread.CancelJobmoves a non-terminal job toCANCELED(a terminal job returnsConflictException).ListJobs/SearchJobsfilter byqueue,status, and (for search) inputfileInput, honoringorderand pagination. - Policy -
PutPolicy/GetPolicy/DeletePolicymanage the account input-restriction policy (httpInputs/httpsInputs/s3Inputs, eachALLOWEDorDISALLOWED), defaulting an omitted class toALLOWED. - Endpoints -
DescribeEndpoints(POST /2017-08-29/endpoints) echoes a deterministic account-specific endpoint URL that points back at this fakecloud host, so an SDK configured to discover endpoints resolves back to the running server. - Certificates and sharing -
AssociateCertificate/DisassociateCertificatetrack ACM certificate ARNs;CreateResourceSharemarks a job shared. - Jobs queries and versions -
StartJobsQuerysnapshots the account's jobs andGetJobsQueryResultsreturns them deterministically;ListVersionsadvertises the engine version. - Tagging -
TagResource/UntagResource/ListTagsForResourceover queue / preset / job-template / job ARNs.
Validation
Model-derived validation rejects contract violations with the exact error codes each operation declares: BadRequestException for a missing required member, an out-of-set enum, or an out-of-range integer; NotFoundException for a missing queue / preset / template / job; and ConflictException for a duplicate create or an attempt to delete the Default queue.
Persistence
All queues, presets, job templates, jobs, the policy, certificate associations, jobs-query records, and tags are account-partitioned and persist across restarts in persistent mode. The seeded Default queue is recreated for any account that does not yet have one.