

 [AWS SDK for JavaScript V3 API 참조 안내서](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)는 AWS SDK for JavaScript 버전 3(V3)의 모든 API 작업을 자세히 설명합니다.

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

# 버전 2.x에서 3.x로 마이그레이션 AWS SDK for JavaScript
<a name="migrating"></a>

 AWS SDK for JavaScript 버전 3은 버전 2의 주요 재작성입니다. 이 섹션에서는 두 버전의 차이점을 설명하고 SDK for JavaScript 버전 2에서 버전 3으로 마이그레이션하는 방법을 설명합니다.

## codemod를 사용하여 SDK for JavaScript v3로 코드 마이그레이션
<a name="migrating-to-v3"></a>

AWS SDK for JavaScript 버전 3(v3)에는 자격 증명, Amazon S3 멀티파트 업로드, DynamoDB 문서 클라이언트, 웨이터 등을 포함하는 클라이언트 구성 및 유틸리티를 위한 현대화된 인터페이스가 함께 제공됩니다. v2에서 변경된 내용과 각 변경 사항에 대한 v3는 [AWS SDK for JavaScript GitHub 리포지토리의 마이그레이션 가이드에서 확인할 수 있습니다](https://github.com/aws/aws-sdk-js-v3/blob/main/UPGRADING.md).

 AWS SDK for JavaScript v3를 최대한 활용하려면 아래 설명된 codemod 스크립트를 사용하는 것이 좋습니다.

### codemod를 사용하여 기존 v2 코드 마이그레이션
<a name="using-codemod"></a>

[aws-sdk-js-codemod](https://www.npmjs.com/package/aws-sdk-js-codemod)의 codemod 스크립트 모음은 v3 APIs를 사용하도록 기존 AWS SDK for JavaScript (v2) 애플리케이션을 마이그레이션하는 데 도움이 됩니다. 다음과 같이 변환을 실행할 수 있습니다.

```
$ npx aws-sdk-js-codemod -t v2-to-v3 PATH...
```

예를 들어 v2에서 Amazon DynamoDB 클라이언트를 생성하고 `listTables` 작업을 직접적으로 호출하는 다음 코드가 있다고 가정해 보겠습니다.

```
// example.ts
import AWS from "aws-sdk";

const region = "us-west-2";
const client = new AWS.DynamoDB({ region });
await client.listTables({}).promise()
  .then(console.log)
  .catch(console.error);
```

다음과 같이 `example.ts`에서 `v2-to-v3` 변환을 실행할 수 있습니다.

```
$ npx aws-sdk-js-codemod -t v2-to-v3 example.ts
```

이 변환은 DynamoDB import를 v3로 변환하고 v3 클라이언트를 생성하며 다음과 같이 `listTables` 작업을 직접적으로 호출합니다.

```
// example.ts
import { DynamoDB } from "@aws-sdk/client-dynamodb";

const region = "us-west-2";
const client = new DynamoDB({ region });
await client.listTables({})
  .then(console.log)
  .catch(console.error);
```

일반적인 사용 사례에 대한 변환을 구현했습니다. 코드가 올바르게 변환되지 않는 경우 입력 코드 예와 관찰/예상된 출력 코드가 포함된 [bug report](https://github.com/awslabs/aws-sdk-js-codemod/issues/new?assignees=&labels=bug%2Ctriage&template=bug_report.yml&title=%5BBug%3F%5D%3A+) 또는 [feature request](https://github.com/awslabs/aws-sdk-js-codemod/issues/new?assignees=&labels=enhancement&template=feature_request.yml&title=%5BFeature%5D%3A+)를 작성하세요. 특정 사용 사례가 [existing issue](https://github.com/awslabs/aws-sdk-js-codemod/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc)에서 이미 보고된 경우 공감을 표시하여 지지를 보여주세요.

## 버전 3의 새 기능
<a name="welcome_whats_new_v3"></a>

SDK for JavaScript 버전 3(v3)에는 다음과 같은 새로운 기능이 포함되어 있습니다.

모듈화된 패키지  
이제 사용자는 각 서비스에 대해 별도의 패키지를 사용할 수 있습니다.

새 미들웨어 스택  
이제 사용자는 미들웨어 스택을 사용하여 작업 호출의 수명 주기를 제어할 수 있습니다.

또한 SDK는 TypeScript로 작성되어 정적 형식 지정 등 많은 장점이 있습니다.

**중요**  
이 안내서의 v3에 대한 코드 예는 ECMAScript 6(ES6)로 작성되었습니다. ES6는 코드를 더 현대적이고 읽기 쉽게 만들고 더 많은 작업을 수행할 수 있도록 새로운 구문과 새로운 기능을 제공합니다. ES6에서는 Node.js 버전 13.x 이상을 사용해야 합니다. 최신 버전의 Node.js를 다운로드하여 설치하려면 [Node.js downloads](https://nodejs.org/en/download/)를 참조하세요. 자세한 내용은 [JavaScript ES6/CommonJS 구문](sdk-example-javascript-syntax.md) 단원을 참조하십시오.

## 모듈화된 패키지
<a name="welcome_whats_new_v3_modularized_packages"></a>

JavaScript용 SDK(v2) 버전 2에서는 다음과 같이 전체 AWS SDK를 사용해야 했습니다.

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

애플리케이션이 많은 AWS 서비스를 사용하는 경우 전체 SDK를 로드하는 것은 문제가 되지 않습니다. 그러나 몇 가지 AWS 서비스만 사용해야 하는 경우 필요하거나 사용하지 않는 코드로 애플리케이션 크기를 늘려야 합니다.

v3에서는 필요한 개별 AWS 서비스만 로드하고 사용할 수 있습니다. 이는 다음 예에 나와 있는데, 이렇게 하면 Amazon DynamoDB(DynamoDB)에 액세스할 수 있습니다.

```
import { DynamoDB } from "@aws-sdk/client-dynamodb";
```

개별 AWS 서비스를 로드하고 사용할 수 있을 뿐만 아니라 필요한 서비스 명령만 로드하고 사용할 수 있습니다. 이는 DynamoDB 클라이언트 및 `ListTablesCommand` 명령에 액세스할 수 있는 다음 예에 나와 있습니다.

```
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
```

**중요**  
하위 모듈을 모듈로 가져오면 안 됩니다. 예를 들어 다음 코드에서는 오류가 발생할 수 있습니다.  

```
import { CognitoIdentity } from "@aws-sdk/client-cognito-identity/CognitoIdentity";
```
다음은 올바른 코드입니다.  

```
import { CognitoIdentity } from "@aws-sdk/client-cognito-identity";
```

### 코드 크기 비교
<a name="welcome_whats_new_v3_modularized_packages_code_size"></a>

버전 2(v2)에서 `us-west-2` 리전의 모든 Amazon DynamoDB 테이블을 나열하는 간단한 코드 예는 다음과 같을 수 있습니다.

```
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({ region: "us-west-2" });
// Create DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

// Call DynamoDB to retrieve the list of tables
ddb.listTables({ Limit: 10 }, function (err, data) {
  if (err) {
    console.log("Error", err.code);
  } else {
    console.log("Tables names are ", data.TableNames);
  }
});
```

v3에서는 코드가 다음과 같습니다.

```
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";

const dbclient = new DynamoDBClient({ region: "us-west-2" });

try {
  const results = await dbclient.send(new ListTablesCommand);
  
  for (const item of results.TableNames) {
    console.log(item);
  }
} catch (err) {
  console.error(err)
}
```

`aws-sdk` 패키지는 애플리케이션에 약 40MB를 추가합니다. `var AWS = require("aws-sdk")`를 `import {DynamoDB} from "@aws-sdk/client-dynamodb"`로 바꾸면 오버헤드가 약 3MB로 줄어듭니다. 가져오기를 DynamoDB 클라이언트 및 `ListTablesCommand` 명령으로만 제한하면 오버헤드가 100KB 미만으로 줄어듭니다.

```
// Load the DynamoDB client and ListTablesCommand command for Node.js
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
const dbclient = new DynamoDBClient({});
```

### v3에서 명령 직접 호출
<a name="welcome_whats_new_v3_function_examples"></a>

v3에서 v2 또는 v3 명령을 사용하여 작업을 수행할 수 있습니다. v3 명령을 사용하려면 명령과 필요한 AWS 서비스 패키지 클라이언트를 가져오고 async/await 패턴을 사용하는 `.send` 메서드를 사용하여 명령을 실행합니다.

v2 명령을 사용하려면 필요한 AWS 서비스 패키지를 가져오고 콜백 또는 비동기/대기 패턴을 사용하여 패키지에서 직접 v2 명령을 실행합니다.

#### v3 명령 사용
<a name="using_v3_commands"></a>

v3는 각 AWS 서비스 패키지에 대한 명령 세트를 제공하여 해당 AWS 서비스에 대한 작업을 수행할 수 있도록 합니다. AWS 서비스를 설치한 후 프로젝트의 `node-modules/@aws-sdk/client-PACKAGE_NAME/commands folder.`에서 사용 가능한 명령을 찾아볼 수 있습니다.

사용하려는 명령을 가져와야 합니다. 예를 들어 다음 코드는 DynamoDB 서비스와 `CreateTableCommand` 명령을 로드합니다.

```
import { DynamoDB, CreateTableCommand } from "@aws-sdk/client-dynamodb";
```

권장되는 async/await 패턴으로 이러한 명령을 직접적으로 호출하려면 다음 구문을 사용합니다.

```
CLIENT.send(new XXXCommand);
```

예를 들어 다음 예에서는 권장되는 async/await 패턴을 사용하여 DynamoDB 테이블을 생성합니다.

```
import { DynamoDB, CreateTableCommand } from "@aws-sdk/client-dynamodb";
const dynamodb = new DynamoDB({ region: "us-west-2" });
const tableParams = {
  TableName: TABLE_NAME
};

try {
  const data = await dynamodb.send(new CreateTableCommand(tableParams));
  console.log("Success", data);
} catch (err) {
  console.log("Error", err);
};
```

#### v2 명령 사용
<a name="using_v2_commands"></a>

SDK for JavaScript에서 v2 명령을 사용하려면 다음 코드와 같이 전체 AWS 서비스 패키지를 가져옵니다.

```
const { DynamoDB } = require('@aws-sdk/client-dynamodb');
```

 권장되는 async/await 패턴으로 v2 명령을 직접적으로 호출하려면 다음 구문을 사용합니다.

```
client.command(parameters);
```

다음 예에서는 v2 `createTable` 명령을 사용하여 권장되는 async/await 패턴으로 DynamoDB 테이블을 생성합니다.

```
const { DynamoDB } = require('@aws-sdk/client-dynamodb');
const dynamoDB = new DynamoDB({ region: 'us-west-2' });
var tableParams = {
  TableName: TABLE_NAME
};
async function run() => {
  try {
    const data = await dynamoDB.createTable(tableParams);
    console.log("Success", data);
  }
  catch (err) {
    console.log("Error", err);
  }
};
run();
```

다음 예에서는 v2 `createBucket` 명령을 사용하여 콜백 패턴으로 Amazon S3 버킷을 생성합니다.

```
const { S3 } = require('@aws-sdk/client-s3');
const s3 = new S3({ region: 'us-west-2' });
var bucketParams = {
  Bucket : BUCKET_NAME
};
function run() {
  s3.createBucket(bucketParams, function (err, data) {
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", data.Location);
    }
  })
};
run();
```

## 새 미들웨어 스택
<a name="welcome_whats_new_v3_middleware_stack"></a>

SDK v2를 사용하면 요청에 이벤트 리스너를 연결하여 수명 주기의 여러 단계에 걸쳐서 요청을 수정할 수 있었습니다. 이 접근 방식을 사용하면 요청의 수명 주기 동안 무엇이 잘못되었는지 디버깅하기가 어려울 수 있습니다.

v3에서는 새 미들웨어 스택을 사용하여 작업 직접 호출의 수명 주기를 제어할 수 있습니다. 이 접근 방식은 몇 가지 이점을 제공합니다. 스택의 각 미들웨어 단계는 요청 객체를 변경한 후 다음 미들웨어 단계를 직접적으로 호출합니다. 이렇게 하면 어떤 미들웨어 단계가 호출되어 오류가 발생했는지 정확하게 확인할 수 있으므로 스택의 문제를 디버깅하는 것도 훨씬 쉬워집니다.

다음 예에서는 미들웨어를 사용하여 Amazon DynamoDB 클라이언트(앞서 생성하고 보여준)에 사용자 지정 헤더를 추가합니다. 첫 번째 인수는 직접적으로 호출할 스택의 다음 미들웨어 단계인 `next`와 직접적으로 호출되는 작업에 관한 일부 정보가 포함된 객체인 `context`를 받는 함수입니다. 이 함수는 작업 및 요청에 전달되는 파라미터가 포함된 객체인 `args`를 받는 함수를 반환합니다. `args`를 사용하여 다음 미들웨어를 호출한 결과를 반환합니다.

```
dbclient.middlewareStack.add(
  (next, context) => args => {
    args.request.headers["Custom-Header"] = "value";
    return next(args);
  },
  {
    name: "my-middleware",
    override: true,
    step: "build"
  }
);

dbclient.send(new PutObjectCommand(params));
```

# AWS SDK for JavaScript v2와 v3의 차이점은 무엇인가요?
<a name="migrate-whats-different"></a>

 이 섹션에서는 AWS SDK for JavaScript v2에서 v3로의 주목할 만한 변경 사항을 살펴봅니다. v3는 v2를 모듈식으로 재작성한 것이므로 일부 기본 개념은 v2와 v3 간에 다릅니다. [블로그 게시물](https://aws.amazon.com/blogs/developer/category/developer-tools/aws-sdk-for-javascript-in-node-js/)에서 이러한 변경 사항에 대해 알아볼 수 있습니다. 다음 블로그 게시물을 통해 속도를 높일 수 있습니다.
+  [AWS SDK for JavaScript의 모듈식 패키지](https://aws.amazon.com/blogs/developer/modular-packages-in-aws-sdk-for-javascript/) 
+  [모듈식 AWS SDK for JavaScript의 미들웨어 스택 소개](https://aws.amazon.com/blogs/developer/middleware-stack-modular-aws-sdk-js/) 

 AWS SDK for JavaScript v2에서 v3로의 인터페이스 변경 사항 요약은 다음과 같습니다. 목표는 여러분이 이미 익숙한 v2 API의 v3 대응 버전을 쉽게 찾을 수 있도록 돕는 것입니다.

**Topics**
+ [클라이언트 생성자](migrate-client-constructors.md)
+ [보안 인증 공급자](migrate-credential-providers.md)
+ [Amazon S3 고려 사항](migrate-s3.md)
+ [DynamoDB 문서 클라이언트](migrate-dynamodb-doc-client.md)
+ [웨이터 및 서명자](migrate-waiters-signers.md)
+ [특정 서비스 클라이언트에 대한 참고 사항](migrate-service-client-notes.md)

# 클라이언트 생성자
<a name="migrate-client-constructors"></a>

 이 목록은 [v2 구성 파라미터](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html)로 인덱싱됩니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#computeChecksums-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#computeChecksums-property) 
  +  **v2**: 서비스가 페이로드 본문을 수락할 때 페이로드 본문에 대한 MD5 체크섬을 계산할지 여부(현재 S3에서만 지원됨).
  +  **v3**: S3의 해당 명령(PutObject, PutBucketCors 등)은 요청 페이로드의에 대한 MD5 체크섬을 자동으로 계산합니다. 명령의 `ChecksumAlgorithm` 파라미터에 다른 체크섬 알고리즘을 지정하여 다른 체크섬 알고리즘을 사용할 수도 있습니다. 자세한 내용은 [S3 기능 공지](https://aws.amazon.com/blogs/aws/new-additional-checksum-algorithms-for-amazon-s3/)에서 확인할 수 있습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#convertResponseTypes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#convertResponseTypes-property) 
  +  **v2**: 응답 데이터를 구문 분석할 때 유형이 변환되는지 여부입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. 이 옵션은 타임스탬프 또는 base64 바이너리와 같은 유형을 JSON 응답에서 변환하지 않으므로 유형 안전이 아닌 것으로 간주됩니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#correctClockSkew-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#correctClockSkew-property) 
  +  **v2**: 클럭 스큐 수정을 적용할지 여부와 스큐된 클라이언트 클럭으로 인해 실패한 요청을 재시도할지 여부입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. SDK는 *항상* 클럭 스큐 수정을 적용합니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#systemClockOffset-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#systemClockOffset-property) 
  +  **v2**: 모든 서명 시간에 적용할 밀리초 단위의 오프셋 값입니다.
  +  **v3**: 변경 없음.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#credentials-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#credentials-property) 
  +  **v2**: 요청에 서명할 AWS 자격 증명입니다.
  +  **v3**: 변경 없음. 자격 증명을 반환하는 비동기 함수일 수도 있습니다. 함수가 `expiration (Date)`를 반환하면 만료 날짜/시간이 가까워지면 함수가 다시 직접 호출됩니다. [`AwsAuthInputConfig` 자격 증명의 v3 API 참조](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-signing/Interface/AwsAuthInputConfig/)를 참조하세요.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointCacheSize-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointCacheSize-property) 
  +  **v2**: 엔드포인트 검색 작업에서 엔드포인트를 저장하는 글로벌 캐시의 크기입니다.
  +  **v3**: 변경 없음.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointDiscoveryEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointDiscoveryEnabled-property) 
  +  **v2**: 서비스에서 제공하는 엔드포인트를 사용하여 작업을 직접 호출할지 여부입니다.
  +  **v3**: 변경 없음.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#hostPrefixEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#hostPrefixEnabled-property) 
  +  **v2**: 요청 파라미터를 호스트 이름 접두사로 마샬링할지 여부입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. SDK는 필요한 경우 *항상* 호스트 이름 접두사를 주입합니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#httpOptions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#httpOptions-property) 

   하위 수준 HTTP 요청에 전달할 옵션 세트입니다. 이러한 옵션은 v3에서 다르게 집계됩니다. 새 `requestHandler`를 제공하여 구성할 수 있습니다. 다음은 Node.js 런타임에서 http 옵션을 설정하는 예제입니다. [NodeHttpHandler에 대한 v3 API 참조](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/)에서 자세한 내용을 확인할 수 있습니다.

   모든 v3 요청은 기본적으로 HTTPS를 사용합니다. 사용자 지정 httpsAgent만 제공하면 됩니다.

  ```
  const { Agent } = require("https");
  const { Agent: HttpAgent } = require("http");
  const { NodeHttpHandler } = require("@smithy/node-http-handler");
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new NodeHttpHandler({
          httpsAgent: new Agent({
              /*params*/
          }),
          connectionTimeout: /*number in milliseconds*/,
          socketTimeout: /*number in milliseconds*/
      }),
  });
  ```

   http를 사용하는 사용자 지정 엔드포인트를 전달하는 경우 httpAgent를 제공해야 합니다.

  ```
  const { Agent } = require("http");
  const { NodeHttpHandler } = require("@smithy/node-http-handler");
  
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new NodeHttpHandler({
          httpAgent: new Agent({
              /*params*/
          }),
      }),
      endpoint: "http://example.com",
  });
  ```

   클라이언트가 브라우저에서 실행 중인 경우 다른 옵션 세트를 사용할 수 있습니다. [FetchHttpHandler에 대한 v3 API 참조](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-fetch-http-handler/)에서 자세한 내용을 확인할 수 있습니다.

  ```
  const { FetchHttpHandler } = require("@smithy/fetch-http-handler");
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new FetchHttpHandler({
          requestTimeout: /* number in milliseconds */
      }),
  });
  ```

   `httpOptions`의 각 옵션은 아래에 지정되어 있습니다.
  +  `proxy` 
    +  **v2**: 요청을 프록시할 URL입니다.
    +  **v3**: [Node.js용 프록시 구성](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-proxies.html)에 따라 에이전트로 프록시를 설정할 수 있습니다.
  +  `agent` 
    +  **v2**: HTTP 요청을 수행할 에이전트 객체입니다. 연결 풀링에 사용됩니다.
    +  **v3**: 위의 예제와 같이 `httpAgent` 또는 `httpsAgent`를 구성할 수 있습니다.
  +  `connectTimeout` 
    +  **v2**: `connectTimeout`밀리초 후에 서버와의 연결을 설정하지 못한 후 소켓을 제한 시간으로 설정합니다.
    +  **v3**: `connectionTimeout`은 [`NodeHttpHandler` 옵션에서](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/) 사용할 수 있습니다.
  +  `timeout` 
    +  **v2**: 요청이 자동으로 종료되기까지 걸릴 수 있는 밀리초 수입니다.
    +  **v3**: `socketTimeout`은 [`NodeHttpHandler` 옵션에서](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/) 사용할 수 있습니다.
  +  `xhrAsync` 
    +  **v2**: SDK가 비동기 HTTP 요청을 전송할지 여부입니다.
    +  **v3**: **더 이상 사용되지 않습니다**. 요청은 *항상* 비동기식입니다.
  +  `xhrWithCredentials` 
    +  **v2**: XMLHttpRequest 객체의 ‘withCredentials’ 속성을 설정합니다.
    +  **v3**: 사용할 수 없습니다. SDK는 [기본 가져오기 구성](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)을 상속합니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#logger-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#logger-property) 
  +  **v2**: 요청에 대한 정보를 로깅하기 위해 `.write()`(스트림 등) 또는 `.log()`(콘솔 객체 등)에 응답하는 객체입니다.
  +  **v3**: 변경 없음. v3에서는 보다 세분화된 로그를 사용할 수 있습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRedirects-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRedirects-property) 
  +  **v2**: 서비스 요청에 대해 따를 최대 리디렉션 수입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. SDK는 의도하지 않은 교차 리전 요청을 방지하기 위해 리디렉션을 따르지 *않습니다*.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRetries-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRetries-property) 
  +  **v2**: 서비스 요청에 대해 수행할 최대 재시도 횟수입니다.
  +  **v3**: `maxAttempts`로 변경되었습니다. [RetryInputConfig에 대한 v3 API 참조](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-middleware-retry/Interface/RetryInputConfig/)에서 자세한 내용을 참조하세요. `maxAttempts`는 `maxRetries + 1`이어야 합니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#paramValidation-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#paramValidation-property) 
  +  **v2**: 요청을 보내기 전에 작업 설명과 비교하여 입력 파라미터를 검증해야 하는지 여부입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. SDK는 런타임 시 클라이언트 측에서 검증을 수행하지 *않습니다*.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#region-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#region-property) 
  +  **v2**: 서비스 요청을 보낼 리전입니다.
  +  **v3**: 변경 없음. 리전 문자열을 반환하는 비동기 함수일 수도 있습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#retryDelayOptions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#retryDelayOptions-property) 
  +  **v2**: 재시도 가능한 오류에 대한 재시도 지연을 구성하는 옵션 세트입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. SDK는 `retryStrategy` 클라이언트 생성자 옵션을 사용하여 보다 유연한 재시도 전략을 지원합니다. [v3 API 참조](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/)에서 자세한 내용을 참조하세요.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3BucketEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3BucketEndpoint-property) 
  +  **v2**: 제공된 엔드포인트가 개별 버킷을 처리하는지 여부(루트 API 엔드포인트를 처리하는 경우 false).
  +  **v3**: `bucketEndpoint`로 변경되었습니다. [bucketEndpoint에 대한 v3 API 참조](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-bucket-endpoint/Interface/BucketEndpointInputConfig/)에서 자세한 내용을 참조하세요. `true`로 설정하면 `Bucket` 요청 파라미터에서 요청 엔드포인트를 지정했을 때 원래 엔드포인트를 덮어씁니다. v2에서는 클라이언트 생성자의 요청 엔드포인트가 `Bucket` 요청 파라미터를 덮어씁니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3DisableBodySigning-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3DisableBodySigning-property) 
  +  **v2**: 서명 버전 v4를 사용할 때 S3 본문 서명을 비활성화할지 여부입니다.
  +  **v3**: 이름이 `applyChecksum`으로 바뀌었습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3ForcePathStyle-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3ForcePathStyle-property) 
  +  **v2**: S3 객체에 대한 경로 스타일 URL을 강제 적용할지 여부입니다.
  +  **v3**: 이름이 `forcePathStyle`으로 바뀌었습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UseArnRegion-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UseArnRegion-property) 
  +  **v2**: 요청된 리소스의 ARN에서 추론된 리전으로 요청 리전을 재정의할지 여부입니다.
  +  **v3**: 이름이 `useArnRegion`으로 바뀌었습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UsEast1RegionalEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UsEast1RegionalEndpoint-property) 
  +  **v2**: 리전이 'us-east-1'로 설정된 경우 글로벌 엔드포인트 또는 'us-east-1' 리전 엔드포인트에 S3 요청을 보낼지 여부입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. 리전이 `us-east-1`로 설정된 경우 S3 클라이언트는 항상 리전 엔드포인트를 사용합니다. 리전을 `aws-global`로 설정하여 S3 글로벌 엔드포인트에 요청을 보낼 수 있습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureCache-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureCache-property) 
  +  **v2**: 서명 요청에 사용할 서명(API 구성을 재정의함)이 캐시되는지 여부입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. SDK는 해시된 서명 키를 *항상* 캐시합니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureVersion-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureVersion-property) 
  +  **v2**: 요청에 서명할 시그니처 버전입니다(API 구성을 재정의함).
  +  **v3**: **더 이상 사용되지 않습니다**. v2 SDK에서 지원되는 서명 V2는에서 더 이상 사용되지 않습니다 AWS. v3는 서명 v4*만* 지원합니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#sslEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#sslEnabled-property) 
  +  **v2**: 요청에 SSL을 활성화할지 여부입니다.
  +  **v3**: 이름이 `tls`으로 바뀌었습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#stsRegionalEndpoints-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#stsRegionalEndpoints-property) 
  +  **v2**: 글로벌 엔드포인트 또는 리전 엔드포인트에 STS 요청을 보낼지 여부입니다.
  +  **v3**: **더 이상 사용되지 않습니다**. STS 클라이언트는 특정 리전으로 설정된 경우 *항상* 리전 엔드포인트를 사용합니다. 리전을 `aws-global`로 설정하여 STS 글로벌 엔드포인트에 요청을 보낼 수 있습니다.
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#useAccelerateEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#useAccelerateEndpoint-property) 
  +  **v2**: Accelerate 엔드포인트를 S3 서비스와 함께 사용할지 여부입니다.
  +  **v3**: 변경 없음.

