Add aws-region param to S3 store URLs
This commit is contained in:
		
							parent
							
								
									d1158bb816
								
							
						
					
					
						commit
						5789eaa3f4
					
				
					 3 changed files with 11 additions and 7 deletions
				
			
		|  | @ -5,6 +5,9 @@ | |||
| #include "store-api.hh" | ||||
| #include "archive.hh" | ||||
| #include "s3.hh" | ||||
| #ifdef ENABLE_S3 | ||||
| #include <aws/core/client/ClientConfiguration.h> | ||||
| #endif | ||||
| 
 | ||||
| #include <unistd.h> | ||||
| #include <fcntl.h> | ||||
|  | @ -496,7 +499,7 @@ struct CurlDownloader : public Downloader | |||
|             // FIXME: do this on a worker thread
 | ||||
|             sync2async<DownloadResult>(success, failure, [&]() -> DownloadResult { | ||||
| #ifdef ENABLE_S3 | ||||
|                 S3Helper s3Helper; | ||||
|                 S3Helper s3Helper(Aws::Region::US_EAST_1); // FIXME: make configurable
 | ||||
|                 auto slash = request.uri.find('/', 5); | ||||
|                 if (slash == std::string::npos) | ||||
|                     throw nix::Error("bad S3 URI ‘%s’", request.uri); | ||||
|  |  | |||
|  | @ -52,8 +52,8 @@ static void initAWS() | |||
|     }); | ||||
| } | ||||
| 
 | ||||
| S3Helper::S3Helper() | ||||
|     : config(makeConfig()) | ||||
| S3Helper::S3Helper(const string & region) | ||||
|     : config(makeConfig(region)) | ||||
|     , client(make_ref<Aws::S3::S3Client>(*config)) | ||||
| { | ||||
| } | ||||
|  | @ -70,11 +70,11 @@ class RetryStrategy : public Aws::Client::DefaultRetryStrategy | |||
|     } | ||||
| }; | ||||
| 
 | ||||
| ref<Aws::Client::ClientConfiguration> S3Helper::makeConfig() | ||||
| ref<Aws::Client::ClientConfiguration> S3Helper::makeConfig(const string & region) | ||||
| { | ||||
|     initAWS(); | ||||
|     auto res = make_ref<Aws::Client::ClientConfiguration>(); | ||||
|     res->region = Aws::Region::US_EAST_1; // FIXME: make configurable
 | ||||
|     res->region = region; | ||||
|     res->requestTimeoutMs = 600 * 1000; | ||||
|     res->retryStrategy = std::make_shared<RetryStrategy>(); | ||||
|     return res; | ||||
|  | @ -140,6 +140,7 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore | |||
|         const Params & params, const std::string & bucketName) | ||||
|         : S3BinaryCacheStore(params) | ||||
|         , bucketName(bucketName) | ||||
|         , s3Helper(get(params, "aws-region", Aws::Region::US_EAST_1)) | ||||
|     { | ||||
|         diskCache = getNarInfoDiskCache(); | ||||
|     } | ||||
|  |  | |||
|  | @ -14,9 +14,9 @@ struct S3Helper | |||
|     ref<Aws::Client::ClientConfiguration> config; | ||||
|     ref<Aws::S3::S3Client> client; | ||||
| 
 | ||||
|     S3Helper(); | ||||
|     S3Helper(const std::string & region); | ||||
| 
 | ||||
|     ref<Aws::Client::ClientConfiguration> makeConfig(); | ||||
|     ref<Aws::Client::ClientConfiguration> makeConfig(const std::string & region); | ||||
| 
 | ||||
|     struct DownloadResult | ||||
|     { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue