mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
This commit replaces the AWS C++ SDK with a lighter curl-based approach for S3 binary cache operations. - Removed dependency on the heavy aws-cpp-sdk-s3 and aws-cpp-sdk-transfer - Added lightweight aws-crt-cpp for credential resolution only - Leverages curl's native AWS SigV4 authentication (requires curl >= 7.75.0) - S3BinaryCacheStore now delegates to HttpBinaryCacheStore - Function s3ToHttpsUrl converts ParsedS3URL to ParsedURL - Multipart uploads are no longer supported (may be reimplemented later) - Build now requires curl >= 7.75.0 for AWS SigV4 support Fixes: #13084, #12671, #11748, #12403, #5947
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
#include "nix/store/s3-binary-cache-store.hh"
|
|
|
|
#if NIX_WITH_CURL_S3
|
|
|
|
# include <cassert>
|
|
|
|
# include "nix/store/s3-binary-cache-store.hh"
|
|
# include "nix/store/http-binary-cache-store.hh"
|
|
# include "nix/store/store-registration.hh"
|
|
|
|
namespace nix {
|
|
|
|
StringSet S3BinaryCacheStoreConfig::uriSchemes()
|
|
{
|
|
return {"s3"};
|
|
}
|
|
|
|
S3BinaryCacheStoreConfig::S3BinaryCacheStoreConfig(
|
|
std::string_view scheme, std::string_view _cacheUri, const Params & params)
|
|
: StoreConfig(params)
|
|
, HttpBinaryCacheStoreConfig(scheme, _cacheUri, params)
|
|
{
|
|
// For S3 stores, preserve S3-specific query parameters as part of the URL
|
|
// These are needed for region specification and other S3-specific settings
|
|
assert(cacheUri.query.empty());
|
|
|
|
// Only copy S3-specific parameters to the URL query
|
|
static const std::set<std::string> s3Params = {"region", "endpoint", "profile", "scheme"};
|
|
for (const auto & [key, value] : params) {
|
|
if (s3Params.contains(key)) {
|
|
cacheUri.query[key] = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
std::string S3BinaryCacheStoreConfig::doc()
|
|
{
|
|
return R"(
|
|
**Store URL format**: `s3://bucket-name`
|
|
|
|
This store allows reading and writing a binary cache stored in an AWS S3 bucket.
|
|
)";
|
|
}
|
|
|
|
static RegisterStoreImplementation<S3BinaryCacheStoreConfig> registerS3BinaryCacheStore;
|
|
|
|
} // namespace nix
|
|
|
|
#endif
|