---
title: "put value · RUAL Documentation"
description: "Uploads a value as an object : JSON, rendered text, or any payload the flow computed rather than read from disk."
canonical: https://docs.rual.nl/block-types/object%20storage/s3connection_put_value
language: en
---

[Cluster](https://docs.rual.nl/cluster)

[Blocks](https://docs.rual.nl/block-types)

[Interfaces](https://docs.rual.nl/interfaces)

[Blueprints](https://docs.rual.nl/blueprints)

[Tutorials](https://docs.rual.nl/tutorials)

[Home automation](https://docs.rual.nl/home-automation)

[Examples](https://docs.rual.nl/examples)

[Reference](https://docs.rual.nl/reference)

[Architecture](https://docs.rual.nl/architecture)

[Troubleshooting](https://docs.rual.nl/troubleshooting)

Other

# put value

This block is part of the [`object storage`](https://docs.rual.nl/block-types/object%20storage) group and was last modified in core [`v15.0.1`](https://docs.rual.nl/core-versions/150001).

Uploads a value as an object : JSON, rendered text, or any payload the flow computed rather than read from disk.

- flow `flow`

- connection required `s3connection` The object storage connection to use, from an **open connection** block.

- bucket `value` Bucket name. Leave empty to use the bucket set on the connection.

- key required `value` The object key, for example `reports/2026-09.json`.

- value `value` The contents to store. An empty value stores an empty object.

- content type `value` Optional. Overrides the type guessed from the key's extension.

- cache control `value` Optional `Cache-Control` stored with the object. For content-addressed media use `public, max-age=31536000, immutable`.

- ACL `value` Optional canned ACL. Leave empty (the default) to let the bucket policy decide, which is what Ceph RGW buckets normally want.

- metadata `object` Optional user metadata, stored as `x-amz-meta-*` headers. Keys must be letters, digits, `-`, `_` or `.`; anything else is dropped.

- flow `flow`

- connection `s3connection` The same connection, so it can be passed to the next block.

- success `condition`

- error `value`

- key `value` The key the object was stored under.

- etag `value` The object's ETag, without the quotes S3 wraps it in. For a single-part upload this is the MD5 of the content.

- size `number` Bytes uploaded.

- content type `value` The Content-Type the object was stored with.

- url `value` The object's unsigned URL. It only resolves for a publicly readable object : use **presign get url** for a private one.

Uploads the `value` pin's contents as the object at `bucket`/`key`. For a payload already in memory; use s3connection_put_object for a file on disk. Numbers are rendered with strconv, not %v, so a large integer on a float64 pin stores as "1000000" and not "1e+06". An absent or empty value stores an EMPTY object rather than failing : "" and "no value" are the same thing on a value pin. Content-Type comes from the `content_type` pin, else the key's extension, else application/octet-stream. success=false with NO_CONNECTION, MISSING_BUCKET, MISSING_KEY, or an S3 error code.

| `s3 put string` |
| --- |
| `upload value` |
| `write object` |
| `put text` |

## Version history

Introduced in [`v15.0.1`](https://docs.rual.nl/core-versions/150001).

- [Back to `object storage`](https://docs.rual.nl/block-types/object%20storage): Return to the main group to view all sub-groups

- [Back to `object storage`](https://docs.rual.nl/block-types/object%20storage?group=object%20storage): Return to the group to view all blocks within this group

Was this page helpful? [Tell us what to improve](https://docs.rual.nl/support) · RUAL Docs is an integral component of the [RUAL ecosystem](https://rual.nl)
