jasonf20 opened a new issue, #2177:
URL: https://github.com/apache/polaris/issues/2177

   ### Describe the bug
   
   When connecting to s3 with vended credentials the Iceberg SDK configures the 
credentials based on the response from the server which includes the properties:
   "s3.access-key-id" 
   "s3.secret-access-key" 
   "s3.session-token" 
   
   These credentials work fine however they expire after an hour by default. In 
order to refresh the S3 credentials the Iceberg SDK supports a dedicated 
credentials provider: VendedCredentialsProvider.java 
(https://github.com/apache/iceberg/blob/main/aws/src/main/java/org/apache/iceberg/aws/s3/VendedCredentialsProvider.java).
   This credential provider will get created if (and only if) the configuration 
value `AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT` is set. If not it will 
not use this provider and thus not refresh the credentials. 
   
   The client side user can't configure this endpoint manually when configuring 
the catalog since each table may have a different endpoint and the typical 
pattern is of the structure: 
`/v1/{prefix}/namespaces/{namespace}/tables/{table}/credentials`.
   
   I have debugged the returned properties from the Polaris server when loading 
vended credentials and I have noticed it **does not** include the required 
"client.refresh-credentials-endpoint" setting.  
   
   Below is a stack trace of the error received after the credentials expire:
   ```
   software.amazon.awssdk.services.s3.model.S3Exception: The provided token has 
expired. (Service: S3, Status Code: 400, Request ID: CZRQCEYY50XY7FK0, Extended 
Request ID: 
gJPo7OfiUI/h8/GDFAe7Ddz0UC1VVO6F1cCrSoDSVRZgyZ8o5thxd4fPRPvV0F/pb5Y/g2JwdDJmzStRbGxTB3p0FVnha+PX)
        at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleErrorResponse(CombinedResponseHandler.java:125)
        at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleResponse(CombinedResponseHandler.java:82)
        at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:60)
        at 
software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:41)
        at 
software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:50)
        at 
software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:38)
        at 
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
        at 
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:72)
   ```
   
   ### To Reproduce
   
   _No response_
   
   ### Actual Behavior
   
   _No response_
   
   ### Expected Behavior
   
   _No response_
   
   ### Additional context
   
   _No response_
   
   ### System information
   
   _No response_


-- 
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...@polaris.apache.org.apache.org

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

Reply via email to