/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include namespace Aws { namespace S3 { enum class US_EAST_1_REGIONAL_ENDPOINT_OPTION { NOT_SET, LEGACY, //stands for using global endpoint for us-east-1, REGIONAL //stands for using regional endpoint for us-east-1 }; struct AWS_S3_API S3ClientConfiguration : public Aws::Client::GenericClientConfiguration { using BaseClientConfigClass = Aws::Client::GenericClientConfiguration; S3ClientConfiguration(); /** * Create a configuration based on settings in the aws configuration file for the given profile name. * The configuration file location can be set via the environment variable AWS_CONFIG_FILE * @param profileName the aws profile name. * @param shouldDisableIMDS whether or not to disable IMDS calls. */ S3ClientConfiguration(const char* profileName, bool shouldDisableIMDS = false); /** * Create a configuration with a predefined smart defaults * @param useSmartDefaults, required to differentiate c-tors * @param defaultMode, default mode to use * @param shouldDisableIMDS whether or not to disable IMDS calls. */ S3ClientConfiguration(bool useSmartDefaults, const char* defaultMode = "legacy", bool shouldDisableIMDS = false); /** * Converting constructors for compatibility with a legacy code */ S3ClientConfiguration(const Client::ClientConfiguration& config, Client::AWSAuthV4Signer::PayloadSigningPolicy iPayloadSigningPolicy = Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, bool iUseVirtualAddressing = true, US_EAST_1_REGIONAL_ENDPOINT_OPTION iUseUSEast1RegionalEndPointOption = US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET); bool useVirtualAddressing = true; US_EAST_1_REGIONAL_ENDPOINT_OPTION useUSEast1RegionalEndPointOption = US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET; bool disableMultiRegionAccessPoints = false; bool useArnRegion = false; Client::AWSAuthV4Signer::PayloadSigningPolicy payloadSigningPolicy = Client::AWSAuthV4Signer::PayloadSigningPolicy::RequestDependent; private: void LoadS3SpecificConfig(const Aws::String& profileName); }; } }