Configure the Amazon S3 connector
Connect with Amazon S3 to import videos and publish captions
Requirements: Enterprise plan
In Amazon S3
You’ll need an Amazon S3 bucket to store your media and caption files.
Option 1 - Shared Credentials (simplest)
Step 1: Create a policy for bucket access
- Log in to your AWS account
- Go to IAM in the AWS console
- In the left navigation bar, click Policies → Create policy
- Select the JSON tab
- In the policy editor, paste the following, replacing
your-bucket-name
with the name of your S3 bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::your-bucket-name"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- Click Create to save the policy
Step 2: Create an IAM user
- In IAM, click Create user
- Give the user a name (e.g.,
captionhub-s3-user
)
- Choose Attach policies directly

- Select the policy you just created
- Click Next, then Create user
Step 3: Get the user credentials
- Click the name of the user you just created
- Open the Security credentials tab

- Scroll down and click Create access key
- Select Third-party service

If you’re concerned about the warning, consider using Option 2 - Trust policy instead
- Confirm by selecting I understand the above recommendation and want to proceed to create an access key
- Click Next
- Skip the optional tags step
- Copy the Access key ID. Then click Show to view and copy the Secret access key. You will need both of these later in CaptionHub.
- Click Done
Option 2 - Trust policy (most secure)
We recommend setting this up on a call with the CaptionHub technical team. Please contact customer support to arrange this.
Step 1: Create a policy for bucket access
- Log in to your AWS account
- Go to IAM in the AWS console
- In the left navigation bar, click Policies → Create policy
- Select the JSON tab
- In the policy editor, paste the following, replacing
your-bucket-name
with the name of your S3 bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::your-bucket-name"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- Click Create to save the policy
Step 2
- Navigate back to IAM
- Click “Roles” in the left menu
- Click “Create Role”
- Choose “Custom Trust Policy”
- Edit the text box for the policy and set it as follows, replacing CAPTIONHUB_ACCOUNT_ID with the value provided by our team and EXTERNAL_ID as a long, random string (we recommend a 36 character UUID)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::CAPTIONHUB_ACCOUNT_ID:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "EXTERNAL_ID"
}
}
}
]
- Attach the permissions policy you created in step 1
- Give the role a name, for example “captionhub-s3-access-role” and click “Save”
- Now in the policy list, find the policy and open it
- Copy the ARN and send it to the CaptionHub support team. It should look like:
arn:aws:iam::YOUR_ACCOUNT:role/captionhub-s3-access-role
- Wait for confirmation that this has been set up at our end
In CaptionHub (both options)

- From the team dropdown menu (top right), open the Connectors page
- Find the Amazon S3 connector and click Edit
- Enable the connector and enter:
- Access Key ID (if using option 1)
- Secret Access Key (if using option 1)
- Region
- Bucket Name
- Role ARN (if using option 2)
- External ID (if using option 2)
- Click Save
Once the integration is set up
- On your Dashboard, choose New Project from… and select Amazon S3
- Your Amazon S3 media will be displayed. Select the files you want to import into CaptionHub for subtitling.
Did this answer your question?
😞
😐
🤩