# 보안 인증 공급자
<a name="migrate-credential-providers"></a>

 v2에서 JavaScript용 SDK는 선택할 수 있는 자격 증명 공급자 목록과 Node.js에서 기본적으로 사용 가능한 자격 증명 공급자 체인을 제공하며, 이를 통해 가장 일반적인 공급자의 AWS 자격 증명을 로드하려고 합니다. SDK for JavaScript v3는 자격 증명 공급자의 인터페이스를 간소화하므로 사용자 지정 자격 증명 공급자를 더 쉽게 사용하고 쓸 수 있습니다. 새로운 자격 증명 공급자 체인 외에도 SDK for JavaScript v3는 모두 v2와 동등한 것을 제공하는 것을 목표로 하는 자격 증명 공급자 목록을 제공합니다.

 다음은 v2의 모든 자격 증명 공급자와 v3의 해당 자격 증명 공급자입니다.

## 기본 자격 증명 공급자
<a name="default-credential-provider"></a>

 기본 자격 증명 공급자는 명시적으로 제공하지 *않는* 경우 SDK for JavaScript가 AWS 자격 증명을 확인하는 방법입니다.
+  **v2**: Node.js의 [CredentialProviderChain](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html)은 소스의 자격 증명을 다음 순서로 확인합니다.
  +  [환경 변수](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-environment.html) 
  +  [공유 자격 증명 파일](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html) 
  +  [ECS 컨테이너 자격 증명](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
  +  [외부 프로세스 생성](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html) 
  +  [지정된 파일의 OIDC 토큰](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
  +  [Amazon EC2 인스턴스 메타데이터입니다](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html).

   위의 자격 증명 공급자 중 하나가 AWS 자격 증명을 확인하지 못하면 유효한 자격 증명이 확인될 때까지 체인이 다음 공급자로 돌아가고 모든 공급자가 실패하면 체인에서 오류가 발생합니다.

   브라우저 및 React Native 런타임에서 자격 증명 체인은 비어 있으며 자격 증명을 명시적으로 설정해야 합니다.
+  **v3**: [defaultProvider](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers#fromnodejsproviderchain-1). 자격 증명 소스와 대체 순서는 v3에서 변경되지 *않습니다*. 또한 [AWS IAM Identity Center 자격 증명](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)을 지원합니다.

## 임시 자격 증명
<a name="temporary-credentials"></a>
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html)는 `AWS.STS`에서 검색된 임시 자격 증명을 나타냅니다. 추가 파라미터가 없으면 `AWS.STS.getSessionToken()` 작업에서 자격 증명을 가져옵니다. IAM 역할이 제공된 경우, `AWS.STS.assumeRole()` 작업이 해당 역할의 자격 증명을 가져오는 데 사용됩니다. `AWS.ChainableTemporaryCredentials`는 `AWS.TemporaryCredentials`와는 다른 방식으로 masterCredentials 및 갱신을 처리합니다. `AWS.ChainableTemporaryCredentials`는 사용자가 전달한 masterCredentials를 사용하여 만료된 자격 증명을 갱신하여 STS 자격 증명의 체인 연결을 지원합니다. 그러나 `AWS.TemporaryCredentials`는 인스턴스화 중에 masterCredentials를 반복적으로 축소하므로 중간 임시 자격 증명이 필요한 자격 증명을 새로 고칠 수 없습니다.

   원본 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html)는 v2의 `ChainableTemporaryCredentials`에서 **더 이상 사용되지 않습니다**.
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials). `@aws-sdk/credential-providers` 패키지에서 `fromTemporaryCredentials()`를 호출할 수 있습니다. 다음은 그 예입니다.

  ```
  import { FooClient } from "@aws-sdk/client-foo";
  import { fromTemporaryCredentials } from "@aws-sdk/credential-providers"; // ES6 import
  // const { FooClient } = require("@aws-sdk/client-foo");
  // const { fromTemporaryCredentials } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const sourceCredentials = {
    // A credential can be a credential object or an async function that returns a credential object
  };
  const client = new FooClient({
    credentials: fromTemporaryCredentials({
      masterCredentials: sourceCredentials,
      params: { RoleArn },
    }),
  });
  ```

