blob: f5d528fcfd0e5180aa3f8e4ec23fa738fe5b62e8 [file]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you 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.
#pragma once
#include <aws/core/client/ClientConfiguration.h>
#include <memory>
#include <string>
#include "cpp/aws_common.h"
namespace Aws::Auth {
class AWSCredentialsProvider;
}
namespace doris {
enum class AwsCredentialProviderVersion {
V1,
V2,
};
enum class EmptyCredentialsBehavior {
ANONYMOUS,
DEFAULT_CHAIN,
};
struct AwsCredentialOptions {
AwsCredentialProviderVersion version = AwsCredentialProviderVersion::V1;
std::string access_key;
std::string secret_key;
std::string session_token;
CredProviderType provider_type = CredProviderType::Default;
std::string role_arn;
std::string external_id;
EmptyCredentialsBehavior empty_credentials = EmptyCredentialsBehavior::DEFAULT_CHAIN;
Aws::Client::ClientConfiguration sts_client_config;
};
struct AwsCredentialResult {
std::shared_ptr<Aws::Auth::AWSCredentialsProvider> provider {};
std::string error {};
explicit operator bool() const { return provider != nullptr; }
};
class AwsCredentialFactory {
public:
static AwsCredentialResult create(const AwsCredentialOptions& options);
};
} // namespace doris