

AWS SDK for JavaScript v2가 지원 종료에 도달했습니다. [AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)로 마이그레이션하실 것을 권장합니다. 마이그레이션 방법에 대한 자세한 내용은 해당 [공지 사항](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)을 참조하세요.

# Node.js에서 자격 증명 설정
<a name="setting-credentials-node"></a>

Node.js에서 SDK에 인증 자격 증명을 제공하는 방법에는 여러 가지가 있습니다. 그 가운데는 더 안전한 방법도 있고 애플리케이션 개발 시에 더 편리한 방법도 있습니다. Node.js에서 인증 자격 증명을 얻을 때 로드하는 JSON 파일 및 환경 변수 등 둘 이상의 소스를 사용하는 경우 주의해야 합니다. 변경 발생에 대한 인식 없이 코드가 실행되는 권한을 변경할 수 있습니다.

다음은 권장 순서로 인증 자격 증명을 제공할 수 있는 방법입니다.

1. AWS Identity and Access Management(IAM)에서 Amazon EC2용 역할 로드

1. 공유 인증 자격 증명 파일(`~/.aws/credentials`)에서 로드

1. 환경 변수에서 로드

1. 디스크의 JSON 파일에서 로드

1. JavaScript SDK에서 제공하는 기타 자격 증명 공급자 클래스

SDK에서 둘 이상의 자격 증명 소스를 사용할 수 있는 경우 기본 선택 우선 순위는 다음과 같습니다.

1. 서비스 클라이언트 생성자를 통해 명시적으로 설정된 자격 증명

1. 환경 변수

1. 공유 자격 증명 파일

1. ECS 자격 증명 공급자에서 로드된 자격 증명(해당되는 경우)

1. 공유 AWS config 파일 또는 공유 자격 증명 파일에서 지정된 자격 증명 프로세스를 사용해 얻은 자격 증명. 자세한 내용은 [구성된 자격 증명 프로세스를 사용해 Node.js에서 자격 증명 로딩](loading-node-credentials-configured-credential-process.md) 단원을 참조하십시오.

1. Amazon EC2 인스턴스의 자격 증명 공급자를 사용해 AWS IAM 에서 로드된 자격 증명(인스턴스 메타데이터에서 구성된 경우)

자세한 내용은 API 참조의 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html) 및 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html) 섹션을 참조하세요.

**주의**  
애플리케이션에서 AWS 자격 증명을 하드 코딩할 수 있더라도 그렇게 하지 않는 것이 좋습니다. 인증 자격 증명을 하드 코딩하면 액세스 키 ID 및 보안 액세스 키가 노출될 위험이 있습니다.

이 섹션의 주제에서는 인증 자격 증명을 Node.js로 로드하는 방법을 설명합니다.

**Topics**
+ [Amazon EC2의 IAM 역할에서 Node.js의 자격 증명 로드](loading-node-credentials-iam.md)
+ [Node.js Lambda 함수의 인증 자격 증명 로드](loading-node-credentials-lambda.md)
+ [공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-shared.md)
+ [환경 변수에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-environment.md)
+ [JSON 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-json-file.md)
+ [구성된 자격 증명 프로세스를 사용해 Node.js에서 자격 증명 로딩](loading-node-credentials-configured-credential-process.md)

# Amazon EC2의 IAM 역할에서 Node.js의 자격 증명 로드
<a name="loading-node-credentials-iam"></a>

Amazon EC2 인스턴스에서 Node.js 애플리케이션을 실행하는 경우 Amazon EC2의 IAM 역할을 활용하여 해당 인스턴스에 보안 인증을 자동으로 제공할 수 있습니다. IAM 역할을 사용하도록 인스턴스를 구성하면 SDK가 애플리케이션의 IAM 자격 증명을 자동으로 선택하므로 자격 증명을 수동으로 제공할 필요가 없습니다.

