Object storage on AWS. Also supports any S3-compatible service that speaks the same protocol (MinIO, Cloudflare R2, DigitalOcean Spaces, Wasabi, etc.).
| Field | Required | Sensitive | Default |
|---|---|---|---|
| Access Key ID | Yes | Yes | — |
| Secret Access Key | Yes | Yes | — |
| Region | Yes | No | us-east-1 |
| Custom Endpoint | No | No | (empty — AWS S3) |
Set the endpoint to use an S3-compatible service. When endpoint is set, DagFlux automatically switches to path-style URLs, which is what self-hosted S3 services like MinIO require.
Best practice is to create a dedicated IAM user (or role with access keys) scoped to only the buckets DagFlux needs.
Go to IAM → Users in the AWS console.
dagflux-s3).
Instead of attaching AmazonS3FullAccess, attach a custom policy scoped to the buckets DagFlux should read and write to. Replace my-bucket with your bucket names.
Read + write on a single bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBuckets",
"Effect": "Allow",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Resource": "*"
},
{
"Sid": "ReadWriteBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
Read-only on a single bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBuckets",
"Effect": "Allow",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Resource": "*"
},
{
"Sid": "ReadBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
Restrict to a single prefix (folder) inside a bucket:
Replace the Resource in the read/write block with:
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/dagflux-data/*"
]
…and add a Condition to the s3:ListBucket action that limits the listing to that prefix.
us-east-1, eu-west-1).For MinIO and other S3-compatible services:
https://minio.mycompany.com).us-east-1 for MinIO), and the Custom Endpoint field.