Skip to content
streamneo.
Setup Guides12 min read

How to Stream Live Video from Amazon S3

Learn how MediaLive, S3 and CloudFront work together in AWS’s live-streaming reference architecture, and how to deploy and test the pipeline.

sn.
StreamNeoPublished 4 October 2026
Worth sharing?

Amazon S3 can store the encoded segments of a live video stream, but it cannot ingest or encode the live feed. In AWS’s reference solution, MediaLive handles ingest and encoding, S3 stores the HLS output, and CloudFront delivers it to viewers.

That distinction matters if you are planning a live channel: uploading a video to S3 does not make it a live stream. You need a pipeline that turns a source feed into playable segments, keeps a current manifest available, and routes viewer requests to those objects. AWS deploys its documented S3 solution as a CloudFormation stack.

What streaming from S3 means

When people say they are “streaming from S3”, they usually mean that S3 is the origin storage for files used by a streaming format. For HLS, those files include media segments and a manifest that tells the player what to request and in what order. As the live event continues, new segments are written and the manifest is updated so a player can follow the current edge of the broadcast.

A browser or television app does not generally receive a single endless video file from S3. It requests the manifest, reads the segment references in it, and fetches the media objects. A delivery layer such as CloudFront can serve those requests to viewers, while the encoder and input path do the work that happens before an object is available in storage.

This is why “put a video in a bucket and go live” is the wrong mental model. A pre-recorded video file in a bucket is an asset. A live stream is a moving set of encoded media objects plus a changing index, generated from a live or looping source. The S3 bucket can be part of that arrangement, but it does not create the stream by itself.

If you are building for YouTube rather than a custom playback site, remember that this AWS architecture describes a way to produce and deliver video over HLS to viewers of your own playback endpoint. It does not replace YouTube’s ingest setup or make S3 a YouTube stream key destination. For a practical check before a channel launch, the 24/7 music stream testing guide covers the separate question of checking a YouTube broadcast end to end.

Separate ingest, encoding, storage and delivery

A live pipeline is easier to reason about when you assign one job to each component. AWS’s reference solution overview describes a source, MediaLive, S3 and CloudFront. Supporting services help deploy and observe the resources, but they do not collapse those roles into one service.

Job Component in the AWS S3 reference solution What it does
Supply and ingest the source Camera, contribution encoder or other input, received by MediaLive Provides the live audio and video using a supported connection method
Encode and package AWS Elemental MediaLive Transcodes the input into an adaptive-bitrate HLS output
Store the output Amazon S3 Holds the encoded segment objects and manifest used by playback
Deliver to viewers Amazon CloudFront Uses the S3 endpoints as an origin and serves viewer requests
Deploy and support operations CloudFormation and supporting AWS services Creates the documented stack and provides permissions, monitoring and operational visibility

The architecture details make the boundary clear: MediaLive processes the feed, S3 stores its output, and CloudFront distributes it. AWS’s CloudFront documentation says, “You must use an encoder to package video content before CloudFront can distribute the content.” The encoder is not optional simply because the storage location is S3.

The distinction is useful when something fails. If no input arrives, inspect the source protocol and network path. If video arrives but cannot be played, check the encode output, manifest and segment objects. If the origin is correct but viewers see stale or inaccessible media, investigate CloudFront behaviour, permissions and caching. A single “S3 problem” label can hide failures at several stages.

Ingest and transcode with MediaLive

The first decision is how the source can reach MediaLive. AWS’s solution lists push and pull input choices, including RTP_PUSH, RTMP_PUSH, URL_PULL and INPUT_DEVICE. The input type must match what the camera or contribution encoder can actually provide, and whether it can make an outbound connection or needs to be reached at an address.

For a push input, the source sends its feed towards the AWS input. AWS describes an input security group that permits a specified source IP range, so you need to know the source address and ensure that the route and firewall rules allow the connection. For a pull input, MediaLive retrieves the feed from the configured source URL. A URL that works from your laptop is not necessarily reachable from the service, so verify that the endpoint and credentials, if any, are available to the input path.

AWS’s MediaLive workflow guide explains how inputs and channels fit together. The input represents the feed and connection; the channel processes that input and produces outputs. In the S3 reference design, the channel creates an adaptive-bitrate HLS output. That output choice affects the profiles and bitrates you configure, and ultimately the amount of media written and delivered.

A device input can use AWS Elemental Link where appropriate, but it is not a universal requirement. It is an option for a particular way of getting a source into the workflow. If the source is a software encoder or camera system with a supported push or pull protocol, select the corresponding MediaLive input instead of assuming you need a dedicated device.

