IronFlowDocs

s3_get_object

Download object content from S3 (or S3-compatible storage).

Parameters

bucketstringrequireddefault env S3_BUCKET
Destination bucket name.
keystringrequired
Object key inside the bucket.
regionstringdefault S3_REGION / AWS_REGION
Explicit AWS/S3 region override.
endpoint_urlstringdefault env AWS_ENDPOINT_URL
Optional custom endpoint (for S3-compatible services).
force_path_stylebooldefault false
Force path-style bucket addressing.
encodingstringdefault "text"
"text" or "base64" for downloaded body output.
output_keystringdefault "s3"
Prefix for context output keys.

Context Output

  • {output_key}_bucket — Bucket name used.
  • {output_key}_key — Object key used.
  • {output_key}_content — Object body (text or base64 depending on encoding).
  • {output_key}_encoding — Body encoding used (text or base64).
  • {output_key}_size — Byte size of the downloaded content.
  • {output_key}_content_type — Optional Content-Type response header.
  • {output_key}_content_length — Optional content length.
  • {output_key}_etag — Optional object ETag.
  • {output_key}_last_modified — Optional last modified timestamp.
  • {output_key}_successtrue on success.

The object body is bounded by IRONFLOW_MAX_FILE_BYTES (default 52,428,800 bytes). A declared Content-Length above the limit is rejected before reading, and every body chunk is counted while streaming, so missing or inaccurate metadata cannot bypass the ceiling. The complete bounded body is then decoded as text or base64.

Example

local flow = Flow.new("s3_download")

flow:step("fetch", nodes.s3_get_object({
    bucket = env("S3_BUCKET"),
    key = "raw/temp/notes/sample.txt",
    output_key = "download"
}))

flow:step("log", nodes.log({
    message = "Fetched ${ctx.download_size} bytes from ${ctx.download_bucket}/${ctx.download_key}"
})):depends_on("fetch")

return flow

IronFlow documentation

Find the next step

Type a keyword to search the documentation.

to move · Enter to open · Esc to close