Skip to content
v0.8.38GitHub

GuidesBatch provisioning

Batch provisioning

Plan and create many buckets in one run, from repeated flags or a CSV file, with a scoped key for each.

Applies to v0.8.38stable, released 4 November 2026Release notes →

For a bulk run the pattern is:

  1. Set the shared provider settings once, with flags or a config file.
  2. Name the buckets with repeated --bucket flags or a CSV file in --batch-file.
  3. Let s3ctl create one scoped user and one access key per bucket.
s3ctl \
--bucket app-data \
--bucket logs-archive \
--create-scoped-credentials \
--dry-run \
--output json
examples/aws/s3ctl-batch.csv
bucket,create_scoped_credentials,credential_policy_template,enable_versioning
app-data,true,bucket-readwrite,true
logs-archive,true,bucket-readonly,false
s3ctl \
--batch-file ./examples/aws/s3ctl-batch.csv \
--endpoint https://objects.example.com \
--region us-east-1 \
--create-scoped-credentials \
--dry-run \
--output json

Each row starts from the shared settings, and a value in any other column overrides them for that row. Blank lines and lines that start with # are skipped. A relative bucket_policy_file resolves from the CSV file’s directory.

Only bucket is required. Headers are case-insensitive, and spaces or hyphens in them count as underscores.

ColumnAlso acceptedValue
bucketbucket_name, nameThe bucket name.
iam_user_nameiam_user, user_nameThe scoped user’s name, instead of one derived from the bucket.
enable_versioningversioningtrue or false.
bucket_policy_filePath to a JSON bucket policy document. Replaces any template.
bucket_policy_templateA bucket policy template. Replaces any file.
create_scoped_credentialscreate_credentials, create_iam_usertrue or false.
credential_policy_templateiam_policy_templateA credential policy template.

A row that names an unknown template, or a value that isn’t a boolean where one is expected, stops the run before anything is created and names the line.