BTheunissen opened a new issue, #1104:
URL: https://github.com/apache/iceberg-python/issues/1104

   ### Feature Request / Improvement
   
   The AWS parameter `botocore_session` has been flagged as deprecated as of 
#922, and is due to be removed at Milestone 0.8.
   
   I'd like to request that this parameter is not deprecated, and I'd be happy 
to add a PR to bring the credential name in-line with the rest of the updated 
client configuration. `botocore_session` is helpful to make available to 
override in order to support automatically refreshable credentials for 
long-running jobs.
   
   For example in my project I have the following boto3 utility code:
   ```
   from boto3 import Session
   from botocore.credentials import (
       AssumeRoleCredentialFetcher,
       Credentials,
       DeferredRefreshableCredentials,
   )
   from botocore.session import Session as BotoSession
   
   def get_refreshable_botocore_session(
       source_credentials: Credentials | None,
       assume_role_arn: str,
       role_session_name: str | None = None,
   ) -> BotoSession:
       """Get a refreshable botocore session for assuming a role."""
       if source_credentials is not None:
           boto3_session = Session(
               aws_access_key_id=source_credentials.access_key,
               aws_secret_access_key=source_credentials.secret_key,
               aws_session_token=source_credentials.token,
           )
       else:
           boto3_session = Session()
   
       extra_args = {}
       if role_session_name:
           extra_args["RoleSessionName"] = role_session_name
       fetcher = AssumeRoleCredentialFetcher(
           client_creator=boto3_session.client,
           source_credentials=source_credentials,
           role_arn=assume_role_arn,
           extra_args={},
       )
       refreshable_credentials = DeferredRefreshableCredentials(
           method="assume-role",
           refresh_using=fetcher.fetch_credentials,
       )
       botocore_session = BotoSession()
       botocore_session._credentials = refreshable_credentials  # noqa: SLF001
       return botocore_session
   ```
   
   Which can be used as follows:
   ```
   credentials = Credentials(
       access_key=client_access_key_id,
       secret_key=client_secret_access_key,
       token=client_session_token,
   )
   botocore_session = get_refreshable_botocore_session(
       source_credentials=credentials,
       assume_role_arn=self.config["client_iam_role_arn"],
   )
   catalog_properties["botocore_session"] = botocore_session
   load_catalog(**catalog_properties)
   ```
   
   I'd also like to contribute some of this code upstream at some point to 
support refreshable botocore sessions in both the AWS Glue/DynamoDB clients, as 
well as the underlying S3 file system code.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to