aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/cloud/sigv4.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Reduce short-lived heap allocations in zenutilStefan Boberg4 days1-43/+111
| | | | | | | | | | | - Replace Sha256ToHex fmt::format_to per-byte loop with hex lookup table and ExtendableStringBuilder - Replace AwsUriEncode per-char fmt::format for percent-encoding with hex lookup table - Replace transient fmt::format calls in SignRequestV4 and GeneratePresignedUrl with ExtendableStringBuilder appends - Return string_view from GetDateStamp instead of allocating an 8-byte std::string - Replace fmt::format for XML tag construction in ExtractXmlValue with ExtendableStringBuilder - Replace fmt::format in KeyToPath/BucketRootPath with ExtendableStringBuilder - Replace ToLower heap allocations in case-insensitive MatchWildcard with inline tolower loop - Replace fmt::format per log line in logstreamlistener with ExtendableStringBuilder
* Simple S3 client (#836)Stefan Boberg2026-03-181-0/+531
This functionality is intended to be used to manage datasets for test cases, but may be useful elsewhere in the future. - **Add S3 client with AWS Signature V4 (SigV4) signing** — new `S3Client` in `zenutil/cloud/` supporting `GetObject`, `PutObject`, `DeleteObject`, `HeadObject`, and `ListObjects` operations - **Add EC2 IMDS credential provider** — automatically fetches and refreshes temporary AWS credentials from the EC2 Instance Metadata Service (IMDSv2) for use by the S3 client - **Add SigV4 signing library** — standalone implementation of AWS Signature Version 4 request signing (headers and query-string presigning) - **Add path-style addressing support** — enables compatibility with S3-compatible stores like MinIO (in addition to virtual-hosted style) - **Add S3 integration tests** — includes a `MinioProcess` test helper that spins up a local MinIO server, plus integration tests exercising the S3 client end-to-end - **Add S3-backed `HttpObjectStoreService` tests** — integration tests verifying the zenserver object store works against an S3 backend - **Refactor mock IMDS into `zenutil/cloud/`** — moved and generalized the mock IMDS server from `zencompute` so it can be reused by both compute and S3 credential tests