Allow disabling remote signing in REST Catalog

Open
#3,888 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
68/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
python
Domain
api, backend

Research direction

Start in pyiceberg/catalog/rest/init.py at the Table construction and inspect how REST catalog properties reach FileIO configuration. Trace the handling of s3.signer, then verify that an empty catalog property disables remote signing without breaking the existing response configuration behavior.

Written by the indexing model from the issue text.

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:

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
fixes this, because it still uses the response from the catalog.

Thanks!

Dominant language
Python
Stars
1.1k
Forks
589
Avg merge
2d 4h
Merged PRs (30d)
72

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/iceberg-python

All issues in apache/iceberg-python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.