From 488f1ccf78afabcc2021a97a33453ddba47719dc Mon Sep 17 00:00:00 2001 From: Ramon de Klein Date: Wed, 18 Dec 2024 19:15:53 +0100 Subject: [PATCH] Automatic AWS endpoint selection --- Minio/AWSS3Endpoints.cs | 79 ------------------------------------- Minio/Helper/RequestUtil.cs | 5 +-- 2 files changed, 2 insertions(+), 82 deletions(-) delete mode 100644 Minio/AWSS3Endpoints.cs diff --git a/Minio/AWSS3Endpoints.cs b/Minio/AWSS3Endpoints.cs deleted file mode 100644 index 40cc2c5d2..000000000 --- a/Minio/AWSS3Endpoints.cs +++ /dev/null @@ -1,79 +0,0 @@ -/* - * MinIO .NET Library for Amazon S3 Compatible Cloud Storage, (C) 2017 MinIO, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -using System.Collections.Concurrent; - -namespace Minio; - -/// -/// Amazon AWS S3 endpoints for various regions. -/// -public sealed class AWSS3Endpoints -{ - private static readonly Lazy lazy = new(() => new AWSS3Endpoints()); - - private readonly ConcurrentDictionary endpoints; - - private AWSS3Endpoints() - { - endpoints = new ConcurrentDictionary(StringComparer.Ordinal); - // ap-northeast-1 - _ = endpoints.TryAdd("ap-northeast-1", "s3-ap-northeast-1.amazonaws.com"); - // ap-northeast-2 - _ = endpoints.TryAdd("ap-northeast-2", "s3-ap-northeast-2.amazonaws.com"); - // ap-south-1 - _ = endpoints.TryAdd("ap-south-1", "s3-ap-south-1.amazonaws.com"); - // ap-southeast-1 - _ = endpoints.TryAdd("ap-southeast-1", "s3-ap-southeast-1.amazonaws.com"); - // ap-southeast-2 - _ = endpoints.TryAdd("ap-southeast-2", "s3-ap-southeast-2.amazonaws.com"); - // eu-central-1 - _ = endpoints.TryAdd("eu-central-1", "s3-eu-central-1.amazonaws.com"); - // eu-west-1 - _ = endpoints.TryAdd("eu-west-1", "s3-eu-west-1.amazonaws.com"); - // eu-west-2 - _ = endpoints.TryAdd("eu-west-2", "s3-eu-west-2.amazonaws.com"); - // sa-east-1 - _ = endpoints.TryAdd("sa-east-1", "s3-sa-east-1.amazonaws.com"); - // us-west-1 - _ = endpoints.TryAdd("us-west-1", "s3-us-west-1.amazonaws.com"); - // us-west-2 - _ = endpoints.TryAdd("us-west-2", "s3-us-west-2.amazonaws.com"); - // us-east-1 - _ = endpoints.TryAdd("us-east-1", "s3.amazonaws.com"); - // us-east-2 - _ = endpoints.TryAdd("us-east-2", "s3-us-east-2.amazonaws.com"); - // ca-central-1 - _ = endpoints.TryAdd("ca-central-1", "s3.ca-central-1.amazonaws.com"); - // cn-north-1 - _ = endpoints.TryAdd("cn-north-1", "s3.cn-north-1.amazonaws.com.cn"); - } - - public static AWSS3Endpoints Instance => lazy.Value; - - /// - /// Gets Amazon S3 endpoint for the relevant region. - /// - /// - /// - public static string Endpoint(string region) - { - string endpoint = null; - if (region is not null) _ = Instance.endpoints.TryGetValue(region, out endpoint); - endpoint ??= "s3.amazonaws.com"; - return endpoint; - } -} diff --git a/Minio/Helper/RequestUtil.cs b/Minio/Helper/RequestUtil.cs index 78d9cfae8..67cac5d3b 100644 --- a/Minio/Helper/RequestUtil.cs +++ b/Minio/Helper/RequestUtil.cs @@ -51,9 +51,8 @@ internal static Uri MakeTargetURL(string endPoint, bool secure, string bucketNam { // For Amazon S3 endpoint, try to fetch location based endpoint. var host = endPoint; - if (S3utils.IsAmazonEndPoint(endPoint)) - // Fetch new host based on the bucket location. - host = AWSS3Endpoints.Endpoint(region); + if (S3utils.IsAmazonEndPoint(endPoint) && !string.IsNullOrEmpty(region)) + host = $"s3.{region}.amazonaws.com"; if (!usePathStyle) {