All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ibm.cloud.objectstorage.SDKGlobalConfiguration Maven / Gradle / Ivy

Go to download

The IBM COS SDK for Java - Core module holds the classes that are used by the individual service clients to interact with IBM Cloud Object Storage. Users need to depend on cos-java-sdk artifact for accessing individual client classes.

There is a newer version: 2.13.6
Show newest version
/*
 * Copyright 2010-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file 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.
 */
package com.ibm.cloud.objectstorage;

import com.ibm.cloud.objectstorage.retry.RetryMode;

/**
 * SDKGlobalConfiguration is to configure any global settings
 */
public class SDKGlobalConfiguration {
    /////////////////////// System Properties ///////////////////////

    /**
     * Disable validation of server certificates when using the HTTPS protocol. This should ONLY be
     * used to do quick smoke tests against endpoints which don't yet have valid certificates; it
     * should NEVER be used in production. This property is meant to be used as a flag (i.e.
     * -Dcom.amazonaws.sdk.disableCertChecking) rather then taking a value
     * (-Dcom.amazonaws.sdk.disableCertChecking=true). This property is treated as false by default
     * (i.e. check certificates by default)
     */
    public static final String DISABLE_CERT_CHECKING_SYSTEM_PROPERTY =
        "com.amazonaws.sdk.disableCertChecking";

