Repository navigation
Commit f186a9d
authored
fix(files): keep the signed Host header when s3_endpoint_url rewrites the upload URL (#294)
## Summary
`FileClient.upload` with `s3_endpoint_url` set rewrote the presigned
upload URL's scheme and host and sent the PUT with the new host. SigV4
signs the `Host` header, so the S3 server answered `403
SignatureDoesNotMatch`. LocalStack had skipped signature validation,
which is why the override ever appeared to work; the dev stack's S3
server since RoboFinSystems/robosystems#2000 checks it, as AWS S3 does.
The connection now goes to the override while the request carries the
`Host` the URL was signed for. Nothing changes when the option is unset.
Reproduced against the dev stack with a SigV4 presigned PUT: host
swapped → 403; host swapped with the signed `Host` header → 200.
## Scope
Patch. The option keeps its name and meaning, so the stable tier is
unchanged. No server release is needed; the fix works against any SigV4
endpoint. The option's comments and the clients README no longer
describe it as a LocalStack switch.
## Tests
- The override test now asserts the connection URL and the `Host` header
separately.
- New: without an override the presigned URL is used as signed and no
`Host` header is set.
- 26 file-client tests, ruff, format and basedpyright green.
Found during the supplyflow dev-stack migration, whose container-side
catalog upload waits on this release.
🤖 Generated with [Claude Code](https://claude.com/claude-code)4 files changed
Lines changed: 53 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | | - | |
| 71 | + | |
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | | - | |
| 112 | + | |
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| |||
184 | 184 | | |
185 | 185 | | |
186 | 186 | | |
187 | | - | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
188 | 191 | | |
189 | 192 | | |
190 | 193 | | |
191 | 194 | | |
192 | 195 | | |
193 | | - | |
194 | 196 | | |
195 | 197 | | |
196 | 198 | | |
| |||
201 | 203 | | |
202 | 204 | | |
203 | 205 | | |
| 206 | + | |
204 | 207 | | |
205 | 208 | | |
206 | 209 | | |
| |||
209 | 212 | | |
210 | 213 | | |
211 | 214 | | |
212 | | - | |
| 215 | + | |
213 | 216 | | |
214 | 217 | | |
215 | 218 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
294 | 294 | | |
295 | 295 | | |
296 | 296 | | |
297 | | - | |
298 | | - | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
299 | 300 | | |
300 | 301 | | |
301 | 302 | | |
302 | 303 | | |
303 | 304 | | |
304 | | - | |
| 305 | + | |
305 | 306 | | |
306 | 307 | | |
307 | 308 | | |
| |||
318 | 319 | | |
319 | 320 | | |
320 | 321 | | |
321 | | - | |
322 | 322 | | |
323 | | - | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
324 | 362 | | |
325 | 363 | | |
326 | 364 | | |
| |||
0 commit comments