> ## Documentation Index
> Fetch the complete documentation index at: https://www.qovery.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Scaleway Object Storage

> Scaleway Object Storage bucket

Qovery creates it in the Scaleway project of the environment's cluster, as a [Blueprint](https://www.qovery.com/docs/configuration/blueprints.md) service in one of your environments.

| | |
| - | - |
| Catalog name | `scaleway-object-storage` |
| Category | Storage |
| Provider | SCW |
| Engine | terraform |
| Major versions (latest release) | `default` (1.1.9) |
| Source | [SCW/object-storage/default](https://github.com/Qovery/service-catalog/tree/SCW/object-storage/default/1.1.9/SCW/object-storage/default) |

> [!TIP]
>
> **New to this?** You don't need to know Kubernetes or Terraform. Qovery sets up Scaleway Object Storage in your cloud account and manages it for you: you fill in a form, or paste the prompt below into your coding agent. The values it publishes, listed under Outputs, reach your other services as environment variables. Qovery tells you when a newer version of the Blueprint is available. Check the requirements in the Reference section before you start, and try it first in a development environment.

## Create it

> [tab] Console
>
> 1. Open the environment, then **New service** › **Blueprint**.
> 2. Find **Scaleway Object Storage** in the catalog and pick the major version.
> 3. Fill in the variables. Required ones are marked; the others use their defaults.
> 4. Create the service, and deploy it now or later.

> [tab] CLI and API
>
> List the catalog to get the latest tag, then create the service from it. `qovery api` signs the requests with your CLI session.
>
> ```bash theme={null}
> ORG_ID="REPLACE_WITH_ORGANIZATION_ID"
> ENV_ID="REPLACE_WITH_ENVIRONMENT_ID"
>
> qovery api "organization/$ORG_ID/blueprint/catalog" | jq '.. | objects | select(.name? == "scaleway-object-storage")'
>
> cat > blueprint.json <<'EOF'
> {
>   "name": "scaleway-object-storage",
>   "tag": "SCW/object-storage/default/1.1.9",
>   "icon": "app://qovery-console/scaleway",
>   "variables": [
>     {
>       "name": "bucket_name",
>       "value": "REPLACE_WITH_BUCKET_NAME"
>     }
>   ],
>   "spec_overrides": {
>     "engine_version": "1.9.7"
>   }
> }
> EOF
> BLUEPRINT_ID=$(qovery api "environment/$ENV_ID/blueprint" --method POST --input - < blueprint.json | jq -r .id)
> rm blueprint.json   # it can hold secret values
> qovery api "blueprint/$BLUEPRINT_ID/deploy" --method POST
> qovery api "blueprint/$BLUEPRINT_ID"   # status of the latest deployment
> ```
>
> Replace each `REPLACE_WITH_` value. Add optional variables to `variables` the same way.

> [tab] Coding agent
>
> Paste this into Claude Code, Cursor, Codex or another coding agent with the [Qovery agent skills](https://www.qovery.com/docs/getting-started/quickstart/agent-skills.md) installed (`curl -fsSL https://skill.qovery.com/install.sh | bash`).
>
> ```text Prompt wrap theme={null}
> Add the Qovery Blueprint Scaleway Object Storage (scaleway-object-storage) to one of my Qovery environments and deploy it. Ask me for bucket_name.
> Ask me before deploying to a production environment.
> Docs: https://www.qovery.com/docs/configuration/blueprints/scaleway-object-storage.md
> ```

You don't add any file to your repository. Qovery creates the Blueprint from the Console or the API.

## Variables and outputs

Generated from `qbm.yml` at `SCW/object-storage/default/1.1.9`, the manifest the Console form is built from.

> [accordion] All 4 variables
>
> | Name | Type | Required | Default | Secret | Description |
> | - | - | - | - | - | - |
> | `bucket_name` | string | Yes | | | Globally unique, auto-lowercased: 3–63 letters, digits or hyphens, starting and ending with a letter or digit. No underscores. |
> | `acl` | string | | `private` | | Bucket ACL |
> | `versioning_enabled` | bool | | `false` | | Enable object versioning |
> | `force_destroy` | bool | | `false` | | Allow bucket deletion even if it contains objects |

Outputs become environment variables that other services in the environment can use. By default Qovery also creates an alias for each output, prefixed with the Blueprint's name; see [Aliases Qovery creates for outputs](https://www.qovery.com/docs/configuration/environment-variables.md#aliases-qovery-creates-for-outputs) for the naming rules and the cases where no alias is created.

> [accordion] All 2 outputs
>
> | Name | Secret | Description |
> | - | - | - |
> | `bucket_name` | | Bucket name |
> | `bucket_endpoint` | | Bucket endpoint URL |

## Reference

From the Blueprint's [README](https://github.com/Qovery/service-catalog/blob/SCW/object-storage/default/1.1.9/SCW/object-storage/default/README.md).

Creates a Scaleway Object Storage bucket with configurable ACL, versioning, and force-destroy options. The bucket name is automatically lowercased before creation. Bucket names are globally unique across all Scaleway regions.

### Variables

| Name | Type | Required | Sensitive | Default | Description |
| - | - | - | - | - | - |
| `bucket_name` | string | yes | | — | Globally unique bucket name. Auto-lowercased. 3–63 chars; letters, digits, and hyphens only; must start and end with a letter or digit. Underscores are not allowed. |
| `acl` | string | no | | `private` | Bucket ACL: `private`, `public-read`, or `public-read-write`. |
| `versioning_enabled` | bool | no | | `false` | Enable object versioning |
| `force_destroy` | bool | no | | `false` | Allow bucket deletion even if it contains objects |

### Outputs

| Name | Description |
| - | - |
| `bucket_name` | Bucket name (lowercased) |
| `bucket_endpoint` | Bucket endpoint URL |

### Required Scaleway IAM permissions

Scaleway IAM permissions are granted via **permission sets** on a policy attached to the application/user whose API key is used.

Attach a policy with the following permission sets, scoped to the target Project:

| Permission set | Why |
| - | - |
| `ObjectStorageFullAccess` | Create / read / update / delete the bucket, including ACL, versioning, and tags. |
| `ProjectReadOnly` | Resolve the project context for the API call. |

The minimum scope is the Project where Qovery deploys this blueprint. If your cluster has its own project, attach the policy there.

When `force_destroy = true`, the same `ObjectStorageFullAccess` set also covers object-level deletes during teardown.


## Related topics

- [Object Storage](https://www.qovery.com/docs/configuration/object-storage.md)
- [Scaleway IAM Permissions Reference](https://www.qovery.com/docs/getting-started/security-and-compliance/scaleway-iam-permissions.md)
- [Blueprints](https://www.qovery.com/docs/configuration/blueprints.md)
- [Bring Your Own Kubernetes (BYOK)](https://www.qovery.com/docs/configuration/integrations/kubernetes/byok.md)
- [GCP IAM Permissions Reference](https://www.qovery.com/docs/getting-started/security-and-compliance/gcp-iam-permissions.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.