Amazon EC2 인스턴스에 IAM 역할을 추가하는 방법에 대한 자세한 내용은 *AWS SDK 및 도구 참조 안내서*의 [Amazon EC2 인스턴스용 IAM 역할 사용](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-roles-for-ec2.html)을 참조하세요.

# Node.js Lambda 함수의 인증 자격 증명 로드
<a name="loading-node-credentials-lambda"></a>

AWS Lambda 함수를 만들 때 이 함수를 실행할 권한이 있는 특별한 IAM 역할을 만들어야 합니다. 이 역할을 *실행 역할*이라고 합니다. Lambda 함수를 설정할 때 해당 실행 역할로 생성한 IAM 역할을 지정해야 합니다.

실행 역할은 Lambda 함수에 다른 웹 서비스를 실행 및 간접 호출하는 데 필요한 자격 증명을 제공합니다. 따라서 Lambda 함수 내에 쓰는 Node.js 코드에 인증 자격 증명을 제공할 필요가 없습니다.

Lambda 실행 역할 생성에 관한 자세한 내용은 *AWS Lambda 개발자 안내서*의 [권한 관리: IAM 역할(실행 역할) 활용](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) 섹션을 참조하세요.

# 공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드
<a name="loading-node-credentials-shared"></a>

SDK 및 명령줄 인터페이스에서 사용하는 공유 파일에 AWS 자격 증명 데이터를 보관할 수 있습니다. SDK for JavaScript가 로드되면 "credentials"라는 공유 자격 증명 파일이 자동으로 검색됩니다. 공유 인증 자격 증명 파일을 보관하는 위치는 운영 체제에 따라 다릅니다.
+ Linux, Unix 및 macOS의 공유 자격 증명 파일: `~/.aws/credentials`
+ Windows의 공유 자격 증명 파일: `C:\Users\USER_NAME\.aws\credentials`

공유된 자격 증명 파일이 아직 없는 경우 [AWS를 사용한 SDK 인증](getting-your-credentials.md)를 참조하세요. 이 지침을 따르면 자격 증명 파일에 다음과 유사한 텍스트가 표시되어야 합니다. 이 텍스트에서 *<YOUR\$1ACCESS\$1KEY\$1ID>*는 액세스 키 ID이고 *<YOUR\$1SECRET\$1ACCESS\$1KEY>*는 보안 액세스 키입니다.

```
[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>
```

사용 중인 이 파일을 보여주는 예제는 [Node.js에서 시작하기](getting-started-nodejs.md)를 참조하세요.

`[default]` 섹션 머리글은 인증 자격 증명의 기본 프로필 및 관련 값을 지정합니다. 동일한 공유 구성 파일에 각각 고유한 인증 자격 증명 정보가 있는 추가 프로필을 만들 수 있습니다. 다음 예제에서는 기본 프로필과 추가 프로필 두 개가 있는 구성 파일을 보여 줍니다.

```
[default] ; default profile
aws_access_key_id = <DEFAULT_ACCESS_KEY_ID>
aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY>
    
[personal-account] ; personal account profile
aws_access_key_id = <PERSONAL_ACCESS_KEY_ID>
aws_secret_access_key = <PERSONAL_SECRET_ACCESS_KEY>
    
[work-account] ; work account profile
aws_access_key_id = <WORK_ACCESS_KEY_ID>
aws_secret_access_key = <WORK_SECRET_ACCESS_KEY>
```

기본적으로 SDK는 `AWS_PROFILE` 환경 변수를 확인하여 사용할 프로필을 결정합니다. 환경에서 `AWS_PROFILE` 변수가 설정되지 않은 경우, SDK는 `[default]` 프로필의 인증 자격 증명을 사용합니다. 대체 프로필 중 하나를 사용하려면 `AWS_PROFILE` 환경 변수의 값을 설정하거나 변경합니다. 예를 들어 위에 표시된 구성 파일을 통해 작업 계정의 자격 증명을 사용하려면 `AWS_PROFILE` 환경 변수를 `work-account`(운영 체제에 적합한 경우)로 설정합니다.