Plan the source before creating the channel. Record its protocol, address, network location, expected audio and video formats, and whether the feed is continuous. Confirm that the AWS Region you intend to use supports MediaLive and that any Elemental Link device is used in the Region where it is configured. These checks prevent a common waste of time: building a channel around an input the source cannot reach.

Encoding is also where a live feed becomes a set of playback-ready outputs. If your source has inconsistent audio levels between pre-recorded tracks, encoding will not fix the mix for you; the guide to keeping sermon audio consistent explains a separate preparation step for that kind of channel. Treat the input’s content quality and the encoder’s output profile as related but distinct concerns.

Store HLS segments and manifest in S3

Once MediaLive is producing HLS, S3 has a narrower role: it stores the objects that make up the output. The player first needs a manifest, then requests the media segments referenced by it. During a live broadcast, the manifest changes as the channel advances, and newer segment objects become available. The bucket is an origin location, not a process that watches a camera and decides how to encode each frame.

This arrangement is useful when you want an AWS-managed origin for HLS output and a separate distribution layer in front of it. It also means the bucket’s permissions and object paths matter. The reference solution has access controls for its website bucket and uses IAM for fine-grained permissions, but do not assume that an example website-bucket restriction automatically protects every media object in your own deployment. Check the actual bucket policy, identity permissions, origin access setup and intended viewer access.

Think through the practical failure cases. If the manifest is missing, the player has no index to follow. If the manifest exists but references objects that are absent or inaccessible, playback will stop or show errors. If the media is present but the manifest does not advance, a viewer can appear stuck even though the encoder is still running. Keeping these objects together in your monitoring checklist makes diagnosis less vague.

S3 is also not synonymous with a particular latency. The time a viewer experiences depends on the encoder’s segmenting behaviour, manifest updates, player buffering and CDN cache behaviour. If a channel needs a particular freshness target, test the actual player path rather than inferring it from the fact that HLS objects are stored in S3. The segment-size latency guide discusses one variable in that wider chain.

Deliver playback through CloudFront

CloudFront sits between viewers and the S3 origin in the AWS S3 reference architecture. A player requests the manifest and segments through a CloudFront distribution, which retrieves objects from the configured S3 origin as needed and serves them to clients. That can put distribution closer to viewers, but the configuration still has to respect the fact that live manifests change while segments are added over time.

Caching is the central detail. A media segment is generally an object that should remain consistent once written, while a live manifest needs to reflect the current sequence. AWS’s CloudFront live-streaming guidance describes separate cache behaviours for manifests and media segments. Its guidance recommends a minimum TTL of five seconds or less for live content to help avoid stale content. Treat the precise path patterns and query-string forwarding as workflow-specific settings, not a block to paste without review.

The CloudFront examples use path patterns based on format and file extensions. They also describe forwarding query strings where features require them, such as start and end for MediaPackage time-shifted playback or aws.manifestfilter when manifest filtering is used. Those parameters are not automatically needed for the S3 reference solution. Include them only if the origin feature you have chosen depends on them.

Use HTTPS for viewer access, and make sure the distribution and origin access controls match the intended audience. A public live channel may have different access needs from an internal event. AWS’s procedure recommends redirecting viewers to HTTPS; it is still your responsibility to choose the bucket and distribution permissions that fit your content and test that an unauthorised path cannot expose objects you meant to restrict.

The S3-origin pattern is not the only possible packaging design. If you need several delivery formats or MediaPackage features such as time-shifted viewing or manifest filtering, AWS’s broader CloudFront guidance includes MediaPackage as a packaging and origin option. Compare format needs, device support, freshness, access controls, operational complexity and the cost drivers for your actual workload before changing the architecture. These components solve different requirements rather than acting as interchangeable labels.

Deploy the AWS reference solution

AWS provides the “Live Streaming on AWS with Amazon S3” solution as a CloudFormation stack. CloudFormation is the deployment mechanism: it creates the set of AWS resources defined by the solution, rather than asking you to create an S3 bucket and then treating that bucket as the entire pipeline. The design includes MediaLive and CloudFront as well as S3, with supporting services such as IAM, CloudWatch and Systems Manager.

Before launching the stack, read the current solution guide and design considerations. Confirm the Region supports the required services, the input source can connect using the selected method, and you understand what resources and permissions the deployment creates. If you use Elemental Link, the device’s configured Region matters. AWS’s Well-Architected design considerations are a useful place to verify those constraints rather than relying on an old walkthrough.

