feat(rest): support AWS SigV4 request signing for the REST catalog#2660
feat(rest): support AWS SigV4 request signing for the REST catalog#2660plusplusjiajia wants to merge 2 commits into
Conversation
|
There's a PR open for SigV4 signing, is this picking up from that one? #2311 I ask as its had a few rounds of feedback already. |
@dannycjones Thanks for the pointer — I'd missed #2311, just took a look and compared the two. Mine isn't based on it: it follows Iceberg Java's RESTSigV4AuthSessionRESTSigV4AuthSession(apache/iceberg#11995) and the merged iceberg-cpp version(apache/iceberg-cpp#616). The main difference I see is the base64-encoded x-amz-content-sha256 convention (the Java behavior), which #2311's hex-only signing doesn't cover and which some REST servers require. |
|
I haven't thought quite clearly about this part yet, my general intuition is that it would be better to start from something like a Would be happy to hear more thoughts on this |
What
Adds AWS SigV4 request signing to the REST catalog client, for catalogs that authenticate REST requests with SigV4.
Approach
SigV4Signer+ a smallHttpRequestSignertrait; the client signs each request after token +header.*extras. Follows Iceberg Java'sRESTSigV4AuthSession(signs all headers minus a blacklist).PayloadHashModehandles the Iceberg detail:x-amz-content-sha256is base64 for non-empty bodies (hex for empty);StandardAwskeeps hex everywhere.rest.sigv4-enabled,rest.signing-region/-name/-access-key-id/-secret-access-key/-session-token(falls back toAWS_*env), mutually