

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 글로벌 구성 AWS SDKs 및 도구
<a name="creds-config-files"></a>

 AWS SDKs 및 AWS Command Line Interface (AWS CLI)와 같은 기타 AWS 개발자 도구를 사용하면 AWS 서비스 APIs. 하지만 이를 시도하기 전에 요청 작업을 수행하는 데 필요한 정를 사용하여 SDK 또는 도구를 구성해야 합니다.

이 정보에는 다음과 같은 항목이 포함됩니다.
+ API의 직접 호출자를 식별하는 **보안 인증 정보**. 자격 증명은 AWS 서버에 대한 요청을 암호화하는 데 사용됩니다. 이 정보를 사용하여는 자격 증명을 AWS 확인하고 이와 연결된 권한 정책을 검색할 수 있습니다. 그러면 사용자에게 허용된 작업을 결정할 수 있습니다.
+  AWS CLI 또는 SDK에 요청을 처리하는 방법, 요청을 보낼 위치(서비스 AWS 엔드포인트), 응답을 해석하거나 표시하는 방법을 알리는 데 사용하는 **기타 구성 세부** 정보입니다.

각 SDK 또는 도구는 필요한 보안 인증 및 구성 정보를 제공하는 데 사용할 수 있는 여러 소스를 지원합니다. 일부 소스는 SDK 또는 도구에만 적용되며, 해당 방법을 사용하는 방법에 대한 자세한 사항은 해당 도구 또는 SDK 설명서를 참조해야 합니다.

그러나 AWS SDKs 및 도구는 코드 자체 이외의 기본 소스에서 공통 설정을 지원합니다. 이 섹션은 다음 주제를 포함합니다.

**Topics**
+ [공유 `config` 및 `credentials` 파일을 사용하여 AWS SDKs 및 도구 전역 구성](file-format.md)
+ [AWS SDKs 및 도구의 공유 `config` 및 `credentials` 파일 위치 찾기 및 변경](file-location.md)
+ [환경 변수를 사용하여 AWS SDKs 및 도구 전역 구성](environment-variables.md)
+ [JVM 시스템 속성을 사용하여 및 전역 구성 AWS SDK for Java AWS SDK for Kotlin](jvm-system-properties.md)

# 공유 `config` 및 `credentials` 파일을 사용하여 AWS SDKs 및 도구 전역 구성
<a name="file-format"></a>

공유 AWS `config` 및 `credentials` 파일은 AWS SDK 또는 도구에 대한 인증 및 구성을 지정할 수 있는 가장 일반적인 방법입니다.

공유 `config` 및 `credentials` 파일에는 프로파일 집합이 포함되어 있습니다. 프로필은 키-값 페어로 구성된 구성 설정 세트로, AWS SDKs, AWS Command Line Interface (AWS CLI) 및 기타 도구에서 사용됩니다. 구성 값은 프로파일이 사용될 때 SDK/도구의 일부 측면을 구성하기 위해 프로파일에 첨부됩니다. 이러한 파일은 값이 사용자의 로컬 환경에 있는 모든 애플리케이션, 프로세스 또는 SDK에 적용된다는 점에서 “공유”됩니다.

