

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 버전 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(...)
```