    /**
     * System property used when starting up the JVM to enable the default
     * metrics collected by the AWS SDK, which uploads the derived statistics
     * to Amazon CloudWatch.
     *
     * 
     * Example:
     *  -Dcom.amazonaws.sdk.enableDefaultMetrics
     * 
*/ public static final String DEFAULT_METRICS_SYSTEM_PROPERTY = "com.amazonaws.sdk.enableDefaultMetrics"; /** System property name for the AWS access key ID */ public static final String ACCESS_KEY_SYSTEM_PROPERTY = "aws.accessKeyId"; /** System property name for the AWS secret key */ public static final String SECRET_KEY_SYSTEM_PROPERTY = "aws.secretKey"; /** * @exclude * System property name for the AWS session token */ public static final String SESSION_TOKEN_SYSTEM_PROPERTY = "aws.sessionToken"; /** * @exclude * System property for the AWS region to use when creating clients. * See {@link com.ibm.cloud.objectstorage.regions.DefaultAwsRegionProviderChain}. */ public static final String AWS_REGION_SYSTEM_PROPERTY = "aws.region"; /** * @exclude * System property for overriding the Amazon EC2 Instance Metadata Service * endpoint. */ public static final String EC2_METADATA_SERVICE_OVERRIDE_SYSTEM_PROPERTY = "com.amazonaws.sdk.ec2MetadataServiceEndpointOverride"; /** * Environment variable for overriding the Amazon EC2 Instance Metadata Service * endpoint. */ public static final String EC2_METADATA_SERVICE_OVERRIDE_ENV_VAR = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; /** * The number of seconds (either as an integer or double) before a connection to the instance * metadata service should time out. This is used for both the socket connect and read timeouts. */ public static final String AWS_METADATA_SERVICE_TIMEOUT_ENV_VAR = "AWS_METADATA_SERVICE_TIMEOUT"; /** * System property for enabling retry throttling. *

* Retry throttling is a feature which intelligently throttles retry attempts when a * large percentage of requests are failing and retries are unsuccessful, particularly * in scenarios of degraded service health. In these situations the client will drain its * internal retry capacity and slowly roll off from retry attempts until requests begin * to succeed again. At that point the retry capacity pool will begin to refill and * retries will once again be permitted *

*

* In situations where retries have been throttled this feature will effectively result in * fail-fast behavior from the client. Because retries are circumvented exceptions will * be immediately returned to the caller if the initial request is unsuccessful. This * will result in a greater number of exceptions being returned up front but prevents * requests being tied up attempting subsequent retries which are also likely to fail. *

*/ public static final String RETRY_THROTTLING_SYSTEM_PROPERTY = "com.amazonaws.sdk.enableThrottledRetry"; /** * Path to an override file for the region metadata loaded by the SDK * that maps service/region pairs to endpoints and vice versa. */ public static final String REGIONS_FILE_OVERRIDE_SYSTEM_PROPERTY = "com.amazonaws.regions.RegionUtils.fileOverride"; /** * By default, the SDK will attempt to download an up-to-date set of * region metadata from Amazon CloudFront when first required. This allows * you to look up information about new regions and services without having * to download a new version of the SDK every time. *

* If the SDK cannot download region metadata from Amazon CloudFront, it * will fall back to loading the region metadata bundled with the SDK when * it was released, which may be out of date. *

* Setting this system property to anything other than {@code null} will * disable this remote fetching, and will only load region * metadata that was bundled with the SDK. This gives you control over * when new region metadata will be picked up by your application, and * isolates you from potential issues if your application depends on being * able to load metadata about a region which is not included in your * version of the SDK and therefore may not be available in the event of * network outages. */ public static final String DISABLE_REMOTE_REGIONS_FILE_SYSTEM_PROPERTY = "com.amazonaws.regions.RegionUtils.disableRemote"; /** * By default, the AmazonS3Client will continue to use the legacy * S3Signer to authenticate requests it makes to S3 in regions that * support the older protocol. Setting this property to anything other * than null will cause the client to upgrade to Signature Version 4 * whenever it has been configured with an explicit region (which is a * required parameter for Signature Version 4). The client will continue * to use the older signature protocol when not configured with a region * to avoid breaking existing applications. *

* Signature Version 4 is more secure than the legacy S3Signer, but * requires calculating a SHA-256 hash of the entire request body which * can be expensive for large upload requests. */ @Deprecated public static final String ENABLE_S3_SIGV4_SYSTEM_PROPERTY = "com.amazonaws.services.s3.enableV4"; /** * Like {@link #ENABLE_S3_SIGV4_SYSTEM_PROPERTY}, but causes the client to * always use Signature Version 4, assuming a region of * "us-east-1" if no explicit region has been configured. This * guarantees that the more secure authentication protocol will be used, * but will cause authentication failures in code that accesses buckets in * regions other than US Standard without explicitly configuring a region. */ @Deprecated public static final String ENFORCE_S3_SIGV4_SYSTEM_PROPERTY = "com.amazonaws.services.s3.enforceV4"; /** * By default, the S3 client constructor does not set a region. *

* If the client is not configured with an explicit region, bucket operations * (eg. {@code listObjects}) will attempt to determine the bucket's region the first * time that bucket is seen. This may result in a cross-region call. *

* Setting this system property to anything other than {@code null} or * {@code false} will disable this implicit fixed-region invocation, * and any attempt to use a regionless client will fail with an IllegalStateException. * This allows SDK users to force all S3 clients to be created with a region defined, * so that calls to unintended regions are avoided. *

* Note: Even with this option enabled, SDK users can still create clients not * attached to fixed regions using specific opt-in methods on the S3 client builder. * For instance, the {@code enableGlobalBucketAccess} option explicitly allows * creation of a client that will automatically identify the location of a bucket via * a call to a single, fixed region. */ public static final String DISABLE_S3_IMPLICIT_GLOBAL_CLIENTS_SYSTEM_PROPERTY = "com.amazonaws.services.s3.disableImplicitGlobalClients"; /** * Overrides the client default {@link ClientConfiguration} to use * configuration with values tailored towards clients operating in the * same AWS region as the service endpoint they call. Timeouts in * in-region optimized configurations are generally set much lower than * the client standard configuration. */ public static final String ENABLE_IN_REGION_OPTIMIZED_MODE = "com.amazonaws.sdk.enableInRegionOptimizedMode"; /** * @deprecated with {@link AmazonWebServiceRequest#getRequestClientOptions()} * and {@link RequestClientOptions#setReadLimit(int)}. *

* The default size of the buffer when uploading data from a stream. A * buffer of this size will be created and filled with the first bytes from * a stream being uploaded so that any transmit errors that occur in that * section of the data can be automatically retried without the caller's * intervention. *

* If not set, the default value of 128 KB will be used. */ @Deprecated public static final String DEFAULT_S3_STREAM_BUFFER_SIZE = "com.amazonaws.sdk.s3.defaultStreamBufferSize"; /** * @deprecated by {@link #DEFAULT_METRICS_SYSTEM_PROPERTY}. * * Internal system property to enable timing info collection. */ @Deprecated public static final String PROFILING_SYSTEM_PROPERTY = "com.amazonaws.sdk.enableRuntimeProfiling"; /** * The default host used by client side monitoring. */ ///IBM unsupported //public static final String DEFAULT_AWS_CSM_HOST = "127.0.0.1"; /** * The default port used by client side monitoring. */ //IBM unsupported //public static final int DEFAULT_AWS_CSM_PORT = 31000; /** * The default client Id used by client side monitoring. */ //IBM unsupported //public static final String DEFAULT_AWS_CSM_CLIENT_ID = ""; /** * System property to enable/disable client side monitoring. */ //IBM unsupported //public static final String AWS_CSM_ENABLED_SYSTEM_PROPERTY = "com.ibm.cloud.objectstorage.sdk.csm.enabled"; /** * System property to set the host that will receive the client side monitoring events. */ //IBM unsupported //public static final String AWS_CSM_HOST_SYSTEM_PROPERTY = "com.ibm.cloud.objectstorage.sdk.csm.host"; /** * System property to set the port of the out of process client side * monitoring agent. */ //IBM unsupported //public static final String AWS_CSM_PORT_SYSTEM_PROPERTY = "com.ibm.cloud.objectstorage.sdk.csm.port"; /** * System property to set the client ID to use for client side monitoring * events. */ //IBM unsupported //public static final String AWS_CSM_CLIENT_ID_SYSTEM_PROPERTY = "com.ibm.cloud.objectstorage.sdk.csm.clientId"; /////////////////////// IBM Variables /////////////////////// /** Global System Property variable name for ibm api key */ public static final String IBM_API_KEY_SYSTEM_PROPERTY = "ibm.apiKeyId"; /** Global System Property variable name for ibm service instance id */ public static final String IBM_SERVICE_INSTANCE_ID_SYSTEM_PROPERTY = "ibm.serviceInstanceId"; /** Global variable name for ibm api key */ public static final String IBM_API_KEY = "IBM_API_KEY_ID"; /** Global variable name for ibm service instance id */ public static final String IBM_SERVICE_INSTANCE_ID = "IBM_SERVICE_INSTANCE_ID"; /** Global variable IAM Endpoint */ public static String IAM_ENDPOINT = "https://iam.cloud.ibm.com/identity/token"; /** Global variable IAM token retrieval max retry **/ public static int IAM_MAX_RETRY = 2; /** Global variable IAM token refresh time offset in seconds **/ public static double IAM_REFRESH_OFFSET = 0.25; /////////////////////// Environment Variables /////////////////////// /** Environment variable name for the AWS access key ID */ public static final String ACCESS_KEY_ENV_VAR = "AWS_ACCESS_KEY_ID"; /** Alternate environment variable name for the AWS access key ID */ public static final String ALTERNATE_ACCESS_KEY_ENV_VAR = "AWS_ACCESS_KEY"; /** Environment variable name for the AWS secret key */ public static final String SECRET_KEY_ENV_VAR = "AWS_SECRET_KEY"; /** Alternate environment variable name for the AWS secret key */ public static final String ALTERNATE_SECRET_KEY_ENV_VAR = "AWS_SECRET_ACCESS_KEY"; /** Environment variable name for the AWS session token */ public static final String AWS_SESSION_TOKEN_ENV_VAR = "AWS_SESSION_TOKEN"; /** Environment variable name for the AWS Web Identity Token File Path */ public static final String AWS_WEB_IDENTITY_ENV_VAR = "AWS_WEB_IDENTITY_TOKEN_FILE"; /** Environment variable name for the AWS role arn */ public static final String AWS_ROLE_ARN_ENV_VAR = "AWS_ROLE_ARN"; /** Environment variable name for the AWS role arn */ public static final String AWS_ROLE_SESSION_NAME_ENV_VAR = "AWS_ROLE_SESSION_NAME"; /** * Environment variable containing region used to configure clients. */ public static final String AWS_REGION_ENV_VAR = "AWS_REGION"; /** * Environment variable to set an alternate path to the shared config file (default path is * ~/.aws/config). */ public static final String AWS_CONFIG_FILE_ENV_VAR = "AWS_CONFIG_FILE"; /** * Environment variable to disable CBOR protocol. This forces the request * to be sent over the wire as a AWS JSON. */ public static final String AWS_CBOR_DISABLE_ENV_VAR = "AWS_CBOR_DISABLE"; /** * System property to disable CBOR protocol. This forces the request to be sent over the wire * as a AWS JSON */ public static final String AWS_CBOR_DISABLE_SYSTEM_PROPERTY = "com.amazonaws.sdk.disableCbor"; /** * Environment variable to disable Ion binary protocol. This forces the request * to be sent over the wire as Ion text. */ public static final String AWS_ION_BINARY_DISABLE_ENV_VAR = "AWS_ION_BINARY_DISABLE"; /** * System property to disable Ion binary protocol. This forces the request to be sent over the wire * as Ion text */ public static final String AWS_ION_BINARY_DISABLE_SYSTEM_PROPERTY = "com.amazonaws.sdk.disableIonBinary"; /** * Environment variable to disable loading credentials or regions from EC2 Metadata instance service. */ public static final String AWS_EC2_METADATA_DISABLED_ENV_VAR = "AWS_EC2_METADATA_DISABLED"; /** * System property to disable loading credentials or regions from EC2 Metadata instance service. */ public static final String AWS_EC2_METADATA_DISABLED_SYSTEM_PROPERTY = "com.amazonaws.sdk.disableEc2Metadata"; /** * Environment variable to enable/disable client side monitoring. */ //IBM unsupported //public static final String AWS_CSM_ENABLED_ENV_VAR = "AWS_CSM_ENABLED"; /** * Environment variable to set the host to send client side monitor events to. */ //IBM unsupported //public static final String AWS_CSM_HOST_ENV_VAR = "AWS_CSM_HOST"; /** * Environment varaible to set the port of the out of process client side * monitoring agent. */ //IBM unsupported //public static final String AWS_CSM_PORT_ENV_VAR = "AWS_CSM_PORT"; /** * Environment variable to set the client ID to use for client side * monitoring events. */ //IBM unsupported //public static final String AWS_CSM_CLIENT_ID_ENV_VAR = "AWS_CSM_CLIENT_ID"; /** * System properties to set the retry mode to use. See {@link RetryMode} for available values */ public static final String AWS_RETRY_MODE_SYSTEM_PROPERTY = "com.amazonaws.sdk.retryMode"; /** * Environment variable to set the retry mode to use. See {@link RetryMode} for available values */ public static final String AWS_RETRY_MODE_ENV_VAR = "AWS_RETRY_MODE"; /** * System properties to set the retry max attempts */ public static final String AWS_MAX_ATTEMPTS_SYSTEM_PROPERTY = "com.amazonaws.sdk.maxAttempts"; /** * Environment variable to set the retry max attempts */ public static final String AWS_MAX_ATTEMPTS_ENV_VAR= "AWS_MAX_ATTEMPTS"; /** * @deprecated by {@link SDKGlobalTime#setGlobalTimeOffset(int)} */ @Deprecated public static void setGlobalTimeOffset(int timeOffset) { SDKGlobalTime.setGlobalTimeOffset(timeOffset); } /** * @deprecated by {@link SDKGlobalTime#getGlobalTimeOffset()} */ @Deprecated public static int getGlobalTimeOffset() { return SDKGlobalTime.getGlobalTimeOffset(); } public static boolean isInRegionOptimizedModeEnabled() { return isPropertyEnabled(System.getProperty(ENABLE_IN_REGION_OPTIMIZED_MODE)); } public static boolean isCertCheckingDisabled() { return isPropertyEnabled(System.getProperty(DISABLE_CERT_CHECKING_SYSTEM_PROPERTY)); } public static boolean isCborDisabled() { return isPropertyEnabled(System.getProperty(AWS_CBOR_DISABLE_SYSTEM_PROPERTY)) || isPropertyEnabled(System.getenv(AWS_CBOR_DISABLE_ENV_VAR)); } public static boolean isIonBinaryDisabled() { return isPropertyEnabled(System.getProperty(AWS_ION_BINARY_DISABLE_SYSTEM_PROPERTY)) || isPropertyEnabled(System.getenv(AWS_ION_BINARY_DISABLE_ENV_VAR)); } public static boolean isEc2MetadataDisabled() { return isPropertyTrue(System.getProperty(AWS_EC2_METADATA_DISABLED_SYSTEM_PROPERTY)) || isPropertyTrue(System.getenv(AWS_EC2_METADATA_DISABLED_ENV_VAR)); } private static boolean isPropertyEnabled(final String property) { if (property == null || property.equalsIgnoreCase("false")) { return false; } else { return true; } } private static boolean isPropertyTrue(final String property) { if (property != null && property.equalsIgnoreCase("true")) { return true; } return false; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy