Skip to content
axxbetadocs
GitHub

S3

View .mdOpen in Claude

Upload files to S3 buckets and check the objects your services write there.

The steps use the scenario’s AWS account (the {word} aws account with the following properties:, from aws-core). Checks wait for the object (10 seconds unless within {duration} says otherwise), since services write asynchronously: an upload that triggers processing (an S3 event notification to a queue, say) and the object that processing writes.

When the {filepath} file is uploaded to the {word} s3 bucket[[ as {word}]]

Upload a file (resolved against resources) to a s3 bucket, named after the file or as given. The content type follows the file’s extension.

Variants (optional parts in [[...]] above):

  • the {filepath} file is uploaded to the {word} s3 bucket
  • the {filepath} file is uploaded to the {word} s3 bucket as {word}

Parameters: {filepath} (A file of the project, without whitespace: a path relative to the resources directories or to the directory of axx.yaml, or an absolute path. Editors link it to the file), {word} (one word, no spaces)

Example:

When the invoices/kestrel-2026-09.csv file is uploaded to the carrier-drops s3 bucket
When the invoices/kestrel-2026-09.csv file is uploaded to the carrier-drops s3 bucket as incoming/kestrel-2026-09.csv

Since 0.1.0.

Then [[within {duration} ]]the {word} s3 bucket has a(n) object named {word}

Wait (10s, or the given time) until the s3 bucket has an object with that name.

Variants (optional parts in [[...]] above):

  • the {word} s3 bucket has a(n) object named {word}
  • within {duration} the {word} s3 bucket has a(n) object named {word}

Parameters: {duration} (A duration in seconds or minutes, e.g. 5s or 2m), {word} (one word, no spaces)

Example:

Then within 30s the carrier-drops s3 bucket has a(n) object named disputes/kestrel-2026-09.csv

Since 0.1.0.

Then [[within {duration} ]]the {word} object in the {word} s3 bucket is identical to the {filepath} file

Wait (10s, or the given time) until the object exists with exactly the content of the file (resolved against resources).

Variants (optional parts in [[...]] above):

  • the {word} object in the {word} s3 bucket is identical to the {filepath} file
  • within {duration} the {word} object in the {word} s3 bucket is identical to the {filepath} file

Parameters: {duration} (A duration in seconds or minutes, e.g. 5s or 2m), {word} (one word, no spaces), {filepath} (A file of the project, without whitespace: a path relative to the resources directories or to the directory of axx.yaml, or an absolute path. Editors link it to the file)

Example:

Then the disputes/kestrel-2026-09.csv object in the carrier-drops s3 bucket is identical to the expected/kestrel-disputes.csv file

Since 0.1.0.

Then [[within {duration} ]]the {word} object in the {word} s3 bucket has the following properties:
| ... | ... |

Wait (10s, or the given time) until the object exists and its JSON content has the properties: path | value rows compared as text, null for null and undefined for absent, as in the other JSON property steps.

Variants (optional parts in [[...]] above):

  • the {word} object in the {word} s3 bucket has the following properties:
  • within {duration} the {word} object in the {word} s3 bucket has the following properties:

Parameters: {duration} (A duration in seconds or minutes, e.g. 5s or 2m), {word} (one word, no spaces)

Example:

Then the summaries/kestrel-2026-09.json object in the carrier-drops s3 bucket has the following properties:

Since 0.1.0.