**참고**  
환경 변수를 설정할 경우에는 셸 또는 명령 환경에서 변수를 사용할 수 있도록 (운영 체제의 필요에 따라) 나중에 적절한 조치를 취해야 합니다.

환경 변수를 설정한 후(필요한 경우) SDK를 사용하는 JavaScript 파일(예: `script.js` 파일)을 실행할 수 있습니다.

```
$ node script.js
```

다음 예제와 같이 인증 자격 증명 공급자를 선택하거나 SDK를 로드하기 전에 `process.env.AWS_PROFILE`을 설정하여 SDK에서 사용하는 프로필을 명시적으로 선택할 수도 있습니다.

```
var credentials = new AWS.SharedIniFileCredentials({profile: 'work-account'});
AWS.config.credentials = credentials;
```

# 환경 변수에서 Node.js에 인증 자격 증명 로드
<a name="loading-node-credentials-environment"></a>

SDK는 환경에서 변수로 설정된 AWS 자격 증명을 자동으로 감지하고 SDK 요청에 이 인증 자격 증명을 사용하므로 애플리케이션에서 자격 증명을 관리할 필요가 없습니다. 인증 자격 증명을 제공하기 위해 설정하는 환경 변수는 다음과 같습니다.
+ `AWS_ACCESS_KEY_ID`
+ `AWS_SECRET_ACCESS_KEY`
+ `AWS_SESSION_TOKEN`

환경 변수를 설정하는 방법에 대한 자세한 내용은 *AWS SDK 및 도구 참조 가이드*의 [환경 변수 지원](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) 섹션을 참조하세요.

# JSON 파일에서 Node.js에 인증 자격 증명 로드
<a name="loading-node-credentials-json-file"></a>

`AWS.config.loadFromPath`를 사용하여 JSON 문서에서 디스크에 구성 및 인증 자격 증명을 로드할 수 있습니다. 지정된 경로는 프로세스의 현재 작업 디렉터리와 관련이 있습니다. 예를 들어 다음 내용이 있는 `'config.json'` 파일에서 인증 자격 증명을 로드하려면:

```
{ "accessKeyId": <YOUR_ACCESS_KEY_ID>, "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>, "region": "us-east-1" }
```

다음 코드를 사용합니다.

```
var AWS = require("aws-sdk");
AWS.config.loadFromPath('./config.json');
```

**참고**  
JSON 문서에서 구성 데이터를 로드하면 기존 구성 데이터가 모두 재설정됩니다. 이 기술을 사용한 후 추가 구성 데이터를 추가합니다. JSON 문서에서 인증 자격 증명을 로드하는 것은 브라우저 스크립트에서 지원되지 않습니다.

# 구성된 자격 증명 프로세스를 사용해 Node.js에서 자격 증명 로딩
<a name="loading-node-credentials-configured-credential-process"></a>

SDK에 없는 메소드를 사용해 자격 증명을 공급받을 수 있습니다. 이를 위해서는 먼저 공유 AWS conﬁg 파일 또는 공유 자격 증명 파일에서 자격 증명 프로세스를 지정합니다. `AWS_SDK_LOAD_CONFIG` 환경 변수가 임의의 값으로 설정되어 있으면 SDK가 자격 증명 파일(있는 경우)에 지정된 프로세스보다 config 파일에 지정된 프로세스를 선호합니다.

공유 AWS 구성 파일 또는 공유 자격 증명 파일에서 자격 증명 프로세스를 지정하는 방법에 대한 자세한 내용은 *AWS CLI 명령 참조서* 중 [외부 프로세스에서 자격 증명 소싱](https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#sourcing-credentials-from-external-processes)의 내용을 참조하세요.

`AWS_SDK_LOAD_CONFIG` 환경 변수의 사용 방법에 대한 자세한 내용은 본 문서에서 [공유 구성 파일 사용](setting-region.md#setting-region-config-file) 단원을 참조하세요.