## Amazon Cognito Identity 자격 증명
<a name="cognito-identity-credentials"></a>

 일반적으로 브라우저에서 사용되는 Amazon Cognito Identity 서비스에서 자격 증명을 로드합니다.
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html) Amazon Cognito Identity 서비스를 사용하여 STS 웹 ID 페더레이션에서 검색된 자격 증명을 나타냅니다.
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) [`@aws/credential-providers` 패키지](https://www.npmjs.com/package/@aws-sdk/credential-providers)는 두 개의 자격 증명 공급자 함수를 제공합니다. 하나는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)로, 자격 증명 ID를 받아 `cognitoIdentity:GetCredentialsForIdentity`를 직접 호출합니다. 다른 하나는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)로, 자격 증명 풀 ID를 받아 첫 번째 간접 호출 시 `cognitoIdentity:GetId`를 직접 호출한 후 직접 호출합니다`fromCognitoIdentity`. 후자의 후속 간접 호출은 GetId를 다시 간접 호출하지 않습니다.

   공급자는 [Amazon Cognito 개발자 안내서](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html)에 설명된 ‘간소화된 흐름’을 구현합니다. 직접 호출 `cognito:GetOpenIdToken` 및 `sts:AssumeRoleWithWebIdentity`를 포함하는 ‘클래식 흐름’은 지원되지 *않습니다*. 필요한 경우 [기능 요청](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=)을 시작해 주세요.

  ```
  // fromCognitoIdentityPool example
  import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentityPool } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentityPool({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

  ```
  // fromCognitoIdentity example
  import { fromCognitoIdentity } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentity } = require("@aws-sdk/credential-provider-cognito-identity"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentity({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityId: "us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

## Amazon EC2 메타데이터(IMDS) 자격 증명
<a name="ec2-metadataimds-credential"></a>

 Amazon EC2 인스턴스의 메타데이터 서비스에서 받은 자격 증명을 나타냅니다.
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata). Amazon EC2 인스턴스 메타데이터 서비스에서 자격 증명을 소싱할 자격 증명 공급자를 생성합니다.

  ```
  import { fromInstanceMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromInstanceMetadata } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromInstanceMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## Amazon ECS 자격 증명
<a name="ecs-credentials"></a>

 지정된 URL에서 받은 자격 증명을 나타냅니다. 이 공급자는 `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` 또는 `AWS_CONTAINER_CREDENTIALS_FULL_URI` 환경 변수로 지정된 URI에서 임시 자격 증명을 요청합니다.
+  **v2**: `ECSCredentials` 또는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata). Amazon ECS 컨테이너 메타데이터 서비스에서 자격 증명을 소싱할 자격 증명 공급자를 생성합니다.

  ```
  import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  
  const client = new FooClient({
    credentials: fromContainerMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## 파일 시스템 자격 증명
<a name="file-system-credentials"></a>
+ **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html). 디스크에 있는 JSON 파일의 자격 증명을 나타냅니다.
+  **v3**: **더 이상 사용되지 않습니다**. JSON 파일을 명시적으로 읽고 클라이언트에 제공할 수 있습니다. 필요한 경우 [기능 요청](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=)을 시작해 주세요.

## SAML 자격 증명 공급자
<a name="saml-credential-provider"></a>
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html) STS SAML 지원에서 검색된 자격 증명을 나타냅니다.
+  **v3**: **사용할 수 없습니다**. 필요한 경우 [기능 요청](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=)을 시작해 주세요.

## 공유 자격 증명 파일 자격 증명
<a name="shared-credential-file-credentials"></a>

 공유 자격 증명 파일에서 자격 증명을 로드합니다(기본값은 `~/.aws/credentials` 또는 `AWS_SHARED_CREDENTIALS_FILE` 환경 변수로 정의됨). 이 파일은 다양한 AWS SDK 및 도구에서 지원됩니다. 자세한 내용은 [공유 구성 및 자격 증명 파일 문서](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)를 참조하세요.
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) 

  ```
  import { fromIni } from "@aws-sdk/credential-providers";
  // const { fromIni } from("@aws-sdk/credential-providers");
  
  const client = new FooClient({
    credentials: fromIni({
      configFilepath: "~/.aws/config", // Optional
      filepath: "~/.aws/credentials", // Optional
      mfaCodeProvider: async (mfaSerial) => {
        // implement a pop-up asking for MFA code
        return "some_code";
      }, // Optional
      profile: "default", // Optional
      clientConfig: { region }, // Optional
    }),
  });
  ```

## 웹 ID 자격 증명
<a name="web-identity-credentials"></a>

 디스크의 파일에서 OIDC 토큰을 사용하여 자격 증명을 검색합니다. Amazon EKS에서 일반적으로 사용됩니다.
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile) 

  ```
  import { fromTokenFile } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromTokenFile } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromTokenFile({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```

