Prerequisites
- An AWS account with an S3 bucket already created.
- IAM credentials (access key + secret) or a role that grants the minimum permissions below.
IAM policy
Grant Mapping.Travel the minimum required permissions. Thes3:GetObject and s3:DeleteObject actions are used only during the connection test to clean up the probe file — they are not exercised on delivery.
your-bucket and incoming/ with your actual bucket name and path prefix. The Resource ARN controls exactly which keys Mapping.Travel can write to.
Scope the resource to the prefix you configure as
pathPrefix on the destination. Avoid granting access to arn:aws:s3:::your-bucket/* unless you intend Mapping.Travel to write to any key.Create via the dashboard
- Open Developers → Delivery destinations → New destination.
- Choose Amazon S3 as the type.
- Fill in the bucket name, region, access key, secret key, and an optional path prefix.
- Click Test connection — Mapping.Travel runs a
HeadBucket,PutObject, andDeleteObjectprobe. Fix any errors before saving. - Click Create.
Create via API
Path prefix conventions
ThepathPrefix field controls the key prefix for every delivered file. Set it to a folder path ending with /:
pathPrefix | Example key written |
|---|---|
| (empty) | mapping_results_INV-1234_2026-06-07.csv |
incoming/ | incoming/mapping_results_INV-1234_2026-06-07.csv |
acme/prod/exports/ | acme/prod/exports/mapping_results_INV-1234_2026-06-07.csv |
{pathPrefix}mapping_results_{partnerInventoryId}_{yyyy-MM-dd}.{ext}. See File format for the complete column reference.
S3-compatible targets
TheendpointUrl field accepts any S3-compatible API endpoint, letting you use non-AWS targets without changing your workflow:
| Provider | endpointUrl example |
|---|---|
| Cloudflare R2 | https://<accountId>.r2.cloudflarestorage.com |
| MinIO | http://minio.internal:9000 |
| Backblaze B2 | https://s3.us-west-004.backblazeb2.com |
| Tigris | https://fly.storage.tigris.dev |
For R2, set
region to "auto". For MinIO, use the region you configured in your MinIO deployment (often "us-east-1" for default installs).Troubleshooting
NoSuchBucket — bucket not found
NoSuchBucket — bucket not found
The bucket name in the destination config doesn’t match an existing bucket in the configured region. Verify:
- The bucket name is spelled correctly (S3 bucket names are case-sensitive).
- The
regionfield matches the bucket’s actual region. - For S3-compatible targets, the
endpointUrlpoints to the correct host and the bucket exists on that host.
AccessDenied — permission error
AccessDenied — permission error
The IAM credentials don’t have the required permissions. Steps to debug:
- Copy the IAM policy above and attach it to the IAM user or role.
- If using a path prefix, confirm the
ResourceARN in the policy ends withyour-prefix/*— not just*. - Re-run the connection test (
POST /api/v1/delivery-destinations/{id}/test) and check theerrorfield in the response for the exact AWS error code.
SignatureDoesNotMatch — wrong credentials
SignatureDoesNotMatch — wrong credentials
The
accessKeyId / secretAccessKey pair is invalid or has been rotated. Update the destination with fresh credentials using PUT /api/v1/delivery-destinations/{id}.Files not appearing in expected prefix
Files not appearing in expected prefix
If files land at the wrong key, check that
pathPrefix ends with a /. A prefix of incoming (no trailing slash) produces keys like incomingmapping_results_….