snmvaughan opened a new issue, #6207:
URL: https://github.com/apache/datafusion-comet/issues/6207

   **Problem.** On the Parquet path, 
`object_store::CredentialProvider::get_credential()` receives no request path, 
so one S3 store presents one credential and Comet caches one store per bucket 
and configuration. A `CometS3CredentialProvider` gets one credential per 
bucket, requested with the path of the first file read. Deployments whose 
policies differ by location within a bucket, for example one STS session for 
`warehouse/sales` and another for `warehouse/finance`, get 403s everywhere but 
the first location.
   
   **Proposal.** Add an opt-in `@Public` extension:
   
   ```java
   public interface CometS3LocationScopedCredentialProvider extends 
CometS3CredentialProvider {
     List<String> getPolicyLocations(String bucket) throws Exception;
   }
   ```
   
   The provider lists every location in the bucket that has its own policy. 
Comet serves each request with the credential of the longest location covering 
its path, matched one segment at a time, with the bucket root as an implicit 
location. It requests a location's credential by calling 
`getCredentialsForPath` with the location as the path. Locations apply to 
native Parquet reads; the Iceberg path is unchanged. Providers that implement 
only the base interface are unaffected.
   
   **Compatibility.** The change is additive: a new interface with no change to 
existing types. Under the versioning policy, adding an abstract method to it 
later, or changing how paths match locations, would require a major release.
   
   Implementation: #6031.
   


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to