## 웹 ID 페더레이션 자격 증명
<a name="web-identity-federation-credentials"></a>

 STS 웹 ID 페더레이션 지원에서 자격 증명을 검색합니다.
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken) 

  ```
  import { fromWebToken } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromWebToken } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromWebToken({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```

# Amazon S3 고려 사항
<a name="migrate-s3"></a>

## Amazon S3 멀티파트 업로드
<a name="s3-multipart-upload"></a>

 v2에서 Amazon S3 클라이언트에는 [Amazon S3에서 제공하는 멀티파트 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) 기능을 사용하여 대용량 객체 업로드를 지원하는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property) 작업이 포함되어 있습니다.

 v3에서는 [https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage) 패키지를 사용할 수 있습니다. v2 `upload()` 작업에서 제공되는 모든 기능을 지원하며 Node.js 및 브라우저 런타임을 모두 지원합니다.

## Amazon S3에 미리 서명된 URL
<a name="s3-presigned-url"></a>

 v2에서 Amazon S3 클라이언트에는 사용자가 Amazon S3에서 객체를 업로드하거나 다운로드하는 데 사용할 수 있는 URL을 생성하는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property) 및 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property) 작업이 포함되어 있습니다.

 v3에서는 [https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner](https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner) 패키지를 사용할 수 있습니다. 이 패키지에는 `getSignedUrl()` 및 ` getSignedUrlPromise()` 작업 모두에 대한 함수가 포함되어 있습니다. 이 [블로그 게시물](https://aws.amazon.com/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/)에서 이 패키지의 세부 정보를 설명합니다.

## Amazon S3 리전 리디렉션
<a name="s3-global-client-region-redirects"></a>

잘못된 리전이 Amazon S3 클라이언트에 전달되고 후속 ` PermanentRedirect`(상태 301) 오류가 발생하는 경우 v3의 Amazon S3 클라이언트는 리전 리디렉션(이전에는 v2의 Amazon S3 Global Client라고 함)을 지원합니다. 클라이언트 구성에서 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/) 플래그를 사용하여 Amazon S3 클라이언트가 리전 리디렉션을 따르고 글로벌 클라이언트로서 해당 기능을 지원하도록 할 수 있습니다.

