Skip to content

Cloud Storage

S3-compatible object storage with presigned URLs.

KindDescription
config.awsAWS credentials and region configuration
cloudstorage.s3S3 bucket connection
- name: aws_config
kind: config.aws
region: "us-east-1"
access_key_id_env: "AWS_ACCESS_KEY_ID"
secret_access_key_env: "AWS_SECRET_ACCESS_KEY"
FieldTypeRequiredDescription
regionstringConditionalAWS region. Required unless region_env is set
region_envstringConditionalEnv variable name holding the region
access_key_id_envstringNoEnvironment variable name for access key
secret_access_key_envstringNoEnvironment variable name for secret key

Credentials load from the specified environment variables. Both access_key_id_env and secret_access_key_env must resolve to non-empty values for static credentials to apply; otherwise the AWS SDK default credential chain is used (IAM roles, instance profiles, etc.).

Requests are signed with AWS Signature Version 4 by the AWS SDK using the resolved credentials. No signing configuration is required.

Use the _env variants (region_env, and bucket_env/endpoint_env below) when a value differs per deployment. The variable name is resolved from the environment registry at startup. A single config.aws entry can be reused across AWS-backed services. queue.driver.sqs references the same entry via its config: field.
- name: files
kind: cloudstorage.s3
bucket: "my-bucket"
config: app.infra:aws_config
FieldTypeRequiredDescription
bucketstringConditionalS3 bucket name. Required unless bucket_env is set
bucket_envstringConditionalEnv variable name holding the bucket name
configreferenceYesAWS config entry reference
endpointstringNoCustom endpoint for S3-compatible services
endpoint_envstringNoEnv variable name holding the custom endpoint

For MinIO or other S3-compatible services, set a custom endpoint:

- name: local_storage
kind: cloudstorage.s3
bucket: "local-bucket"
config: app.infra:aws_config
endpoint: "http://localhost:9000"

When an endpoint is provided, path-style access is enabled automatically.

See Cloud Storage Module for operations (list, upload, download, delete, presigned URLs).