How to upload recorded media to an Amazon S3 bucket (S3Upload)

The ModuleS3Upload module for Wowza Streaming Engine™ media server software automatically uploads finished recordings to an Amazon S3 bucket. It uses the Amazon Web Services (AWS) SDK for Java to upload the recorded files.


For developers


Wowza Streaming Engine 4.0.0 or later is required.

The Amazon Web Services (AWS) Java SDK for Amazon S3 version 1.10.77 (or earlier) is required to provide the upload functionality.

Note: The latest versions of the AWS Java SDK have dependency requirements that aren't compatible with Wowza Streaming Engine software.


  1. Download
  2. Extract the contents from the downloaded (zipped) package, and then copy the lib/wse-plugin-s3upload.jar file from the package to the lib folder in your Wowza Streaming Engine installation ([install-dir]/lib).
  3. Download the following AWS Java SDK JAR files to your Wowza Streaming Engine [install-dir]/lib folder:
  1. Restart Wowza Streaming Engine.


To enable this module, add the following module definition to your application configuration. See Configure modules for details.

Fully Qualified Class Name
ModuleS3Upload Uploads recordings to Amazon S3. com.wowza.wms.plugin.s3upload.ModuleS3Upload


After enabling the module, you can adjust the default settings by adding the following properties to your application. See Configure properties for details.

/Root/Application s3UploadAccessKey String AKIAIOSFODNN7EXAMPLE Your AWS access key ID. (default: not set)
/Root/Application s3UploadSecretKey String wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Your AWS secret key. (default: not set)
/Root/Application s3UploadBucketName String myS3Bucket Your S3 bucket that you'll upload the files to. (default: not set)
/Root/Application s3UploadEndpoint String Set the S3 endpoint for bucket location. This property is required for newer locations that only support V4 authentication and is optional for other locations. See AWS Regions and Endpoints for a list of endpoint names for each location. (default: not set)
/Root/Application s3UploadResumeUploads Boolean true Specifies if interrupted file uploads should resume after a restart. (default: true)
/Root/Application s3UploadDeletOriginalFiles Boolean false Specifies if the original files should be deleted after uploading. (default: false)
/Root/Application s3UploadACLGroupGranteeUri String This value should be the URI representation of the Group Grantee found here Access Control List (ACL) Overview under Amazon S3 Predefined Groups (default: not set)
/Root/Application s3UploadACLPermissionRule String READ This should be a string that represents the level of permissions we want to grant to the Group Grantee access to the file to be uploaded. (default: not set)


When a recording is finished, a temporary file named [recording-name].upload is created to track the recording and sort any data that may be needed to resume the file upload later if it's interrupted. AWS TransferManager uploads the recorded file, splitting it into a multipart upload if required. After the recorded file is uploaded, the temporary [recording-name].upload file is deleted.

When the Wowza Streaming Engine application starts or restarts, the module checks to see if any interrupted uploads must be completed. Interrupted single part uploads are restarted from the beginning while interrupted multipart uploads are resumed from the last complete part. If the module is set to not resume uploads after interruptions (s3UploadResumeUploads = false), incomplete multipart uploads are deleted from the S3 bucket.

For developers

Source code is available on GitHub.

Wowza Media Systems™ provides developers with a platform to create streaming applications and solutions. See Wowza Developer Tools to learn more about our APIs and SDK.
Wowza media server software and all components, including modules, source code, and other related items offered on this page, are copyrighted (c) 2006-2016 by Wowza Media Systems, LLC, all rights reserved, and are licensed pursuant to the Wowza Media Software End User License Agreement.
Originally Published: For Wowza Streaming Engine on 04-14-2016.

If you're having problems or want to discuss this article, post in our forum.