---
title: Provisioning AWS Infrastructure for Video Lesson Activity
description: "Video Lesson Activity is an open-source Moodle activity that enables video-based learning with completion tracking, analytics, and subtitles. While all learning logic runs inside Moodle, **video processing requires specialized infrastructure** that typical Moodle servers are not designed to handle efficiently.…"
url: "https://www.mooplugins.com/docs/video-lesson-activity/core-concepts/provisioning-aws-infrastructure-for-video-lesson-activity/"
updated: "2026-01-27"
category: Video Lesson Activity / Core Concepts
---

# Provisioning AWS Infrastructure for Video Lesson Activity

Video Lesson Activity is an open-source Moodle activity that enables video-based learning with completion tracking, analytics, and subtitles.

While all learning logic runs inside Moodle, **video processing requires specialized infrastructure** that typical Moodle servers are not designed to handle efficiently. For this reason, Video Lesson Activity integrates with **AWS-managed media services** for video transcoding, subtitle generation, and secure delivery.

**This documentation explains:**

- Why AWS infrastructure is required
- What responsibilities belong to Moodle vs AWS
- How the AWS setup guides fit together
- Who should follow these guides

This page is intentionally **conceptual**, not procedural.

### Who this documentation is for

This documentation is intended for:

- Moodle Administrators responsible for infrastructure decisions
- AWS Administrators or DevOps teams
- Technical partners setting up self-hosted Video Lesson deployments

It assumes:

- An active AWS account with billing enabled
- IAM permissions to create AWS services and roles
- Basic familiarity with AWS concepts such as S3, IAM, and Lambda

It does not require:

- Writing Lambda code
- Modifying the Video Lesson plugin

### Why AWS is used

Video Lesson Activity handles:

- Video lesson creation
- Completion rules and progress tracking
- Analytics and reporting
- Subtitle selection and display
- Moodle UI and learning workflows

AWS is used **only** for tasks that require scalable, media-specific infrastructure:

- Video transcoding into streaming formats
- Subtitle and transcript generation
- Secure, high-performance video delivery

This separation keeps Moodle fast, stable, and focused on learning rather than media processing.

### High-level architecture

At a high level, the system works as follows:

1. A video is uploaded from Moodle to an S3 input bucket
2. An AWS Lambda function detects the upload
3. A MediaConvert job is created to transcode the video
4. Processed outputs are written to an S3 output bucket
5. Optional transcription and subtitle generation is triggered
6. Videos and subtitles are delivered securely via CloudFront
7. Moodle fetches playback URLs, subtitles, and processing status

Moodle never performs video transcoding directly.

### Responsibilities: Moodle vs AWS

**Moodle (Video Lesson Activity)**

- Video lesson configuration
- Completion rules and enforcement
- Analytics and reporting
- Subtitle selection and display
- Student and Teacher experience

**AWS Infrastructure**

- Video transcoding and streaming formats
- Subtitle and transcript generation
- Secure media delivery
- Scalable storage
- Job status tracking

This clear separation prevents Moodle from becoming a media server and allows the system to scale reliably.

### AWS services involved

The AWS stack uses the following services:

- AWS MediaConvert for video transcoding
- AWS Lambda for event-driven orchestration
- Amazon S3 for media storage
- Amazon Transcribe for speech-to-text processing
- Amazon CloudFront for secure content delivery
- Amazon DynamoDB for processing state and metadata

Each service has a single, well-defined responsibility.

### How the documentation is structured

This guide acts as the **entry point** for AWS provisioning.

The detailed setup is covered in the following documents:

1. **[Guide to Create a MediaConvert, Transcribe, and CloudFront Stack](/docs/guide-to-create-a-mediaconvert-transcribe-and-cloudfront-stack/) -**Covers AWS resource creation and permissions
2. **[Media Processing Lambda – Functional Guide](/docs/media-processing-lambda-functional-guide/) -**Explains how video uploads are processed and tracked
3. **[Transcription and Subtitle Processing Lambda – Functional Guide](/docs/transcription-and-subtitle-processing-lambda-functional-guide/) -**Explains subtitle generation, translation, and lifecycle handling

Each document focuses on a single concern to avoid repetition.

### Deployment models supported

This AWS architecture supports:

- Fully self-hosted AWS deployments
- Multiple Moodle sites using a shared AWS account
- Optional subtitle generation
- Usage-based scaling and costs

If you need help with AWS provisioning, managed hosting, or have any questions about this setup, please [contact us](/contact/) and we’ll be happy to assist.