**참고**  
상태가 301인 `PermanentRedirect` 오류를 수신하면 실패한 요청이 수정된 리전으로 재시도되므로 이 기능으로 인해 추가 지연 시간이 발생할 수 있습니다. 이 기능은 버킷의 리전을 사전에 알지 못하는 경우에만 사용해야 합니다.

## Amazon S3 스트리밍 및 버퍼링된 응답
<a name="amazon-s3-stream-vs-buffer"></a>

 v3 SDK는 잠재적으로 큰 응답을 버퍼링하지 않는 것을 선호합니다. 이는 일반적으로 v2에서 `Buffer`를 반환했지만 v3에서 `Stream`을 반환하는 Amazon S3 `GetObject` 작업에서 발생합니다.

 Node.js의 경우 스트림 또는 가비지 수집 클라이언트 또는 요청 핸들러를 사용하여 소켓을 해제하여 새 트래픽에 대한 연결을 열어 두어야 합니다.

```
// v2
const get = await s3.getObject({ ... }).promise(); // this buffers consumes the stream already.
```

```
// v3, consume the stream to free the socket
const get = await s3.getObject({ ... }); // object .Body has unconsumed stream
const str = await get.Body.transformToString(); // consumes the stream

// other ways to consume the stream include writing it to a file,
// passing it to another consumer like an upload, or buffering to
// a string or byte array.
```

 자세한 내용은 [소켓 소진](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#request-handler-requesthandler) 섹션을 참조하세요.

# DynamoDB 문서 클라이언트
<a name="migrate-dynamodb-doc-client"></a>

## v3에서 DynamoDB 문서 클라이언트의 기본 사용
<a name="basic-usage-of-dynamodb-document-client-in-v3"></a>
+  v2에서는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html) 클래스를 사용하여 배열, 숫자 및 객체와 같은 기본 JavaScript 유형을 사용하여 DynamoDB API를 직접 호출할 수 있습니다. 이렇게 하면 속성 값의 개념을 추상화하여 Amazon DynamoDB에서 항목 작업을 간소화할 수 있습니다.
+  v3에서는 동등한 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html) 클라이언트를 사용할 수 있습니다. v3 SDK의 일반 서비스 클라이언트와 유사하지만 생성자에서 기본 DynamoDB 클라이언트를 사용한다는 차이점이 있습니다.

 예제: 

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; // ES6 import
// const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); // CommonJS import
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb"; // ES6 import
// const { DynamoDBDocumentClient, PutCommand } = require("@aws-sdk/lib-dynamodb"); // CommonJS import

