|
| 1 | +--- |
| 2 | +title: I get 400 Bad Request errors when uploading objects |
| 3 | +description: Solve 400 Bad Request errors when uploading objects with AES256 encryption headers |
| 4 | +tags: sse amazon-s3 aes 256 error put header server side encryption fail reject |
| 5 | +dates: |
| 6 | + validation: 2025-11-07 |
| 7 | + posted: 2025-11-07 |
| 8 | +--- |
| 9 | +import Requirements from '@macros/iam/requirements.mdx' |
| 10 | + |
| 11 | + |
| 12 | +<Requirements /> |
| 13 | + |
| 14 | +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization |
| 15 | + |
| 16 | +## Problem |
| 17 | + |
| 18 | +When uploading an object, I get an error similar to the following: |
| 19 | + |
| 20 | +```bash |
| 21 | +HTTP 400 Bad Request: InvalidArgument. |
| 22 | +``` |
| 23 | + |
| 24 | +## Cause |
| 25 | + |
| 26 | +Scaleway Object Storage previously accepted requests containing the `x-amz-server-side-encryption: AES256` header without enforcing encryption, returning a successful `HTTP 200 OK` response. |
| 27 | + |
| 28 | +Requests with this header are now explicitly rejected with an `HTTP 400 Bad Request: InvalidArgument` error, as AES256 server-side encryption is not currently supported by Scaleway Object Storage. |
| 29 | + |
| 30 | +## Solution |
| 31 | + |
| 32 | +Remove the `x-amz-server-side-encryption: AES256` header from your requests. |
| 33 | + |
| 34 | +## Going further |
| 35 | + |
| 36 | +Refer to the [dedicated documentation](/object-storage/api-cli/enable-sse-c/) for comprehensive information on how to encrypt objects using SSE-C. |
| 37 | + |
| 38 | +- If you did not manage to identify the error and solve it by yourself, [open a support ticket](/account/how-to/open-a-support-ticket/), and provide as many details as possible, along with the necessary information below: |
| 39 | + - Object Storage Endpoint (e.g. `s3.fr-par.scw.cloud`) |
| 40 | + - Bucket name |
| 41 | + - Object name (if the request concerns an object) |
| 42 | + - Request type (PUT, GET, etc.) |
| 43 | + - HTTP status code |
| 44 | + - Date and time (timestamp) |
| 45 | + - User-agent (SDK, client, console, etc.) |
| 46 | + - Transaction ID (if possible) |
| 47 | + - Log / trace of the error (if possible) |
0 commit comments