Then treat deployment as a sequence of checks, not a single button press. Review the CloudFormation stack status and outputs; verify that the expected input and channel resources exist; inspect the S3 destination and CloudFront distribution; and confirm the access roles and policies are scoped as intended. If the stack reports a failure, use its events to find the resource that failed instead of repeatedly re-running the deployment without correcting the cause.

CloudWatch and Systems Manager support the operation of the solution, while CloudTrail and logs from MediaLive, S3 and CloudFront provide visibility into infrastructure activity. Decide in advance who will notice an alert and what they will inspect. A channel that runs overnight needs an operating routine as much as it needs a valid template: check source availability, channel state, object creation, distribution behaviour and viewer playback.

Cost is workload-specific. AWS identifies encoded profile, stream bitrate and viewer count as factors that change cost, and the total plan also depends on storage, requests and delivery workload. Estimate the actual channel rather than quoting one figure as a general S3 live-streaming price. The CloudFormation deployment makes the architecture repeatable, but it does not make the components free or eliminate the need to review ongoing usage.

Test playback and troubleshoot the pipeline

Test the stream at the URL a viewer will use, not only at the origin. A working S3 object proves that an object can be read under the tested permissions; it does not prove CloudFront is routing correctly, that the manifest is fresh, or that the player can decode the output. Open the playback URL in the intended player and test from a network outside the one used to configure the system.

Use a fault-isolation order that follows the pipeline:

  1. Source: Is the camera or encoder producing the expected feed, with the protocol and network path you configured?
  2. MediaLive: Is the input receiving data, and is the channel producing the expected HLS output?
  3. S3: Are the manifest and referenced segments present at the expected paths, and can the configured origin access them?
  4. CloudFront: Does the distribution use the right origin and behaviours, and are manifest caching and query-string settings appropriate?
  5. Player: Does the viewer’s player support the delivered format and can it fetch each referenced object over HTTPS?

When playback appears frozen, compare the latest manifest content and its referenced segment objects. If the objects advance in S3 but the viewer remains behind, investigate caching and the player’s requests. If nothing new appears, move upstream to the MediaLive output and source. If requests fail with access errors, inspect both CloudFront-to-origin access and viewer-facing distribution permissions rather than making the entire bucket public as a quick fix.

Test a deliberate interruption as well as the happy path. Temporarily stop or disconnect the test source where safe, observe how the channel reports the loss, and confirm how playback behaves when new segments stop. Then restore the source and verify that the output resumes. Document the symptoms and the place to look first; that note is more useful at 03:00 than a generic instruction to “check AWS”.

For a creator whose actual need is a file looping continuously to YouTube, this AWS architecture may be more machinery than the job requires. StreamNeo addresses the specific burden of keeping a computer on to send an uploaded video continuously to YouTube: you upload the file and use your YouTube stream key, while the broadcast can run without your computer switched on. It is YouTube-only, so it does not replace an AWS pipeline for custom HLS playback or multi-component media delivery.

Before committing, compare the operating options on the pricing page. When the file and channel are ready, start free — 24-hour trial, no card.

FAQ

Can Amazon S3 stream live video by itself?

No. S3 stores objects, including the encoded HLS segments and manifest in this AWS reference solution. A live source must be ingested and encoded by a service such as MediaLive before S3 can hold the playback objects.

How do I use CloudFront with S3 for live streaming?

Configure CloudFront with the S3 origin and route manifest and segment requests through the distribution. Use live-appropriate cache behaviours so a changing manifest is not served stale, and verify HTTPS, origin access and any query strings required by your specific workflow.

Does the AWS reference solution require MediaLive and CloudFront?

Yes, its documented architecture uses MediaLive for ingest and transcoding, S3 for storage, and CloudFront for delivery. Deploy it through the documented CloudFormation stack and verify current Region support, permissions and service requirements before use.

Should I use MediaPackage instead of S3?

That depends on the packaging and playback features you need. The S3-origin design fits the documented HLS workflow, while MediaPackage can be appropriate when you need its packaging options, such as time-shifted viewing or manifest filtering; compare the actual formats, access needs, complexity and workload costs.

YOU’VE REACHED THE END

Keep the ideas coming.

More guides, useful tools and a little help for your next broadcast.

Back to the journal ↗
YOUR NEXT READ

A little more to explore.

More Setup Guides guides ↗ · All topics ↗