// Bare-bones DynamoDB Client
const client = new DynamoDBClient({});

// Bare-bones document client
const ddbDocClient = DynamoDBDocumentClient.from(client); // client is DynamoDB client

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "1",
      content: "content from DynamoDBDocumentClient",
    },
  })
);
```

## 마샬링 시의 `Undefined` 값
<a name="undefined-values-in-when-marshalling"></a>
+  v2에서는 DynamoDB에 대한 마샬링 프로세스 중에 객체의 `undefined` 값이 자동으로 생략되었습니다.
+  v3에서는 `@aws-sdk/lib-dynamodb`의 기본 마샬링 동작이 변경되었습니다. 값이 `undefined`인 객체는 더 이상 생략되지 않습니다. v2의 기능에 맞게 개발자는 DynamoDB 문서 클라이언트의 `marshallOptions`에서 `removeUndefinedValues`를 `true`로 명시적으로 설정해야 합니다.

 예제: 

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb";

const client = new DynamoDBClient({});

// The DynamoDBDocumentClient is configured to handle undefined values properly
const ddbDocClient = DynamoDBDocumentClient.from(client, {
  marshallOptions: {
    removeUndefinedValues: true
  }
});

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "123",
      content: undefined // This value will be automatically omitted.
      array: [1, undefined], // The undefined value will be automatically omitted.
      map: { key: undefined }, // The "key" will be automatically omitted.
      set: new Set([1, undefined]), // The undefined value will be automatically omitted.
    };
  })
);
```

 [패키지 README](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-dynamodb/README.md)에서 더 많은 예제와 구성을 사용할 수 있습니다.

