forked from aws/aws-sdk-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSDKGlobalConfiguration.java
More file actions
190 lines (168 loc) · 8 KB
/
SDKGlobalConfiguration.java
File metadata and controls
190 lines (168 loc) · 8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/*
* Copyright 2010-2014 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.amazonaws;
import com.amazonaws.http.AmazonHttpClient;
/**
* 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.
*/
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.
*
* <pre>
* Example:
* -Dcom.amazonaws.sdk.enableDefaultMetrics
* </pre>
*/
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";
/**
* 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";
/**
* 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.
* <p>
* 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.
* <p>
* Setting this system property to anything other than {@code null} will
* <i>disable</i> this remote fetching, and will <i>only</i> 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.
* <p>
* 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.
*/
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.
*/
public static final String ENFORCE_S3_SIGV4_SYSTEM_PROPERTY =
"com.amazonaws.services.s3.enforceV4";
/**
* @deprecated with {@link AmazonWebServiceRequest#getRequestClientOptions()}
* and {@link RequestClientOptions#setReadLimit(int)}.
* <p>
* 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.
* <p>
* 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";
/////////////////////// 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";
/**
* globalTimeOffset is a time difference in seconds between the running JVM
* and AWS. Used to globally adjust the client clock skew. Java SDK already
* provides timeOffset and accessor methods in {@link Request} class but
* those are used per request, whereas this variable will adjust clock skew
* globally. Java SDK detects clock skew errors and adjusts global clock
* skew automatically.
*/
private static volatile int globalTimeOffset;
/**
* Sets the global time difference in seconds between the running JVM and
* AWS. If this value is set then all the subsequent instantiation of an
* {@link AmazonHttpClient} will start using this
* value to generate timestamps.
*
* @param timeOffset
* the time difference in seconds between the running JVM and AWS
*/
public static void setGlobalTimeOffset(int timeOffset) {
globalTimeOffset = timeOffset;
}
/**
* Gets the global time difference in seconds between the running JVM and
* AWS. See {@link Request#getTimeOffset()} if global time offset is
* not set.
*/
public static int getGlobalTimeOffset() {
return globalTimeOffset;
}
}