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.
aws-s3.upload
Section titled “aws-s3.upload”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 bucketthe {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 bucketWhen the invoices/kestrel-2026-09.csv file is uploaded to the carrier-drops s3 bucket as incoming/kestrel-2026-09.csvSince 0.1.0.
aws-s3.has
Section titled “aws-s3.has”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.csvSince 0.1.0.
aws-s3.identical
Section titled “aws-s3.identical”Then [[within {duration} ]]the {word} object in the {word} s3 bucket is identical to the {filepath} fileWait (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} filewithin {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 fileSince 0.1.0.
aws-s3.properties
Section titled “aws-s3.properties”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.