# 웨이터 및 서명자
<a name="migrate-waiters-signers"></a>

이 페이지에서는 AWS SDK for JavaScript v3에서 웨이터 및 서명자를 사용하는 방법을 설명합니다.

## Waiters
<a name="waiters"></a>

 v2에서는 모든 웨이터가 서비스 클라이언트 클래스에 바인딩되며 클라이언트가 대기할 설계된 상태를 웨이터의 입력에 지정해야 합니다. 예를 들어 새로 생성된 버킷이 준비될 때까지 기다리려면 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#bucketExists-waiter](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#bucketExists-waiter)를 호출해야 합니다.

 v3에서는 애플리케이션에 웨이터가 필요하지 않은 경우 웨이터를 가져올 필요가 없습니다. 또한 원하는 특정 상태를 기다리는 데 필요한 웨이터만 가져올 수 있습니다. 따라서 번들 크기를 줄이고 성능을 개선할 수 있습니다. 다음은 생성 후 버킷이 준비될 때까지 기다리는 예입니다.

```
import { S3Client, CreateBucketCommand, waitUntilBucketExists } from "@aws-sdk/client-s3"; // ES6 import
// const { S3Client, CreateBucketCommand, waitUntilBucketExists } = require("@aws-sdk/client-s3"); // CommonJS import

const Bucket = "BUCKET_NAME";
const client = new S3Client({ region: "REGION" });
const command = new CreateBucketCommand({ Bucket });

await client.send(command);
await waitUntilBucketExists({ client, maxWaitTime: 60 }, { Bucket });
```

 [AWS SDK for JavaScript v3의 웨이터 블로그 게시물](https://aws.amazon.com/blogs/developer/waiters-in-modular-aws-sdk-for-javascript/)에서 웨이터를 구성하는 방법을 모두 찾을 수 있습니다.

## Amazon CloudFront 서명자
<a name="cloudfront-signer"></a>

 v2에서는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html)를 사용하여 제한된 Amazon CloudFront 배포에 액세스하기 위한 요청에 서명할 수 있습니다.

 v3에는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_cloudfront_signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_cloudfront_signer.html) 패키지에 제공된 것과 동일한 유틸리티가 있습니다.

## Amazon RDS 서명자
<a name="rds-signer"></a>

 v2에서는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS/Signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS/Signer.html)를 사용하여 Amazon RDS 데이터베이스에 대한 인증 토큰을 생성할 수 있습니다.

 v3에서는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html) 패키지에서 유사한 유틸리티 클래스를 사용할 수 있습니다.

## Amazon Polly 서명자
<a name="polly-signer"></a>

 v2에서는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Polly/Presigner.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Polly/Presigner.html)를 사용하여 Amazon Polly 서비스에서 합성한 음성에 대한 서명된 URL을 생성할 수 있습니다.

 v3에서는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_polly_request_presigner.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_polly_request_presigner.html) 패키지에서 유사한 유틸리티 함수를 사용할 수 있습니다.