공유 `config` 및 `credentials` 파일 모두 ASCII 문자만 포함된 일반 텍스트 파일입니다(UTF-8 인코딩). 이들은 일반적으로 [INI](https://wikipedia.org/wiki/INI_file) 파일이라고 하는 형식을 취합니다.

## 프로파일
<a name="file-format-profile"></a>

공유 `config` 및 `credentials` 파일 내의 설정은 특정 프로파일과 연결됩니다. 파일 안에 여러 프로파일을 정의해, 서로 다른 개발 환경에 적용할 다양한 설정 구성을 만들 수 있습니다.

 `[default]` 프로파일에는 이름이 지정된 특정 프로파일이 지정되지 않은 경우 SDK 또는 도구 작업에 사용되는 값이 포함됩니다. 이름으로 명시적으로 참조할 수 있는 별도의 프로파일을 만들 수도 있습니다. 각 프로파일은 애플리케이션과 시나리오에 따라 서로 다른 설정과 값을 사용할 수 있습니다.

**참고**  
`[default]`는 단순히 이름이 지정되지 않은 프로파일입니다. 이 프로파일은 사용자가 프로파일을 지정하지 않을 경우 SDK에서 사용하는 기본 프로파일이기 때문에 `default`(이)라는 이름이 지정되었습니다. 상속된 기본값을 다른 프로파일에 제공하지 않습니다. `[default]` 프로파일에서 무언가를 설정하고 명명된 프로파일에서는 설정하지 않으면 명명된 프로파일을 사용할 때 값이 설정되지 않습니다.

### 명명된 프로파일 설정
<a name="set-named-profile"></a>

동일한 파일 안에 `[default]` 프로파일과 여러 명명된 프로파일이 함께 존재할 수 있습니다. 코드를 실행할 때 SDK나 도구에서 사용할 프로파일의 설정을 선택하려면 다음 설정을 사용하세요. 프로파일은 코드 내부에서 선택할 수도 있고, AWS CLI를 사용할 때 명령별로 지정할 수도 있습니다.

다음을 설정하여 이 기능을 구성하세요.

**`AWS_PROFILE` - 환경 변수**  
이 환경 변수가 명명된 프로파일 또는 “기본값”으로 설정된 경우 모든 SDK 코드와 AWS CLI 명령은 해당 프로파일의 설정을 사용합니다.  
명령 행을 통한 환경 변수 설정의 Linux/macOS 예제:  

```
export AWS_PROFILE="my_default_profile_name";
```
명령줄을 통해 환경 변수를 설정하는 Windows 예제:  

```
setx AWS_PROFILE "my_default_profile_name"
```

**`aws.profile` - JVM 시스템 속성**  
JVM에서 실행되는 Kotlin SDK와 Java SDK 2.x의 경우, [`aws.profile` 시스템 속성을 설정](jvm-system-properties.md#jvm-sys-props-set)할 수 있습니다. SDK가 서비스 클라이언트를 생성할 때, 코드에서 별도로 재정의하지 않는 한 명명된 프로파일의 설정을 사용합니다. Java SDK 1.x는 이 시스템 속성을 지원하지 않습니다.

**참고**  
여러 애플리케이션이 실행되는 서버에서 애플리케이션을 운영하는 경우, 기본 프로파일 대신 항상 명명된 프로파일을 사용할 것을 권장합니다. 기본 프로필은 환경의 모든 AWS 애플리케이션에서 자동으로 선택되며 이들 간에 공유됩니다. 따라서 누군가 자신의 애플리케이션을 위해 기본 프로파일을 수정하면, 다른 애플리케이션에도 의도치 않은 영향을 줄 수 있습니다. 이를 방지하기 위해 공유 `config` 파일에 명명된 프로파일을 정의하고, 코드에서 해당 프로파일을 지정하여 애플리케이션에서 사용하도록 설정하세요. 적용 범위가 오직 사용자의 애플리케이션에만 영향을 준다는 것이 확실한 경우, 환경 변수나 JVM 시스템 속성을 사용해 명명된 프로파일을 설정할 수도 있습니다.

## 구성 파일 형식
<a name="file-format-config"></a>

`config` 파일은 섹션으로 구성됩니다. 섹션은 이름이 지정된 설정 모음이며 다른 섹션 정의 라인을 찾을 때까지 계속됩니다.

`config` 파일은 다음 형식을 사용하는 일반 텍스트 파일입니다.
+ 섹션의 모든 항목은 `setting-name=value`와 같은 일반적인 형식을 취합니다.
+ 줄은 해시태그 문자(`#`)로 시작하여 주석 처리할 수 있습니다.

### 섹션 유형
<a name="section-types"></a>

섹션 정의는 설정 모음에 이름을 적용하는 줄입니다. 섹션 정의 줄은 대괄호(`[``]`)로 시작하고 끝납니다. 대괄호 안에는 섹션 유형 식별자와 섹션의 사용자 지정 이름이 있습니다. 문자, 숫자, 하이픈(`-`)및 밑줄(`_`)은 사용할 수 있지만 공백은 사용할 수 없습니다.

#### 섹션 유형: `default`
<a name="section-default"></a>

섹션 정의 줄의 예: `[default]`

 `[default]`는 `profile` 섹션 식별자가 필요하지 않은 유일한 프로파일입니다.

다음은 `[default]` 프로파일이 있는 기본 `config` 파일을 보여주는 예입니다. [`region`](feature-region.md) 설정값을 설정합니다. 이 줄 이후에 나오는 모든 설정은 다른 섹션 정의가 나타나기 전까지 해당 프로파일에 속하는 것으로 간주됩니다.

```
[default]
#Full line comment, this text is ignored.
region = us-east-2
```

#### 섹션 유형: `profile`
<a name="section-profile"></a>

섹션 정의 줄의 예: `[profile dev]`

`profile` 섹션 정의 줄은 서로 다른 개발 시나리오에 적용할 수 있는 명명된 구성 그룹입니다. 명명된 프로파일의 이해를 높이려면 프로파일의 이전 섹션을 참조하십시오.

다음 예제는 `profile` 섹션 정의 줄과 `foo`라고 부르는 명명된 프로파일이 포함된 `config` 파일을 보여줍니다. 이 줄 이후에 나오는 모든 설정은 다른 섹션 정의가 나타나기 전까지 이 명명된 프로파일에 속하는 것으로 간주됩니다.

```
[profile foo]
...settings...
```

일부 설정에는 다음 예제의 `s3` 설정 및 하위 설정과 같은 중첩된 자체 하위 설정 그룹이 있습니다. 하나 이상의 공백으로 들여쓰기하여 하위 설정을 그룹과 연결합니다.

```
[profile test]
region = us-west-2
s3 =
    max_concurrent_requests=10
    max_queue_size=1000
```

#### 섹션 유형: `sso-session`
<a name="section-session"></a>

섹션 정의 줄의 예: `[sso-session my-sso]`

`sso-session` 섹션 정의 줄은를 사용하여 AWS 자격 증명을 확인하도록 프로필을 구성하는 데 사용하는 설정 그룹의 이름을 지정합니다 AWS IAM Identity Center. Single Sign-On 인증 구성에 대한 자세한 내용은 [IAM Identity Center를 사용하여 AWS SDK 및 도구 인증](access-sso.md) 섹션을 참조하십시오. 프로파일은 키-값 쌍으로 `sso-session` 섹션에 연결됩니다. 여기서 `sso-session` 값은 키이고 `sso-session` 섹션 이름은 `sso-session = <name-of-sso-session-section>` 같은 값입니다.

1다음 예에서는 ‘my-sso’의 토큰을 사용하여 ‘111122223333’ 계정의 ‘SampleRole’ IAM 역할에 대한 단기 AWS 보안 인증을 가져올 프로파일을 구성합니다. “my-sso” `sso-session` 섹션은 `sso-session` 키를 사용하여 `profile` 섹션에서 이름으로 참조됩니다.

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
```

#### 섹션 유형: `services`
<a name="section-services"></a>

섹션 정의 줄의 예: `[services dev]`

**참고**  
이 `services` 섹션은 서비스별 엔드포인트 사용자 정의를 지원하며 이 기능이 포함된 SDK 및 도구에서만 사용할 수 있습니다. SDK에서 이 기능을 사용할 수 있는지 확인하려면 서비스별 엔드포인트에 대한 [AWS SDKs 도구 지원](feature-ss-endpoints.md#ss-endpoints-sdk-compat)을(를)참조하십시오.

`services` 섹션 정의 줄은 AWS 서비스 요청에 대한 사용자 지정 엔드포인트를 구성하는 설정 그룹의 이름을 지정합니다. 프로파일은 키-값 쌍으로 `services` 섹션에 연결됩니다. 여기서 `services` 값은 키이고 `services` 섹션 이름은 `services = <name-of-services-section>` 같은 값입니다.

 `services` 섹션은 `<SERVICE> = ` 줄별로 하위 섹션으로 더 구분됩니다. 여기서는 AWS 서비스 식별자 키`<SERVICE>`입니다. AWS 서비스 식별자는 모든 공백을 밑줄로 바꾸고 모든 문자를 소문자로 대체`serviceId`하여 API 모델의를 기반으로 합니다. `services` 섹션에서 사용할 모든 서비스 식별자 키 목록은 [서비스별 엔드포인트 식별자](ss-endpoints-table.md)을 참조하세요. 서비스 식별자 키 뒤에는 각각 고유한 줄에 공백 두 개로 들여쓰기하여 중첩된 설정이 이어집니다.

 다음 예에서는 `services` 정의를 사용하여 Amazon DynamoDB 서비스에 대한 요청에만 사용할 엔드포인트를 구성합니다. `"local-dynamodb"` `services` 섹션은 `services` 키를 사용하여 `profile` 섹션에서 이름으로 참조됩니다. AWS 서비스 식별자 키는 입니다`dynamodb`. Amazon DynamoDB 서비스 하위 섹션은 줄에서 시작됩니다`dynamodb = `. 들여쓰기된 바로 다음 줄은 해당 하위 섹션에 포함되며 해당 서비스에 적용됩니다.

```
[profile dev]
services = local-dynamodb

[services local-dynamodb]
dynamodb = 
  endpoint_url = http://localhost:8000
```

사용자 지정 엔드포인트 구성에 대한 자세한 내용은 [서비스별 엔드포인트](feature-ss-endpoints.md) 섹션을 참조하십시오.

## 보안 인증 파일의 형식
<a name="file-format-creds"></a>

프로파일 섹션이 `profile` 단어로 시작하지 않는다는 점을 제외하면 `credentials` 파일의 규칙은 일반적으로 `config` 파일 규칙과 동일합니다. 대괄호 사이에 프로파일 이름만 사용하세요. 다음 예제는 `foo`라고 불리는 명명된 프로파일 섹션이 포함된 `credentials` 파일을 보여줍니다.

```
[foo]
...credential settings...
```

다음과 같이 ‘비밀’ 또는 민감한 정보로 간주되는 설정만 `aws_access_key_id`, `aws_secret_access_key`, `aws_session_token`과 같은 `credentials` 파일에 저장할 수 있습니다. 이러한 설정은 공유 `config` 파일에 넣을 수도 있지만, 이러한 민감한 값은 별도의 `credentials` 파일에 보관할 것을 권장합니다. 이렇게 하면 필요한 경우 각 파일에 별도의 권한을 제공할 수 있습니다.

다음은 `[default]` 프로파일이 있는 기본 `credentials` 파일을 보여주는 예입니다. 이는 [`aws_access_key_id`, `aws_secret_access_key` 및 `aws_session_token`](feature-static-credentials.md) 글로벌 설정을 지정합니다.

```
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
```

`credentials` 파일에서 ‘`default`’ 프로파일을 사용하든 명명된 프로파일을 사용하든, 여기의 모든 설정은 같은 프로파일 이름을 사용하는 `config` 파일의 설정과 결합됩니다. 동일한 이름을 공유하는 프로파일에 대한 보안 인증이 두 파일 모두에 있는 경우 보안 인증 파일의 키가 우선합니다.

# AWS SDKs 및 도구의 공유 `config` 및 `credentials` 파일 위치 찾기 및 변경
<a name="file-location"></a>

공유 AWS `config` 및 `credentials` 파일은 AWS SDKs. 파일은 환경에 로컬로 상주하며 SDK 코드 또는 해당 환경에서 실행하는 AWS CLI 명령에 의해 자동으로 사용됩니다. 개인용 컴퓨터에서나 Amazon Elastic Compute Cloud 인스턴스에서 개발할 때 등을 예로 들 수 있습니다.

SDK나 도구가 실행되면, 이 파일들을 확인한 뒤 사용 가능한 구성 설정을 불러옵니다. 파일이 아직 존재하지 않는 경우, SDK나 도구가 기본 파일을 자동으로 생성합니다.

기본적으로 이러한 파일은 사용자 폴더 또는 `home` 안에 위치한 `.aws` 폴더에 저장됩니다.


| 운영 체제 | 기본 위치 및 파일 이름 | 
| --- | --- | 
| Linux 및 macOS |  `~/.aws/config` `~/.aws/credentials`  | 
| Windows |  `%USERPROFILE%\.aws\config` `%USERPROFILE%\.aws\credentials`  | 

## 홈 디렉터리 해석
<a name="homeDirRes"></a>

`~`는 다음과 같은 경우에만 홈 디렉터리 해석을 위해 사용됩니다.
+ 경로를 시작하는 경우
+ 바로 뒤에 `/` 또는 플랫폼별 구분자가 오는 경우. Windows에서는 `~/`와 `~\` 모두 홈 디렉터리로 해석됩니다.

홈 디렉터리를 결정할 때는 다음 변수가 확인됩니다.
+ (모든 플랫폼)`HOME` 환경 변수
+ (Windows 플랫폼)`USERPROFILE` 환경 변수
+ (Windows 플랫폼) `HOMEDRIVE`와 `HOMEPATH` 환경 변수의 연결(`$HOMEDRIVE$HOMEPATH`)
+ (SDK 또는 도구별 선택 사항)SDK 또는 도구별 홈 경로 확인 기능 또는 변수

가능한 경우, 경로의 시작 부분에 사용자의 홈 디렉터리(예:`~username/`)가 지정되어 있으면 그것은 요청된 사용자 이름의 홈 디렉터리(예: `/home/username/.aws/config`)로 확정됩니다.

## 이러한 파일의 기본 위치 변경
<a name="file-location-change"></a>

SDK나 도구가 이 파일들을 불러오는 위치를 재정의하려면, 다음 중 어떤 방법이든 사용할 수 있습니다.

### 환경 변수 사용
<a name="file-location-change-envar"></a>

다음 환경 변수는 이러한 파일의 위치 또는 이름을 기본값에서 사용자 지정 값으로 변경할 수 있습니다.
+ `config` 파일 환경 변수:**`AWS_CONFIG_FILE`**
+ `credentials` 파일 환경 변수:**`AWS_SHARED_CREDENTIALS_FILE`**

------
#### [ Linux/macOS ]

Linux 또는 macOS에서 다음의 [내보내기](https://linuxconfig.org/learning-linux-commands-export) 명령을 실행하여 대체 위치를 지정할 수 있습니다.

```
$ export AWS_CONFIG_FILE=/some/file/path/on/the/system/config-file-name
$ export AWS_SHARED_CREDENTIALS_FILE=/some/other/file/path/on/the/system/credentials-file-name
```

------
#### [ Windows ]

Windows에서 다음의 [setx](https://docs.microsoft.com/windows-server/administration/windows-commands/setx) 명령을 실행하여 대체 위치를 지정할 수 있습니다.

```
C:\> setx AWS_CONFIG_FILE c:\some\file\path\on\the\system\config-file-name
C:\> setx AWS_SHARED_CREDENTIALS_FILE c:\some\other\file\path\on\the\system\credentials-file-name
```

------

환경 변수를 사용해 시스템을 구성하는 방법에 대한 자세한 내용은 [환경 변수를 사용하여 AWS SDKs 및 도구 전역 구성](environment-variables.md)에서 확인하세요.

### JVM 시스템 속성 사용
<a name="file-location-change-jvmSysProp"></a>

JVM에서 실행되는 Kotlin SDK와 Java SDK 2.x의 경우, 다음 JVM 시스템 속성을 설정하여 이 파일들의 기본 위치나 이름을 사용자 지정 값으로 변경할 수 있습니다.
+ `config` 파일 JVM 시스템 속성: **`aws.configFile`**
+ `credentials` 파일 환경 변수:**`aws.sharedCredentialsFile`**

JVM 시스템 속성을 설정하는 방법에 대한 지침은 [JVM 시스템 속성 설정 방법](jvm-system-properties.md#jvm-sys-props-set)에서 확인하세요. Java SDK 1.x는 이러한 시스템 속성을 지원하지 않습니다.

# 환경 변수를 사용하여 AWS SDKs 및 도구 전역 구성
<a name="environment-variables"></a>

환경 변수는 AWS SDKs 및 도구를 사용할 때 구성 옵션과 자격 증명을 지정하는 또 다른 방법을 제공합니다. 환경 변수는 스크립팅을 수행하거나 명명된 프로파일을 임시로 기본값으로 설정할 때 유용할 수 있습니다. 대부분의 SDK에서 지원하는 환경 변수 목록은 [환경 변수 목록](settings-reference.md#EVarSettings) 섹션을 참조하십시오.

**옵션의 우선 순위**
+ 환경 변수를 사용하여 설정을 지정하면 공유 AWS `config` 및 `credentials` 파일의 프로파일에서 로드된 모든 값이 재정의됩니다.
+  AWS CLI 명령줄에서 파라미터를 사용하여 설정을 지정하면 해당 환경 변수 또는 구성 파일의 프로파일에서 모든 값을 재정의합니다.

## 환경 변수를 설정하는 방법
<a name="envvars-set"></a>

다음은 기본 사용자에 대한 환경 변수를 구성할 수 있는 방법을 보여주는 예입니다.

------
#### [ Linux, macOS, or Unix ]

```
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
$ export AWS_REGION=us-west-2
```

환경 변수를 설정하면 사용되는 값이 변경되어 쉘 세션이 종료될 때까지 또는 변수를 다른 값으로 설정할 때까지 유지됩니다. 쉘의 스타트업 스크립트에서 변수를 설정하면 해당 변수가 향후 세션에서도 영구적으로 적용되도록 할 수 있습니다.

------
#### [ Windows Command Prompt ]

```
C:\> setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
C:\> setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> setx AWS_SESSION_TOKEN AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
C:\> setx AWS_REGION us-west-2
```

환경 변수를 설정하는 데 `[set](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)`를 사용하면 사용되는 값이 변경되어 현재 명령 프롬프트 세션이 종료될 때까지 또는 변수를 다른 값으로 설정할 때까지 유지됩니다. 환경 변수를 설정하는 데 [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx)를 사용하면 현재 명령 프롬프트 세션과 명령 실행 후 생성한 모든 명령 프롬프트 세션에서 사용되는 값이 변경됩니다. 명령을 실행하는 시점에 이미 실행 중인 다른 명령 쉘에는 영향을 주지 ****않습니다**.

------
#### [ PowerShell ]

```
PS C:\> $Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
PS C:\> $Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
PS C:\> $Env:AWS_SESSION_TOKEN="AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk"
PS C:\> $Env:AWS_REGION="us-west-2"
```

이전 예에 표시된 대로 PowerShell 프롬프트에서 환경 변수를 설정하면 현재 세션 기간에만 해당 값이 저장됩니다. 모든 PowerShell 및 명령 프롬프트 세션에서 환경 변수 설정이 영구적으로 적용되도록 하려면 **제어판**에서 **시스템** 애플리케이션을 사용하여 해당 설정을 저장합니다. 또는 PowerShell 프로파일에 변수를 추가하여 향후 모든 PowerShell 세션에 적용되도록 변수를 설정할 수 있습니다. 환경 변수 저장 또는 세션에 영구적 적용에 대한 자세한 내용은 [PowerShell 설명서](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_environment_variables)를 참조하십시오.

------

## 서버리스 환경 변수 설정
<a name="serverless"></a>

 개발에 서버리스 아키텍처를 사용하는 경우 환경 변수를 설정할 수 있는 다른 옵션이 있습니다. 컨테이너에 따라 클라우드가 아닌 환경과 마찬가지로 해당 컨테이너에서 실행되는 코드에 대해 다양한 전략을 사용하여 환경 변수를 보고 액세스할 수 있습니다.

예를 들어를 AWS Lambda사용하면 환경 변수를 직접 설정할 수 있습니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [AWS Lambda 환경 변수 사용을](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) 참조하세요.

서버리스 프레임워크에서는 환경 설정 아래의 공급자 키 아래에 있는 `serverless.yml` 파일에 SDK 환경 변수를 설정할 수 있는 경우가 많습니다. `serverless.yml` 파일에 대한 자세한 내용은 서버리스 프레임워크 설명서의 [일반 함수 설정](https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml#general-function-settings)을 참조하십시오.

컨테이너 환경 변수를 설정하는 데 사용하는 메커니즘에 관계없이 [정의된 런타임 환경 변수](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime)에 Lambda에 대해 문서화된 것과 같이 컨테이너에서 예약한 것도 있습니다. 환경 변수가 처리되는 방식과 제한 사항이 있는지 확인하려면 항상 사용 중인 컨테이너의 공식 설명서를 참조하세요.

# JVM 시스템 속성을 사용하여 및 전역 구성 AWS SDK for Java AWS SDK for Kotlin
<a name="jvm-system-properties"></a>

[JVM 시스템 속성](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html)은 AWS SDK for Java 및와 같이 JVM에서 실행되는 SDKs에 대한 구성 옵션 및 자격 증명을 지정하는 또 다른 방법을 제공합니다 AWS SDK for Kotlin. SDK에서 지원하는 JVM 시스템 속성 목록은 [설정 참조](settings-reference.md#JVMSettings)를 확인하세요.

**옵션의 우선 순위**
+ JVM 시스템 속성을 사용해 설정 값을 지정하면, 환경 변수나 공유 AWS `config` 및·`credentials` 파일의 프로파일에서 불러온 어떤 값보다도 우선하여 적용됩니다.
+ 환경 변수를 사용하여 설정을 지정할 경우, 공유 AWS `config` 및 `credentials` 파일의 프로파일에서 로드된 값을 재정의합니다.

## JVM 시스템 속성 설정 방법
<a name="jvm-sys-props-set"></a>

여러 가지 방법으로 JVM 시스템 속성을 설정할 수 있습니다.

### 명령줄에서
<a name="jvm-sys-props-set-cl"></a>

`-D` 스위치를 사용해 명령을 간접 호출할 때, `java` 명령줄에서 JVM 시스템 속성을 설정합니다. 다음 명령은 코드에서 값을 명시적으로 재정의하지 않는 한, 모든 서비스 클라이언트에 대해 AWS 리전 을 글로벌로 구성합니다.

```
java -Daws.region=us-east-1 -jar <your_application.jar> <other_arguments>
```

여러 JVM 시스템 속성을 설정해야 하는 경우, `-D` 스위치를 여러 번 지정하면 됩니다.

### 환경 변수 사용
<a name="jvm-sys-props-set-evar"></a>

애플리케이션을 실행하기 위해 JVM을 간접 호출하는 명령줄에 접근할 수 없다면, `JAVA_TOOL_OPTIONS` 환경 변수를 사용해 명령줄 옵션을 구성할 수 있습니다. 이 방식은 Java 런타임에서 AWS Lambda 함수를 실행하거나, 임베디드 JVM에서 코드를 실행하는 경우 등에 유용합니다.

다음 예제에서는 코드의 값을 명시적으로 재정의하지 않는 한 모든 서비스 클라이언트에 대해 AWS 리전 전역적으로를 구성합니다.

------
#### [ Linux, macOS, or Unix ]

```
$ export JAVA_TOOL_OPTIONS="-Daws.region=us-east-1"
```

환경 변수를 설정하면 사용되는 값이 변경되어 쉘 세션이 종료될 때까지 또는 변수를 다른 값으로 설정할 때까지 유지됩니다. 쉘의 스타트업 스크립트에서 변수를 설정하면 해당 변수가 향후 세션에서도 영구적으로 적용되도록 할 수 있습니다.

------
#### [ Windows Command Prompt ]

```
C:\> setx JAVA_TOOL_OPTIONS -Daws.region=us-east-1
```

환경 변수를 설정하는 데 `[set](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)`를 사용하면 사용되는 값이 변경되어 현재 명령 프롬프트 세션이 종료될 때까지 또는 변수를 다른 값으로 설정할 때까지 유지됩니다. 환경 변수를 설정하는 데 [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx)를 사용하면 현재 명령 프롬프트 세션과 명령 실행 후 생성한 모든 명령 프롬프트 세션에서 사용되는 값이 변경됩니다. 명령을 실행하는 시점에 이미 실행 중인 다른 명령 쉘에는 영향을 주지 ****않습니다**.

------

### 런타임 시
<a name="jvm-sys-props-set-runtime"></a>

다음 예제와 같이 `System.setProperty` 방법을 사용하면, 코드 내에서 런타임 시 JVM 시스템 속성을 설정할 수도 있습니다.

```
System.setProperty("aws.region", "us-east-1");
```

**중요**  
SDK 서비스 클라이언트를 초기화하기 *전*에 JVM 시스템 속성을 모두 설정해야 합니다. 그러지 않으면 서비스 클라이언트가 다른 값을 사용할 수 있습니다.