Skip to content

Run in AWS

To speed up the process we can run all transcodings and measurements in the cloud. Currently only AWS is supported.

Requirements

There are some things needed in place before we can start.

ECS Cluster

AutoVMAF is designed to run in AWS Elastic Container Service using Fargate, also known as a Networking only cluster. Please refer to AWS documentation for information on how to set this up. The cluster needs to run a Task and not a Service and needs to have a VPC with a network gateway configured, please refer to AWS documentation. Which leads us to...

Task definition

A task definition is a text file that describes how a certain task should be run, what container should be used, storage, compute power and so on. We need to tell the ECS cluster to run our image, easyvmaf-s3.

Example of a task definition running in the region eu-north-1
{
    "containerDefinitions": [
        {
            "name": "easyvmaf-s3",
            "image": "eyevinntechnology/easyvmaf-s3:1.3.0",
            "cpu": 0,
            "essential": true,
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/easyvmaf-s3",
                    "awslogs-region": "eu-north-1",
                    "awslogs-stream-prefix": "ecs"
                }
            }
        }
    ],
    "family": "easyvmaf-s3",
    "taskRoleArn": "arn:aws:iam::123456789:role/ecsTaskExecutionRole",
    "executionRoleArn": "arn:aws:iam::123456789:role/ecsTaskExecutionRole",
    "networkMode": "awsvpc",
    "requiresAttributes": [
        {
            "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
        },
        {
            "name": "ecs.capability.execution-role-awslogs"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
        },
        {
            "name": "com.amazonaws.ecs.capability.task-iam-role"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
        },
        {
            "name": "ecs.capability.task-eni"
        }
    ],
    "compatibilities": [
        "EC2",
        "FARGATE"
    ],
    "requiresCompatibilities": [
        "FARGATE"
    ],
    "cpu": "4096",
    "memory": "8192"
}

Generate measurements

When all requirements are in place we can begin to run the measurements. Follow the Usage Guide to get started.