diff --git a/internal/core/src/storage/ChunkManager.cpp b/internal/core/src/storage/ChunkManager.cpp index be87354f7b..46f0436b4d 100644 --- a/internal/core/src/storage/ChunkManager.cpp +++ b/internal/core/src/storage/ChunkManager.cpp @@ -14,7 +14,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include #include #include #include @@ -29,15 +28,9 @@ #include #include "storage/minio/MinioChunkManager.h" -#include "storage/aliyun/AliyunSTSClient.h" -#include "storage/aliyun/AliyunCredentialsProvider.h" -#include "storage/tencent/TencentCloudSTSClient.h" -#include "storage/tencent/TencentCloudCredentialsProvider.h" -#include "storage/huawei/HuaweiCloudCredentialsProvider.h" #include "common/Consts.h" #include "common/EasyAssert.h" #include "log/Log.h" -#include "signal.h" namespace milvus::storage { @@ -172,9 +165,8 @@ AliyunChunkManager::AliyunChunkManager(const StorageConfig& storage_config) { StorageConfig mutable_config = storage_config; mutable_config.useVirtualHost = true; if (storage_config.useIAM) { - auto aliyun_provider = Aws::MakeShared< - Aws::Auth::AliyunSTSAssumeRoleWebIdentityCredentialsProvider>( - "AliyunSTSAssumeRoleWebIdentityCredentialsProvider"); + auto aliyun_provider = AliyunChunkManager:: + GetAliyunSTSAssumeRoleWebIdentityCredentialsProvider(); auto aliyun_credentials = aliyun_provider->GetAWSCredentials(); AssertInfo(!aliyun_credentials.GetAWSAccessKeyId().empty(), "if use iam, access key id should not be empty"); @@ -214,9 +206,8 @@ TencentCloudChunkManager::TencentCloudChunkManager( StorageConfig mutable_config = storage_config; mutable_config.useVirtualHost = true; if (storage_config.useIAM) { - auto tencent_cloud_provider = Aws::MakeShared< - Aws::Auth::TencentCloudSTSAssumeRoleWebIdentityCredentialsProvider>( - "TencentCloudSTSAssumeRoleWebIdentityCredentialsProvider"); + auto tencent_cloud_provider = TencentCloudChunkManager:: + GetTencentCloudSTSAssumeRoleWebIdentityCredentialsProvider(); auto tencent_cloud_credentials = tencent_cloud_provider->GetAWSCredentials(); AssertInfo(!tencent_cloud_credentials.GetAWSAccessKeyId().empty(), @@ -254,9 +245,8 @@ HuaweiCloudChunkManager::HuaweiCloudChunkManager( StorageConfig mutable_config = storage_config; mutable_config.useVirtualHost = true; if (storage_config.useIAM) { - auto huawei_cloud_provider = Aws::MakeShared< - Aws::Auth::HuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider>( - "HuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider"); + auto huawei_cloud_provider = HuaweiCloudChunkManager:: + GetHuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider(); auto huawei_cloud_credentials = huawei_cloud_provider->GetAWSCredentials(); AssertInfo(!huawei_cloud_credentials.GetAWSAccessKeyId().empty(), @@ -285,4 +275,37 @@ HuaweiCloudChunkManager::HuaweiCloudChunkManager( storage_config.useSSL); } +std::shared_ptr< + Aws::Auth::HuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider> +HuaweiCloudChunkManager:: + GetHuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider() { + static std::shared_ptr< + Aws::Auth::HuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider> + provider = std::make_shared< + Aws::Auth:: + HuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider>(); + return provider; +} + +std::shared_ptr +AliyunChunkManager::GetAliyunSTSAssumeRoleWebIdentityCredentialsProvider() { + static std::shared_ptr< + Aws::Auth::AliyunSTSAssumeRoleWebIdentityCredentialsProvider> + provider = std::make_shared< + Aws::Auth::AliyunSTSAssumeRoleWebIdentityCredentialsProvider>(); + return provider; +} + +std::shared_ptr< + Aws::Auth::TencentCloudSTSAssumeRoleWebIdentityCredentialsProvider> +TencentCloudChunkManager:: + GetTencentCloudSTSAssumeRoleWebIdentityCredentialsProvider() { + static std::shared_ptr< + Aws::Auth::TencentCloudSTSAssumeRoleWebIdentityCredentialsProvider> + provider = std::make_shared< + Aws::Auth:: + TencentCloudSTSAssumeRoleWebIdentityCredentialsProvider>(); + return provider; +} + } // namespace milvus::storage diff --git a/internal/core/src/storage/minio/MinioChunkManager.h b/internal/core/src/storage/minio/MinioChunkManager.h index e36b08172c..1be73bb5a5 100644 --- a/internal/core/src/storage/minio/MinioChunkManager.h +++ b/internal/core/src/storage/minio/MinioChunkManager.h @@ -43,6 +43,9 @@ #include "storage/ChunkManager.h" #include "storage/Types.h" #include "log/Log.h" +#include "storage/huawei/HuaweiCloudCredentialsProvider.h" +#include "storage/aliyun/AliyunCredentialsProvider.h" +#include "storage/tencent/TencentCloudCredentialsProvider.h" namespace milvus::storage { @@ -271,6 +274,10 @@ class AliyunChunkManager : public MinioChunkManager { GetName() const { return "AliyunChunkManager"; } + + static std::shared_ptr< + Aws::Auth::AliyunSTSAssumeRoleWebIdentityCredentialsProvider> + GetAliyunSTSAssumeRoleWebIdentityCredentialsProvider(); }; class TencentCloudChunkManager : public MinioChunkManager { @@ -280,6 +287,10 @@ class TencentCloudChunkManager : public MinioChunkManager { GetName() const { return "TencentCloudChunkManager"; } + + static std::shared_ptr< + Aws::Auth::TencentCloudSTSAssumeRoleWebIdentityCredentialsProvider> + GetTencentCloudSTSAssumeRoleWebIdentityCredentialsProvider(); }; class HuaweiCloudChunkManager : public MinioChunkManager { @@ -289,6 +300,10 @@ class HuaweiCloudChunkManager : public MinioChunkManager { GetName() const { return "HuaweiCloudChunkManager"; } + + static std::shared_ptr< + Aws::Auth::HuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider> + GetHuaweiCloudSTSAssumeRoleWebIdentityCredentialsProvider(); }; using MinioChunkManagerPtr = std::unique_ptr;