S3 is supported today for both reading inputs and writing outputs. When using a storage integration, pass
storageIntegrationId and provide a url with an s3:// scheme. assetId and HTTP urls are not supported with a storage integration.How it works
- You create an IAM role in your AWS account that AudioShake can assume.
- You register the integration in AudioShake — this returns an External ID unique to your integration.
- You add the External ID to your role’s trust policy.
- You include
storageIntegrationIdand both aurland awriteDestinationwith ans3://scheme in your/tasksrequests.
Setup
1. Create an S3 bucket
In the AWS console, create the bucket AudioShake should read from and write to (or use an existing one). Bucket names are globally unique — pick something likeacme-audioshake-outputs.
2. Create an IAM role in your AWS account
In the AWS IAM console, create a new role — for example,AudioshakeS3AccessRole. The role needs two policies: a trust policy that lets AudioShake assume the role, and a permissions policy that grants read and write access to your bucket prefix.
Trust policy. On the first step of the role wizard (“Select trusted entity”), choose Custom trust policy — not “AWS account” — so you can trust AudioShake’s specific role rather than its entire account. Paste the JSON below into the editor. The Principal is AudioShake’s published service ARN — copy it verbatim. The External ID is a placeholder for now; you’ll fill it in after registering the integration in step 4.
Trust policy
<BUCKET_NAME> and <PREFIX> with your bucket and the prefix AudioShake should read from and write under (e.g. outputs). GetObject is required to read s3:// inputs. If your inputs and outputs live under different prefixes, include both in Resource.
Permissions policy
AbortMultipartUpload is needed for large files; ListBucket is needed for testing access.
3. (Optional) Restrict access via a bucket policy
For defense-in-depth, you can also add a bucket policy that allows only this role to read from and write to the prefix. In the bucket’s Permissions tab, set the bucket policy to:Bucket policy
4. Register the integration with AudioShake
You can register the integration through the Dashboard or via the API.- Dashboard
- API
In the AudioShake Dashboard, go to Settings > Storage Integrations and click Add storage integration. Fill in:
- Type — AWS S3
- Bucket / Storage name — your bucket name (no
s3://prefix or path) - AWS region — e.g.
us-east-1 - Role ARN — the ARN of the role you created in step 2
storageIntegrationId when creating tasks, and you’ll need the External ID in step 5.5. Add the External ID to your trust policy
Back in the AWS IAM console, open your role’s Trust relationships tab and replace<EXTERNAL_ID_PLACEHOLDER> with the External ID from step 4:
6. (Optional) Test the integration
Verify that AudioShake can write to your bucket by sending aPOST to /storage-integrations/test:
<writeDestination>/.verify/<timestamp>_<uuid>.json. A 200 response means the integration is working.
Using a storage integration
Once the integration is active, includestorageIntegrationId in your Create Task request. The input url must be an s3:// URI in the registered bucket, and writeDestination must also be an s3:// URI under that bucket:
id returned when you registered the integration (see step 4) as storageIntegrationId.
Where outputs land
AudioShake writes outputs under yourwriteDestination by task:
output[].link download URLs.
Path rules
storageIntegrationIdis required and must match a registered storage integration.urlmust begin withs3://followed by a bucket and object key in that integration’s bucket.writeDestinationmust begin withs3://followed by a bucket and a prefix.- The bucket in
urlandwriteDestinationmust match the registered storage integration.
Security
- AudioShake assumes your role only at task runtime, with a session named
audioshake-task-<taskId>for auditability in CloudTrail. - Access is bounded by the permissions policy you attach to the role — AudioShake can only do what you grant.
- The External ID condition prevents the confused-deputy problem — without it, another AudioShake customer could not be tricked into assuming your role.
- You can revoke access immediately by removing the trust relationship, detaching the permissions policy, or deleting the role.