# 특정 서비스 클라이언트에 대한 참고 사항
<a name="migrate-service-client-notes"></a>

## AWS Lambda
<a name="aws-lambda-notes"></a>

 Lambda 간접 호출 응답 유형은 v2와 v3에서 서로 다릅니다.

```
// v2
import { Lambda } from "@aws-sdk/client-lambda";
import AWS from "aws-sdk";

const lambda = new AWS.Lambda({ REGION });
const invoke = await lambda.invoke({
  FunctionName: "echo",
  Payload: JSON.stringify({ message: "hello" }),
}).promise();

// in v2, Lambda::invoke::Payload is automatically converted to string via a
// specific code customization.
const payloadIsString = typeof invoke.Payload === "string";
console.log("Invoke response payload type is string:", payloadIsString);

const payloadObject = JSON.parse(invoke.Payload);
console.log("Invoke response object", payloadObject);
```

```
// v3
const lambda = new Lambda({ REGION });
const invoke = await lambda.invoke({
  FunctionName: "echo",
  Payload: JSON.stringify({ message: "hello" }),
});

// in v3, Lambda::invoke::Payload is not automatically converted to a string.
// This is to reduce the number of customizations that create inconsistent behaviors.
const payloadIsByteArray = invoke.Payload instanceof Uint8Array;
console.log("Invoke response payload type is Uint8Array:", payloadIsByteArray);

// To maintain the old functionality, only one additional method call is needed:
// v3 adds a method to the Uint8Array called transformToString.
const payloadObject = JSON.parse(invoke.Payload.transformToString());
console.log("Invoke response object", payloadObject);
```

## Amazon SQS
<a name="amazon-sqs-notes"></a>

### MD5 체크섬
<a name="md5-checksum"></a>

 메시지 본문의 MD5 체크섬 계산을 건너뛰려면 구성 객체에서 `md5`를 *false*로 설정합니다. 그렇지 않으면 SDK는 기본적으로 메시지 전송을 위한 체크섬을 계산하고 검색된 메시지에 대한 체크섬을 검증합니다.

```
// Example: Skip MD5 checksum in Amazon SQS
import { SQS } from "@aws-sdk/client-sqs";

new SQS({
  md5: false // note: only available in v3.547.0 and higher
});
```

이를 입력 파라미터로 사용하는 Amazon SQS 작업에서 사용자 지정 `QueueUrl`을 사용할 때 v2에서는 Amazon SQS 클라이언트의 기본 엔드포인트를 재정의하는 사용자 지정 `QueueUrl`을 제공할 수 있었습니다.

### 다중 리전 메시지
<a name="multi-region-messages"></a>

 v3에서는 리전당 하나의 클라이언트를 사용해야 합니다. AWS 리전은 클라이언트 수준에서 초기화되며 요청 간에 변경되지 않습니다.

```
import { SQS } from "@aws-sdk/client-sqs";

const sqsClients = {
  "us-east-1": new SQS({ region: "us-east-1" }),
  "us-west-2": new SQS({ region: "us-west-2" }),
};

const queues = [
  { region: "us-east-1", url: "https://sqs.us-east-1.amazonaws.com/{AWS_ACCOUNT}/MyQueue" },
  { region: "us-west-2", url: "https://sqs.us-west-2.amazonaws.com/{AWS_ACCOUNT}/MyOtherQueue" },
];

for (const { region, url } of queues) {
  const params = {
    MessageBody: "Hello",
    QueueUrl: url,
  };
  await sqsClients[region].sendMessage(params);
}
```

### 사용자 지정 엔드포인트
<a name="custom-endpoint"></a>

 v3에서 사용자 지정 엔드포인트, 즉 기본 퍼블릭 Amazon SQS 엔드포인트와 다른 엔드포인트를 사용하는 경우 항상 Amazon SQS 클라이언트와 ` QueueUrl` 필드에 엔드포인트를 설정해야 합니다.

```
import { SQS } from "@aws-sdk/client-sqs";

const sqs = new SQS({
  // client endpoint should be specified in v3 when not the default public SQS endpoint for your region.
  // This is required for versions <= v3.506.0
  // This is optional but recommended for versions >= v3.507.0 (a warning will be emitted)
  endpoint: "https://my-custom-endpoint:8000/",
});

await sqs.sendMessage({
  QueueUrl: "https://my-custom-endpoint:8000/1234567/MyQueue",
  Message: "hello",
});
```

 사용자 지정 엔드포인트를 사용하지 않는 경우 클라이언트에서 `endpoint`를 설정할 필요가 없습니다.

```
import { SQS } from "@aws-sdk/client-sqs";

const sqs = new SQS({
  region: "us-west-2",
});

await sqs.sendMessage({
  QueueUrl: "https://sqs.us-west-2.amazonaws.com/1234567/MyQueue",
  Message: "hello",
});
```

# 보충 설명서
<a name="migrate-supp-docs"></a>

다음 표에는 AWS SDK for JavaScript(v3)를 사용하고 이해하는 데 도움이 되는 보충 설명서 링크가 포함되어 있습니다.


****  

| 명칭 | Notes | 
| --- | --- | 
| [SDK 클라이언트](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md) | SDK 클라이언트 및 구성 가능한 일반적인 생성자 파라미터 초기화에 대한 정보입니다. | 
| [업그레이드 참고 사항(2.x에서 3.x로)](https://github.com/aws/aws-sdk-js-v3/blob/main/UPGRADING.md) | AWS SDK for JavaScript(v2)에서 업그레이드하는 방법에 대한 정보입니다. | 
| [AWS Lambda Node.js 런타임에서 AWS SDK for JavaScript(v3) 사용](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/AWS_LAMBDA.md) | AWS SDK for JavaScript(v3)를 사용하여 AWS Lambda 내에서 작업하는 모범 사례입니다. | 
| [성능](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/performance/README.md). | AWS SDK 팀이 SDK의 성능을 최적화한 방법에 대한 정보와 SDK를 효율적으로 실행하도록 구성하기 위한 팁이 포함되어 있습니다. | 
| [TypeScript](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/TYPESCRIPT.md) | AWS SDK for JavaScript(v3)와 관련된 TypeScript 팁 및 FAQ. | 
| [오류 처리](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/ERROR_HANDLING.md) | AWS SDK for JavaScript(v3)와 관련된 오류를 처리하기 위한 팁입니다. | 
| [유효 사례](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/EFFECTIVE_PRACTICES.md) | AWS SDK for JavaScript(v3) 사용에 대한 일반 권장 사항입니다. | 