---
title: "Object storage (S3 API) integration · RUAL Documentation"
description: "Use Object storage (S3 API) in RUAL blueprints. Put, get, list and delete objects and presign URLs on Ceph RGW or any S3 compatible endpoint."
canonical: https://docs.rual.nl/integrations/object-storage
language: en
---

# Object storage (S3 API)

Put, get, list and delete objects and presign URLs on Ceph RGW or any S3 compatible endpoint.

> **Credentials** Create a [service provider](https://docs.rual.nl/blueprints/service-providers) for this service and point the blocks at it. The cluster holds the key, so it never sits on a pin or in a blueprint export.

## Blocks

Add these blocks on the canvas by searching for their name. Each block page lists its pins and how it behaves.

- [delete object `s3connection_delete_object` Removes an object. Deleting a key that is not there is not an error.](https://docs.rual.nl/block-types/object%20storage/s3connection_delete_object)

- [get object `s3connection_get_object` Downloads an object to a file. The object is streamed to disk, so a large file costs no extra memory.](https://docs.rual.nl/block-types/object%20storage/s3connection_get_object)

- [object exists `s3connection_head_object` Checks whether an object exists and reads its size, type and metadata : without downloading it.](https://docs.rual.nl/block-types/object%20storage/s3connection_head_object)

- [list objects `s3connection_list_objects` Lists one page of a bucket's objects under a prefix. Feed next page token back into page token to walk a large bucket.](https://docs.rual.nl/block-types/object%20storage/s3connection_list_objects)

- [open connection `s3connection_open` Opens a connection to S3-compatible object storage (Ceph RGW, MinIO, Amazon S3). Point it at an object storage service provider so the secret key stays in the provider store and never appears in this blueprint : the key pins are the older way and leave the secret readable to anyone who can open the flow.](https://docs.rual.nl/block-types/object%20storage/s3connection_open)

- [presign get url `s3connection_presign_get` Creates a temporary URL that lets anyone read one private object, without proxying it through this server. Not available in a simulation : the URL is a real credential.](https://docs.rual.nl/block-types/object%20storage/s3connection_presign_get)

- [presign put url `s3connection_presign_put` Creates a temporary URL that lets a browser upload one object directly to storage, without the file passing through this server. Not available in a simulation : the URL is a real credential.](https://docs.rual.nl/block-types/object%20storage/s3connection_presign_put)

- [put object `s3connection_put_object` Uploads a file to object storage. The file is streamed from disk, so an object of any size costs the same memory.](https://docs.rual.nl/block-types/object%20storage/s3connection_put_object)

- [put value `s3connection_put_value` Uploads a value as an object : JSON, rendered text, or any payload the flow computed rather than read from disk.](https://docs.rual.nl/block-types/object%20storage/s3connection_put_value)

## Next steps

- [Third-Party Integrations](https://docs.rual.nl/tutorials/third-party-integrations): Calling outside APIs, receiving their webhooks, keeping data in sync and handling failures.

- [All integrations](https://docs.rual.nl/integrations): Everything RUAL connects to, by what it is for.
