apache / apache/iceberg-python

S3 remote-signer Request header case duplicated

Abierto Apto para principiantes
#2,422 8 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
1.1k
Forks
581
Merge medio
1 d 17 h
PR fusionados (30 d)
77

Descripción

### Apache Iceberg version

0.9.1 (latest release)

### Please describe the bug 🐞

request header **X-Amz-Content-SHA256** passed to the catalog service is **STREAMING-UNSIGNED-PAYLOAD-TRAILER**, and the header **X-Amz-Content-SHA256** returned by the catalog service is **UNSIGNED-PAYLOAD**

but the code logic will add both headers to the request (two X-Amz-Content-SHA256 header).

At this time, there is a possibility that the signature will not be passed (because the file storage service get **STREAMING-UNSIGNED-PAYLOAD-TRAILER** header, bug signed with **UNSIGNED-PAYLOAD**)

https://github.com/apache/iceberg-python/blob/52d810efb62e39ec6d8d6a2f4cd2cad8165e2d2c/pyiceberg/io/fsspec.py#L106-L121

line120-121 change to this can can solve the problem
```python
headers = HTTPHeaders()
for key, value in response_json["headers"].items():
headers.add_header(key, ", ".join(value))

request.headers = headers
```

### Willingness to contribute

- [x] I can contribute a fix for this bug independently
- [x] I would be willing to contribute a fix for this bug with guidance from the Iceberg community
- [ ] I cannot contribute a fix for this bug at this time

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza en pyiceberg/io/fsspec.py, en las líneas 106-121, y sigue cómo se copian los encabezados de respuesta de remote-signer en la solicitud. Verifica que el cambio conserve el valor devuelto sin crear encabezados X-Amz-Content-SHA256 duplicados y, después, valida la solicitud resultante y el comportamiento de firma con las pruebas relevantes.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
aws, python
Área
cloud
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Tranquilo
Claridad
Bien especificado
Aptitud para principiantes
68/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.