apache / apache/iceberg-python

Allow disabling remote signing in REST Catalog

Ouverte
#3,888 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
1.1k
Forks
581
Merge moyen
1 j 17 h
PR mergées (30 j)
78

Description

### Feature Request / Improvement

When using a REST Catalog (e.g. Lakekeeper), pyiceberg gets remote signing details from the catalog.

However, sometimes it would be useful to _not_ use remote signing, in the case where the process performing the operations has access to the S3 endpoint through secret access keys. This is because remote signing requires a network round trip (plus any authorisation on server side).

It would be great if we could disable remote signing by respecting the `s3.signer` catalog property if it is empty.

The FileIO object gets created in `pyiceberg/catalog/rest/__init__.py`:

```python
return Table(
identifier=identifier_tuple,
metadata_location=table_response.metadata_location, # type: ignore
metadata=table_response.metadata,
io=self._load_file_io(
{**table_response.metadata.properties, **table_response.config}, table_response.metadata_location
),
catalog=self,
config=table_response.config,
)
```

This doesn't use the catalog properties that have been passed to the REST catalog init as far as I can tell.

I might be wrong, but I don't think [Support storage-credentials in REST catalog LoadTableResult- #3042
](https://github.com/apache/iceberg-python/pull/3042) fixes this, because it still uses the response from the catalog.

Thanks!

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez dans pyiceberg/catalog/rest/__init__.py, au niveau de la construction de Table, et examinez comment les propriétés du catalogue REST parviennent à la configuration de FileIO. Suivez le traitement de s3.signer, puis vérifiez qu’une propriété de catalogue vide désactive la signature distante sans perturber le comportement existant de la configuration de réponse.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api, backend
Type d'issue
Fonctionnalité
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.