EddytorDocs & API

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:9000

Add --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

On this page