{"id":26299220,"url":"https://github.com/trackit/aws-workflow-video-on-demand","last_synced_at":"2025-07-07T13:33:24.956Z","repository":{"id":36290848,"uuid":"201280364","full_name":"trackit/aws-workflow-video-on-demand","owner":"trackit","description":"AWS Workflow for video-on-demand with automated API","archived":false,"fork":false,"pushed_at":"2023-07-18T14:08:50.000Z","size":270,"stargazers_count":63,"open_issues_count":3,"forks_count":19,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-17T19:04:05.881Z","etag":null,"topics":["aws","aws-elemental","mediaconvert","vod"],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trackit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-08-08T14:55:56.000Z","updated_at":"2025-03-17T11:42:48.000Z","dependencies_parsed_at":"2025-05-12T14:56:14.922Z","dependency_job_id":"12472a30-54cb-46ac-99da-143439bd7597","html_url":"https://github.com/trackit/aws-workflow-video-on-demand","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trackit/aws-workflow-video-on-demand","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackit%2Faws-workflow-video-on-demand","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackit%2Faws-workflow-video-on-demand/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackit%2Faws-workflow-video-on-demand/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackit%2Faws-workflow-video-on-demand/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trackit","download_url":"https://codeload.github.com/trackit/aws-workflow-video-on-demand/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackit%2Faws-workflow-video-on-demand/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264086188,"owners_count":23555300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-elemental","mediaconvert","vod"],"created_at":"2025-03-15T06:47:49.233Z","updated_at":"2025-07-07T13:33:24.909Z","avatar_url":"https://github.com/trackit.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWS Workflow VOD Terraform module\n\nAWS Elemental MediaConvert is a file-based video transcoding service that allows you to easily create video-on-demand (VOD) content for broadcast and multiscreen delivery at scale without having to worry about the complexity of building and operating your own video processing infrastructure.\nThis terraform module is used to set an automated workflow in order to transcode videos with your configuration.\n\n![Infrastructure schema](./.documentation/infrastructure.png)\n\n## Terraform versions\n\nTerraform 0.12 and newer.\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| terraform | \u003e= 0.12 |\n| aws | \u003e= 2.11 |\n\n## Providers\n\nAWS\n\n## Prerequisites\n\n * You must retrieve your **AWS Elemental MediaConvert API endpoint** (account specific). For that use aws-cli and keep the given endpoint:\n```sh\n$ aws mediaconvert describe-endpoints\n\n{\n    \"Endpoints\": [\n        {\n            \"Url\": \"https://abcd1234.mediaconvert.us-west-2.amazonaws.com\"\n        }\n    ]\n}\n```\n\n* You also must have an **input S3 bucket** and an **output S3 bucket** _**(those S3 buckets must be in the same AWS Region that region you'll set to terraform module)**_.\n\n## Usage\n\nClone our repository where you plan to use this module.\n\nBefore using the module, change directory to **mediaconvert_lambda**.\n```bash\n$ cd mediaconvert_lambda \u0026\u0026 ls\njob.json    mediaconvert.py\n```\n\n**job.json** is a MediaConvert Job configuration example, you may want to modify **job.json** file in order to change MediaConvert Job settings. Some values are populated from Lambda function, ( *\"[Populated by Lambda function]\"* values ).\n\n#### Default outputs :\n**Apple HLS :**\n| Resolution | Bitrate (bits/s) |\n|:------------:|:---------:|\n| 1280x720 | 192000 |\n| 1920x1080 | 192000 |\n\n**MP4 :**\n| Resolution | Bitrate (bits/s) |\n|:------------:|:---------:|\n| 1920x1080 | 192000 |\n\n\nOnce your MediaConvert Job configuration is done, zip mediaconvert_lambda's content :\n```bash\nmediaconvert_lambda$ zip -r ../mediaconvert_lambda.zip .\n```\n\nYou're now ready to use this module.\n\n## Usage Example\n\n```hcl\nmodule \"workflow_vod\" {\n  source = \"./aws-workflow-video-on-demand\"\n\n  region                = \"us-west-2\"\n  input_bucket_name     = \"my_input_bucket_name\"\n  output_bucket_name    = \"my_output_bucket_name\"\n  lambda_zip_path       = \"./aws-workflow-video-on-demand/mediaconvert_lambda.zip\"\n  project_base_name     = \"my_workflow_vod_name\"\n  bucket_event_prefix   = \"input/\"\n  bucket_event_suffix   = \".mov\"\n  mediaconvert_endpoint = \"https://abcd1234.mediaconvert.us-west-2.amazonaws.com\"\n}\n```\n\nWhat does it do ?\n* I upload a file _my_video_***.mov*** to the ***input/*** folder in ***my_input_bucket_name*** bucket.\n* The video file match with **bucket_event_prefix** and **bucket_event_suffix**.\n* The lambda function is triggered and start MediaConvert job.\n* Output video(s) are generated in the ***my_output_bucket_name*** bucket.\n\n### Alternative example using vars.tf\n```hcl\n# vars.tf\n/*\n// module configuration variables\n//  - By overriding default values provided by the module\n*/\n\nvariable \"region\" {\n    description = \"AWS region\"\n    default = \"us-west-2\"\n}\n\nvariable \"input_bucket_name\" {\n    description = \"Input bucket name which contains videos to be transcoded.\"\n    default = \"my_input_bucket_name\"\n    type = string\n}\n\nvariable \"output_bucket_name\" {\n    description = \"Output bucket name which contains videos after transcoding.\"\n    default = \"my_output_bucket_name\"\n    type = string\n}\n\nvariable \"bucket_event_prefix\" {\n    description = \"Element prefix to trigger lambda function.\"\n    default = \"input/\"\n}\n\nvariable \"bucket_event_suffix\" {\n    description = \"Element suffix to trigger lambda function.\"\n    default = \".mov\"\n}\n\nvariable \"project_base_name\" {\n    description = \"Project name.\"\n    default = \"my_workflow_vod_name\"\n}\n\nvariable \"lambda_zip_path\" {\n    description = \"Path to lambda function and configuration zip.\"\n    default = \"./aws-workflow-video-on-demand/mediaconvert_lambda.zip\"\n}\n\nvariable \"speke_server_url\" {\n    description = \"For future versions.\"\n    default = \"\"\n}\n\nvariable \"speke_system_id\" {\n    description = \"For future versions.\"\n    default = \"\"\n}\n\nvariable \"mediaconvert_endpoint\" {\n    description = \"AWS Element MediaConvert API endpoint.\"\n    default = \"https://abcd1234.mediaconvert.us-west-2.amazonaws.com\"\n}\n```\n\n```hcl\n# in file using module\nmodule \"workflow_vod\" {\n  source = \"./aws-workflow-video-on-demand\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrackit%2Faws-workflow-video-on-demand","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrackit%2Faws-workflow-video-on-demand","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrackit%2Faws-workflow-video-on-demand/lists"}