

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/)을 참조하세요.

# SDK for JavaScript 설정
<a name="setting-up"></a>

이 섹션에서는 웹 브라우저 및 Node.js에서 사용할 SDK for JavaScript를 설치하는 방법을 설명합니다. 또한 SDK에서 지원되는 웹 서비스에 액세스할 수 있도록 SDK를 로드하는 방법도 보여 줍니다.

**참고**  
React Native 개발자는 AWS Amplify를 사용하여 AWS에 새로운 프로젝트를 생성해야 합니다. 자세한 내용은 [aws-sdk-react-native](https://github.com/amazon-archives/aws-sdk-react-native) 아카이브를 참조하세요.

**Topics**
+ [사전 조건](jssdk-prerequisites.md)
+ [SDK for JavaScript 설치](installing-jssdk.md)
+ [SDK for JavaScript 로드](loading-the-jssdk.md)
+ [SDK for JavaScript 버전 1에서 업그레이드](upgrading-from-v1.md)

# 사전 조건
<a name="jssdk-prerequisites"></a>

AWS SDK for JavaScript를 사용하기 전에 코드를 Node.js에서 실행해야 하는지 또는 웹 브라우저에서 실행해야 하는지를 결정합니다. 그런 후 다음을 수행합니다.
+ Node.js의 경우 아직 설치되어 있지 않으면 서버에 Node.js를 설치합니다.
+ 웹 브라우저의 경우 지원해야 하는 브라우저 버전을 식별합니다.

**Topics**
+ [AWS Node.js 환경 설정](setting-up-node.md)
+ [지원되는 웹 브라우저](browsers-supported.md)

# AWS Node.js 환경 설정
<a name="setting-up-node"></a>

애플리케이션을 실행할 수 있는 AWS Node.js 환경을 설정하려면 다음 방법 중 하나를 사용합니다.
+ Node.js가 미리 설치되어 있는 Amazon Machine Image(AMI)를 선택하고 해당 AMI를 사용하여 Amazon EC2 인스턴스를 생성합니다. Amazon EC2 인스턴스를 생성할 때 AWS Marketplace에서 AMI를 선택합니다. AWS Marketplace에서 Node.js를 검색하고 Node.js의 한 버전(32비트 또는 64비트)이 미리 설치되어 있는 AMI 옵션을 선택합니다.
+ Amazon EC2 인스턴스를 생성하고 해당 인스턴스에 Node.js를 설치합니다. Amazon Linux 인스턴스에 Node.js를 설치하는 방법에 관한 자세한 내용은 [자습서: Amazon EC2 인스턴스에서 Node.js 설정](setting-up-node-on-ec2-instance.md) 단원을 참조하세요.
+ AWS Lambda를 사용하여 서버리스 환경을 생성하고 Node.js를 Lambda 함수로 실행합니다. Lambda 함수 내에서 Node.js를 사용하는 방법에 관한 자세한 내용은 *AWS Lambda 개발자 안내서*의 [프로그래밍 모델(Node.js)](https://docs.aws.amazon.com/lambda/latest/dg/programming-model.html) 섹션을 참조하세요.
+ Node.js 애플리케이션을 AWS Elastic Beanstalk에 배포합니다. Elastic Beanstalk로 Node.js를 사용하는 방법에 관한 자세한 내용은 *AWS Elastic Beanstalk 개발자 안내서*의 [AWS Elastic Beanstalk에 Node.js 애플리케이션 배포](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.html) 섹션을 참조하세요.

# 지원되는 웹 브라우저
<a name="browsers-supported"></a>

SDK for JavaScript는 다음 최소 버전을 포함하여 모든 최신 웹 브라우저를 지원합니다.


****  

| 브라우저 | 버전 | 
| --- | --- | 
| Google Chrome | 28.0 이상 | 
| Mozilla Firefox | 26.0 이상 | 
| Opera | 17.0 이상 | 
| Microsoft Edge | 25.10 이상 | 
| Windows Internet Explorer | 해당 사항 없음 | 
| Apple Safari | 5 이상 | 
| Android 브라우저 | 4.3 이상 | 

**참고**  
AWS Amplify와 같은 프레임워크는 SDK for JavaScript와 동일한 브라우저를 지원하지 않을 수 있습니다. 세부 정보는 프레임워크 설명서를 확인합니다.

# SDK for JavaScript 설치
<a name="installing-jssdk"></a>

AWS SDK for JavaScript 설치 여부와 방법은 코드가 Node.js 모듈에서 실행하는지 또는 브라우저 스크립트에서 실행하는지에 따라 다릅니다.

일부 서비스는 SDK에서 즉시 사용할 수 없습니다. AWS SDK for JavaScript에서 현재 지원되는 서비스를 알아보려면 [https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md](https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md)를 참조하세요.

------
#### [ Node ]

Node.js용 AWS SDK for JavaScript를 설치하는 기본 방법은 [npm(Node.js 패키지 관리자)](https://www.npmjs.com/)을 사용하는 것입니다. 이렇게 하려면 명령줄에 다음을 입력합니다.

```
npm install aws-sdk
```

다음 오류 메시지가 나타나는 경우

```
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
```

명령줄에 다음 명령을 입력합니다.

```
npm uninstall --save node-uuid
npm install --save uuid
```

------
#### [ Browser ]

브라우저 스크립트에서 사용하려면 SDK를 설치할 필요가 없습니다. HTML 페이지의 스크립트를 사용하여 Amazon Web Services에서 호스팅된 SDK 패키지를 직접 로드할 수 있습니다. 호스팅된 SDK 패키지는 CORS(교차 오리진 리소스 공유)를 적용하는 AWS 서비스 중 일부를 지원합니다. 자세한 내용은 [SDK for JavaScript 로드](loading-the-jssdk.md) 섹션을 참조하세요.

사용할 특정 웹 서비스와 버전을 선택하는 SDK의 사용자 지정 빌드를 생성할 수 있습니다. 그런 다음 로컬 개발을 위해 사용자 지정 SDK 패키지를 다운로드하고 애플리케이션에서 사용할 수 있도록 호스팅합니다. SDK의 사용자 지정 빌드 생성에 대한 자세한 내용은 [브라우저용 SDK 빌드](building-sdk-for-browsers.md) 섹션을 참조하세요.

GitHub의 다음 위치에서 최신 AWS SDK for JavaScript의 축소형 및 비축소형 배포 가능 버전을 다운로드할 수 있습니다.

[https://github.com/aws/aws-sdk-js/tree/master/dist](https://github.com/aws/aws-sdk-js/tree/master/dist)

------

## Bower를 사용한 설치
<a name="w2aac13c11b9"></a>

[Bower](https://bower.io)는 웹용 패키지 관리자입니다. Bower를 설치한 후에는 Bower를 사용하여 SDK를 설치할 수 있습니다. Bower를 사용하여 SDK를 설치하려면 터미널 창에 다음을 입력합니다.

```
bower install aws-sdk-js
```

# SDK for JavaScript 로드
<a name="loading-the-jssdk"></a>

SDK for JavaScript를 로드하는 방법은 웹 브라우저에서 실행하기 위해 로드하는지 또는 Node.js에서 실행하기 위해 로드하는지에 따라 다릅니다.

일부 서비스는 SDK에서 즉시 사용할 수 없습니다. AWS SDK for JavaScript에서 현재 지원되는 서비스를 알아보려면 [https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md](https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md)를 참조하세요.

------
#### [ Node.js ]

SDK를 설치한 후 `require`를 사용하여 노드 애플리케이션에서 AWS 패키지를 로드할 수 있습니다.

```
var AWS = require('aws-sdk');
```

------
#### [ React Native ]

React Native 프로젝트에서 SDK를 사용하려면 먼저 npm을 사용하여 SDK를 설치합니다.

```
npm install aws-sdk
```

애플리케이션에서 다음 코드를 사용하여 SDK의 React Native 호환 버전을 참조합니다.

```
var AWS = require('aws-sdk/dist/aws-sdk-react-native');
```

------
#### [ Browser ]

SDK를 시작하는 가장 빠른 방법은 호스팅된 SDK 패키지를 Amazon Web Services에서 직접 로드하는 것입니다. 이를 위해 다음 형식으로 `<script>` 요소를 HTML 페이지에 추가합니다.

```
<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.min.js"></script>
```

[AWS SDK for JavaScript API 참조 가이드](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/)의 SDK for JavaScript에 대한 API 참조 섹션에서 현재 SDK\$1VERSION\$1NUMBER를 찾을 수 있습니다.

SDK가 페이지에 로드된 후에는 글로벌 변수 `AWS`(또는 `window.AWS`)에서 SDK를 사용할 수 있습니다.

[browserify](http://browserify.org)를 사용하여 코드 및 모듈 종속성을 번들링하는 경우 Node.js에서 수행하는 것과 같은 방식으로 `require`를 사용하여 SDK를 로드합니다.

------

# SDK for JavaScript 버전 1에서 업그레이드
<a name="upgrading-from-v1"></a>

다음 메모를 참조해 SDK for JavaScript를 버전 1에서 버전 2로 업그레이드하세요.

## 입력/출력 시 Base64 및 타임스탬프의 자동 변환
<a name="upgrading-from-v1-base64-timestamp-conversion"></a>

이제 SDK는 사용자를 대신하여 base64 인코딩 값과 타임스탬프 값을 자동으로 인코딩합니다. 이 변경 사항은 base64 또는 타임스탬프 값이 요청에 따라 전송되거나 base64 인코딩 값을 고려하는 응답에서 반환되는 작업에 영향을 미칩니다.

이전에 base64로 변환된 사용자 코드는 더 이상 필요하지 않습니다. base64로 인코딩된 값은 이제 서버 응답에서 버퍼 객체로 반환되며 버퍼 입력으로 전달될 수도 있습니다. 예를 들어, 다음 버전 1 `SQS.sendMessage` 파라미터는 다음을 수행할 수 있습니다.

```
var params = {
   MessageBody: 'Some Message',
   MessageAttributes: {
      attrName: {
         DataType: 'Binary',
         BinaryValue: new Buffer('example text').toString('base64')
      }
   }
};
```

다음과 같이 다시 작성할 수 있습니다.

```
var params = {
   MessageBody: 'Some Message',
   MessageAttributes: {
      attrName: {
         DataType: 'Binary',
         BinaryValue: 'example text'
      }
   }
};
```

메시지를 읽는 방법은 다음과 같습니다.

```
sqs.receiveMessage(params, function(err, data) {
  // buf is <Buffer 65 78 61 6d 70 6c 65 20 74 65 78 74>
  var buf = data.Messages[0].MessageAttributes.attrName.BinaryValue;
  console.log(buf.toString()); // "example text"
});
```

## response.data.RequestId를 response.requestId로 이동
<a name="upgrading-from-v1-response-requestid"></a>

이제 SDK는 `response` 속성 내부보다는 `response.data` 객체의 일관적인 장소에 모든 서버의 요청 ID를 저장합니다. 이렇게 하면 다양한 방식으로 요청 ID를 공개하는 서비스 전체에서 일관성을 향상할 수 있습니다. 또한 이 변경은 `response.data.RequestId` 속성의 이름을 `response.requestId`(콜백 함수 내부에서는 `this.requestId`)로 바꾸는 획기적인 변경입니다.

코드에서 다음을 변경합니다.

```
svc.operation(params, function (err, data) {
  console.log('Request ID:', data.RequestId);
});
```

다음의 것들로 변경됩니다.

```
svc.operation(params, function () {
  console.log('Request ID:', this.requestId);
});
```

## 노출된 래퍼 요소
<a name="upgrading-from-v1-exposed-wrapper-elements"></a>

`AWS.ElastiCache`, `AWS.RDS` 또는 `AWS.Redshift`를 사용하는 경우 일부 작업에 대한 응답으로 최상위 수준 출력 속성을 통해 응답에 액세스해야 합니다.

예를 들어, `RDS.describeEngineDefaultParameters` 메서드는 다음을 반환하는 데 사용됩니다.

```
{ Parameters: [ ... ] }
```

이제 다음을 반환합니다.

```
{ EngineDefaults: { Parameters: [ ... ] } }
```

각 서비스별로 영향을 받는 작업의 목록은 다음 표와 같습니다.


****  

| 클라이언트 클래스 | 작업 | 
| --- | --- | 
| `AWS.ElastiCache` | `authorizeCacheSecurityGroupIngress` `createCacheCluster` `createCacheParameterGroup` `createCacheSecurityGroup` `createCacheSubnetGroup` `createReplicationGroup` `deleteCacheCluster` `deleteReplicationGroup` `describeEngineDefaultParameters` `modifyCacheCluster` `modifyCacheSubnetGroup` `modifyReplicationGroup` `purchaseReservedCacheNodesOffering` `rebootCacheCluster` `revokeCacheSecurityGroupIngress` | 
| `AWS.RDS` | `addSourceIdentifierToSubscription` `authorizeDBSecurityGroupIngress` `copyDBSnapshot` `createDBInstance` `createDBInstanceReadReplica` `createDBParameterGroup` `createDBSecurityGroup` `createDBSnapshot` `createDBSubnetGroup` `createEventSubscription` `createOptionGroup` `deleteDBInstance` `deleteDBSnapshot` `deleteEventSubscription` `describeEngineDefaultParameters` `modifyDBInstance` `modifyDBSubnetGroup` `modifyEventSubscription` `modifyOptionGroup` `promoteReadReplica` `purchaseReservedDBInstancesOffering` `rebootDBInstance` `removeSourceIdentifierFromSubscription` `restoreDBInstanceFromDBSnapshot` `restoreDBInstanceToPointInTime` `revokeDBSecurityGroupIngress` | 
| `AWS.Redshift` | `authorizeClusterSecurityGroupIngress` `authorizeSnapshotAccess` `copyClusterSnapshot` `createCluster` `createClusterParameterGroup` `createClusterSecurityGroup` `createClusterSnapshot` `createClusterSubnetGroup` `createEventSubscription` `createHsmClientCertificate` `createHsmConfiguration` `deleteCluster` `deleteClusterSnapshot` `describeDefaultClusterParameters` `disableSnapshotCopy` `enableSnapshotCopy` `modifyCluster` `modifyClusterSubnetGroup` `modifyEventSubscription` `modifySnapshotCopyRetentionPeriod` `purchaseReservedNodeOffering` `rebootCluster` `restoreFromClusterSnapshot` `revokeClusterSecurityGroupIngress` `revokeSnapshotAccess` `rotateEncryptionKey` | 

## 삭제된 클라이언트 속성
<a name="upgrading-from-v1-dropped-client-properties"></a>

`.Client` 및 `.client` 속성은 서비스 객체에서 제거되었습니다. 서비스 클래스에서 `.Client` 속성을 사용하거나 서비스 객체 인스턴스에서 `.client` 속성을 사용하는 경우 이러한 속성을 코드에서 제거하십시오.

SDK for JavaScript 버전 1에서 사용되는 코드:

```
var sts = new AWS.STS.Client();
// or
var sts = new AWS.STS();

sts.client.operation(...);
```

다음 코드로 변경해야 합니다.

```
var sts = new AWS.STS();
sts.operation(...)
```