apache / apache/iceberg-python

S3 remote-signer Request header case duplicated

未關閉 適合新手
#2,422 8 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Python
星號
1.1k
分支
581
平均合併
1 天 13 小時
30 天內合併 PR
76

描述

### 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

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

從 pyiceberg/io/fsspec.py 的第 106-121 行開始,追蹤 remote-signer 回應標頭如何被複製到請求中。驗證此變更會保留回傳值,同時不會建立重複的 X-Amz-Content-SHA256 回應標頭,然後使用相關測試驗證產生的請求和簽章行為。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
aws, python
領域
cloud
Issue 類型
缺陷
難度
2/5
預估耗時
1-3 小時
活躍度
冷清
描述清晰度
描述清楚
新手友好度
68/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。