1 /*
2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License").
5 * You may not use this file except in compliance with the License.
6 * A copy of the License is located at
7 *
8 * http://aws.amazon.com/apache2.0
9 *
10 * or in the "license" file accompanying this file. This file is distributed
11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12 * express or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15
16 package software.amazon.awssdk.auth.credentials;
17
18 import java.util.Optional;
19 import software.amazon.awssdk.annotations.SdkPublicApi;
20 import software.amazon.awssdk.auth.credentials.internal.SystemSettingsCredentialsProvider;
21 import software.amazon.awssdk.utils.SystemSetting;
22 import software.amazon.awssdk.utils.ToString;
23
24 /**
25 * {@link AwsCredentialsProvider} implementation that loads credentials from the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and
26 * AWS_SESSION_TOKEN environment variables.
27 */
28 @SdkPublicApi
29 public final class EnvironmentVariableCredentialsProvider extends SystemSettingsCredentialsProvider {
30
31 private EnvironmentVariableCredentialsProvider() {
32 }
33
34 public static EnvironmentVariableCredentialsProvider create() {
35 return new EnvironmentVariableCredentialsProvider();
36 }
37
38 @Override
39 protected Optional<String> loadSetting(SystemSetting setting) {
40 // CHECKSTYLE:OFF - Customers should be able to specify a credentials provider that only looks at the environment
41 // variables, but not the system properties. For that reason, we're only checking the environment variable here.
42 return Optional.ofNullable(System.getenv(setting.environmentVariable()));
43 // CHECKSTYLE:ON
44 }
45
46 @Override
47 public String toString() {
48 return ToString.create("EnvironmentVariableCredentialsProvider");
49 }
50 }
51