Amazon S3
Register an S3 bucket - plus MinIO, Cloudflare R2, Hetzner, and any S3-compatible endpoint.
Register an S3 bucket as a storage connection. The same path works for any
S3-compatible endpoint - MinIO, Cloudflare R2, Hetzner Object Storage - by
adding --endpoint.
Register
eddytor create storage s3 \
--bucket mdm-prod \
--region eu-west-1 \
--access-key-id "$AWS_ACCESS_KEY_ID" \
--secret-access-key "$AWS_SECRET_ACCESS_KEY"S3-compatible (MinIO / R2 / Hetzner) - add the endpoint:
eddytor create storage s3 --bucket eddytor --region us-east-1 \
--access-key-id "$KEY" --secret-access-key "$SECRET" \
--endpoint http://localhost:9000Add --discover-files to also register standalone Parquet/CSV as read-only
tables.
POST /v1/storages/s3
Authorization: Bearer edd_live_…
{ "bucket_name": "mdm-prod", "region": "eu-west-1",
"access_key_id": "AKIA…", "secret_key": "…", "base_path": "master-data" }register_s3_storage(
bucket_name="mdm-prod",
region="eu-west-1",
access_key_id="AKIA...",
secret_key="...",
base_path="master-data") # optional: scope discovery to a prefix
# MinIO / S3-compatible:
register_s3_storage(bucket_name="eddytor", region="us-east-1",
access_key_id="...", secret_key="...", endpoint="http://localhost:9000")The bucket name becomes the config name. Registration probes the bucket, then discovers tables - see How registration works.
Keyless on EKS (IRSA)
On Amazon EKS you can skip static keys entirely: bind an IAM role to the Eddytor service account via IRSA, then register without access keys - the pod assumes the role. See GKE / EKS.
Good to know
Scope the IAM policy to the specific bucket(s) Eddytor uses
(
s3:GetObject/PutObject/DeleteObject/ListBucket on arn:aws:s3:::your-bucket[/*])
rather than AmazonS3FullAccess.Next
- Create a table in the new connection.
- Registration errors.