# Spec: S3 Actions ## Status Partially implemented. ## Scope This spec covers configuration acceptance and required fields for `s3.upload`, `s3.download`, `s3.list`, and `s3.delete`. Conformance does not require an S3 service. Transfers, listing formats, content-type inference, multipart tuning, credentials, and service errors belong to executor unit and integration coverage. ## Goal Workflow authors can configure S3 actions and receive useful errors for incomplete action configuration. ## Behavior A DAG containing configured upload, download, list, and delete actions passes `dagu validate` without contacting an S3 service or reading upload sources. A DAG-level `s3:` block may provide the bucket and region. Every operation requires a bucket. Upload requires a source and key; download requires a key and destination; delete requires a key or prefix. These required-field checks occur when the step starts, before contacting the service. ## Errors The following incomplete configurations fail with a nonzero exit code and an error identifying the missing field: - No bucket: `bucket is required`. - Upload without a source: `source is required for upload`. - Download without a destination: `destination is required for download`. - Delete without a key or prefix: `key or prefix is required for delete`. Timeout, abort, transfer cleanup, and service failure behavior are outside this configuration conformance scope. ## Example ```yaml s3: bucket: my-artifacts region: us-east-1 steps: - action: s3.upload with: source: ./dist/app.tar.gz key: releases/app.tar.gz ```