

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

# Amazon DynamoDB 예제
<a name="dynamodb-examples"></a>

Amazon DynamoDB는 문서 모델과 키-값 스토어 모델을 모두 지원하는 완전 관리형 NoSQL 클라우드 데이터베이스입니다. 전용 데이터베이스 서버를 프로비저닝하거나 유지 관리할 필요 없이 데이터에 대해 스키마 없는 테이블을 생성합니다.

![\[JavaScript 환경, SDK, DynamoDB 간의 관계\]](http://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/images/code-samples-dynamodb.png)


DynamoDB용 JavaScript API는 `AWS.DynamoDB`, `AWS.DynamoDBStreams` 및 `AWS.DynamoDB.DocumentClient` 클라이언트 클래스를 통해 노출됩니다. DynamoDB 클라이언트 클래스 사용에 대한 자세한 내용은 API 참조의 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html), [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDBStreams.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDBStreams.html), [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html) 섹션을 참조하세요.

**Topics**
+ [DynamoDB에서 테이블 생성 및 사용](dynamodb-examples-using-tables.md)
+ [DynamoDB에서 단일 항목 읽기 및 쓰기](dynamodb-example-table-read-write.md)
+ [DynamoDB에서 배치로 항목 읽기 및 쓰기](dynamodb-example-table-read-write-batch.md)
+ [DynamoDB 테이블 쿼리 및 스캔](dynamodb-example-query-scan.md)
+ [DynamoDB 문서 클라이언트 사용](dynamodb-example-document-client.md)

# DynamoDB에서 테이블 생성 및 사용
<a name="dynamodb-examples-using-tables"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**이 Node.js 코드 예제는 다음을 보여 줍니다.**
+ DynamoDB에서 데이터를 저장하고 검색하는 데 사용되는 테이블을 생성하고 관리하는 방법

## 시나리오
<a name="dynamodb-examples-using-tables-scenario"></a>

다른 데이터베이스 시스템과 마찬가지로 DynamoDB는 데이터를 테이블에 저장합니다. DynamoDB 테이블은 행과 유사한 항목으로 구성되는 데이터의 모음입니다. DynamoDB에서 데이터를 저장하거나 데이터에 액세스하려면 테이블을 생성하고 테이블로 작업합니다.

이 예에서는 일련의 Node.js 모듈을 사용하여 DynamoDB 테이블의 기본 작업을 수행합니다. 이 코드는 SDK for JavaScript에서 `AWS.DynamoDB` 클라이언트 클래스의 다음 메서드를 사용하여 테이블을 생성하고 테이블로 작업합니다.
+ [createTable](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#createTable-property)
+ [listTables](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#listTables-property)
+ [describeTable](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#describeTable-property)
+ [deleteTable](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#deleteTable-property)

## 사전 필수 작업
<a name="dynamodb-examples-using-tables-prerequisites"></a>

이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.
+ Node.js를 설치합니다. 자세한 내용은 [Node.js](https://nodejs.org) 웹 사이트를 참조하세요.
+ 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 [공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-shared.md) 섹션을 참조하세요.

## 표 생성
<a name="dynamodb-examples-using-tables-creating-a-table"></a>

파일 이름이 `ddb_createtable.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 테이블을 생성하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 각 속성의 이름과 데이터 형식, 키 스키마, 테이블의 이름, 프로비저닝할 처리량의 단위가 포함됩니다. DynamoDB 객체의 `createTable` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  AttributeDefinitions: [
    {
      AttributeName: "CUSTOMER_ID",
      AttributeType: "N",
    },
    {
      AttributeName: "CUSTOMER_NAME",
      AttributeType: "S",
    },
  ],
  KeySchema: [
    {
      AttributeName: "CUSTOMER_ID",
      KeyType: "HASH",
    },
    {
      AttributeName: "CUSTOMER_NAME",
      KeyType: "RANGE",
    },
  ],
  ProvisionedThroughput: {
    ReadCapacityUnits: 1,
    WriteCapacityUnits: 1,
  },
  TableName: "CUSTOMER_LIST",
  StreamSpecification: {
    StreamEnabled: false,
  },
};

// Call DynamoDB to create the table
ddb.createTable(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Table Created", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_createtable.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_createtable.js)에서 찾을 수 있습니다.

## 테이블 목록 조회
<a name="dynamodb-examples-using-tables-listing-tables"></a>

파일 이름이 `ddb_listtables.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 테이블을 나열하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다, 이 예제에서는 나열되는 테이블 수를 10으로 제한합니다. DynamoDB 객체의 `listTables` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create the 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("Table names are ", data.TableNames);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_listtables.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_listtables.js)에서 찾을 수 있습니다.

## 테이블 설명
<a name="dynamodb-examples-using-tables-describing-a-table"></a>

파일 이름이 `ddb_describetable.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 테이블을 설명하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 명령줄 파라미터로 제공되는 테이블의 이름이 포함됩니다. DynamoDB 객체의 `describeTable` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  TableName: process.argv[2],
};

// Call DynamoDB to retrieve the selected table descriptions
ddb.describeTable(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.Table.KeySchema);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_describetable.js TABLE_NAME
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_describetable.js)에서 찾을 수 있습니다.

## 테이블 삭제
<a name="dynamodb-examples-using-tables-deleting-a-table"></a>

파일 이름이 `ddb_deletetable.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 테이블을 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예에서는 명령줄 파라미터로 제공되는 테이블의 이름을 포함합니다. DynamoDB 객체의 `deleteTable` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  TableName: process.argv[2],
};

// Call DynamoDB to delete the specified table
ddb.deleteTable(params, function (err, data) {
  if (err && err.code === "ResourceNotFoundException") {
    console.log("Error: Table not found");
  } else if (err && err.code === "ResourceInUseException") {
    console.log("Error: Table in use");
  } else {
    console.log("Success", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_deletetable.js TABLE_NAME
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_deletetable.js)에서 찾을 수 있습니다.

# DynamoDB에서 단일 항목 읽기 및 쓰기
<a name="dynamodb-example-table-read-write"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**이 Node.js 코드 예제는 다음을 보여 줍니다.**
+ DynamoDB 테이블에서 항목을 추가하는 방법
+ DynamoDB 테이블에서 항목을 검색하는 방법
+ DynamoDB 테이블에서 항목을 삭제하는 방법

## 시나리오
<a name="dynamodb-example-table-read-write-scenario"></a>

이 예에서는 일련의 Node.js 모듈에서 `AWS.DynamoDB` 클라이언트 클래스의 다음 메서드를 사용하여 DynamoDB 테이블에서 항목 하나를 읽고 씁니다.
+ [putItem](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property)
+ [getItem](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#getItem-property)
+ [deleteItem](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#deleteItem-property)

## 사전 필수 작업
<a name="dynamodb-example-table-read-write-prerequisites"></a>

이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.
+ Node.js를 설치합니다. 자세한 내용은 [Node.js](https://nodejs.org) 웹 사이트를 참조하세요.
+ 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 [공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-shared.md) 섹션을 참조하세요.
+ 액세스할 수 있는 항목이 포함된 DynamoDB 테이블을 생성합니다. DynamoDB 테이블 생성에 관한 자세한 내용은 [DynamoDB에서 테이블 생성 및 사용](dynamodb-examples-using-tables.md) 섹션을 참조하세요.

## 항목 쓰기
<a name="dynamodb-example-table-read-write-writing-an-item"></a>

파일 이름이 `ddb_putitem.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 항목을 추가하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름 및 설정할 속성과 각 속성의 값을 정의하는 맵이 포함됩니다. DynamoDB 객체의 `putItem` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  TableName: "CUSTOMER_LIST",
  Item: {
    CUSTOMER_ID: { N: "001" },
    CUSTOMER_NAME: { S: "Richard Roe" },
  },
};

// Call DynamoDB to add the item to the table
ddb.putItem(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_putitem.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_putitem.js)에서 찾을 수 있습니다.

## 항목 가져오기
<a name="dynamodb-example-table-read-write-getting-an-item"></a>

파일 이름이 `ddb_getitem.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 가져올 항목을 식별하려면 테이블의 해당 항목에 대한 기본 키의 값을 제공해야 합니다. 기본적으로 `getItem` 메서드는 항목에 정의된 모든 속성 값을 반환합니다. 가능한 모든 속성 값의 일부만 가져오려면 프로젝션 표현식을 지정합니다.

항목을 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 가져오는 항목에 대한 키의 이름과 값, 검색할 항목 속성을 식별하는 프로젝션 표현식이 포함됩니다. DynamoDB 객체의 `getItem` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  TableName: "TABLE",
  Key: {
    KEY_NAME: { N: "001" },
  },
  ProjectionExpression: "ATTRIBUTE_NAME",
};

// Call DynamoDB to read the item from the table
ddb.getItem(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.Item);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_getitem.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_getitem.js)에서 찾을 수 있습니다.

## 항목 삭제
<a name="dynamodb-example-table-read-write-deleting-an-item"></a>

파일 이름이 `ddb_deleteitem.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 항목을 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예에서는 테이블의 이름과 삭제하려는 항목의 키 이름 및 값을 포함합니다. DynamoDB 객체의 `deleteItem` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  TableName: "TABLE",
  Key: {
    KEY_NAME: { N: "VALUE" },
  },
};

// Call DynamoDB to delete the item from the table
ddb.deleteItem(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_deleteitem.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_deleteitem.js)에서 찾을 수 있습니다.

# DynamoDB에서 배치로 항목 읽기 및 쓰기
<a name="dynamodb-example-table-read-write-batch"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**이 Node.js 코드 예제는 다음을 보여 줍니다.**
+ DynamoDB 테이블에서 항목의 배치를 읽고 쓰는 방법

## 시나리오
<a name="dynamodb-example-table-read-write-batch-scenario"></a>

이 예제에서는 일련의 Node.js 모듈을 사용하여 항목의 배치를 DynamoDB table 테이블에 넣고 항목의 배치를 읽습니다. 이 코드는 SDK for JavaScript에서 DynamoDB 클라이언트 클래스의 다음 메서드를 사용하여 배치 읽기 및 쓰기 작업을 수행합니다.
+ [batchGetItem](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#batchGetItem-property)
+ [batchWriteItem](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#batchWriteItem-property)

## 사전 필수 작업
<a name="dynamodb-example-table-read-write-batch-prerequisites"></a>

이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.
+ Node.js를 설치합니다. 자세한 내용은 [Node.js](https://nodejs.org) 웹 사이트를 참조하세요.
+ 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 [공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-shared.md) 섹션을 참조하세요.
+ 액세스할 수 있는 항목이 포함된 DynamoDB 테이블을 생성합니다. DynamoDB 테이블 생성에 관한 자세한 내용은 [DynamoDB에서 테이블 생성 및 사용](dynamodb-examples-using-tables.md) 섹션을 참조하세요.

## 배치로 항목 읽기
<a name="dynamodb-example-table-read-write-batch-reading"></a>

파일 이름이 `ddb_batchgetitem.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 항목의 배치를 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 읽을 하나 이상 테이블의 이름, 각 테이블에서 읽을 키의 값, 반환할 속성을 지정하는 프로젝션 표현식이 포함됩니다. DynamoDB 객체의 `batchGetItem` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  RequestItems: {
    TABLE_NAME: {
      Keys: [
        { KEY_NAME: { N: "KEY_VALUE_1" } },
        { KEY_NAME: { N: "KEY_VALUE_2" } },
        { KEY_NAME: { N: "KEY_VALUE_3" } },
      ],
      ProjectionExpression: "KEY_NAME, ATTRIBUTE",
    },
  },
};

ddb.batchGetItem(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    data.Responses.TABLE_NAME.forEach(function (element, index, array) {
      console.log(element);
    });
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_batchgetitem.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_batchgetitem.js)에서 찾을 수 있습니다.

## 배치로 항목 쓰기
<a name="dynamodb-example-table-read-write-batch-writing"></a>

파일 이름이 `ddb_batchwriteitem.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 항목의 배치를 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 항목을 쓰려는 테이블, 각 항목에 대해 쓰려는 키, 속성 및 해당 값이 이러한 객체입니다. DynamoDB 객체의 `batchWriteItem` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  RequestItems: {
    TABLE_NAME: [
      {
        PutRequest: {
          Item: {
            KEY: { N: "KEY_VALUE" },
            ATTRIBUTE_1: { S: "ATTRIBUTE_1_VALUE" },
            ATTRIBUTE_2: { N: "ATTRIBUTE_2_VALUE" },
          },
        },
      },
      {
        PutRequest: {
          Item: {
            KEY: { N: "KEY_VALUE" },
            ATTRIBUTE_1: { S: "ATTRIBUTE_1_VALUE" },
            ATTRIBUTE_2: { N: "ATTRIBUTE_2_VALUE" },
          },
        },
      },
    ],
  },
};

ddb.batchWriteItem(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_batchwriteitem.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_batchwriteitem.js)에서 찾을 수 있습니다.

# DynamoDB 테이블 쿼리 및 스캔
<a name="dynamodb-example-query-scan"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**이 Node.js 코드 예제는 다음을 보여 줍니다.**
+ DynamoDB 테이블에서 항목을 쿼리하고 스캔하는 방법

## 시나리오
<a name="dynamodb-example-table-query-scan-scenario"></a>

쿼리는 기본 키 속성 값만 사용하여 테이블 또는 보조 인덱스에서 항목을 찾습니다. 검색할 파티션 키 이름과 값을 제공해야 합니다. 정렬 키 이름과 값도 제공할 수 있으며, 비교 연산자를 사용하여 검색 결과를 좁힐 수 있습니다. 스캔은 지정된 테이블에서 모든 항목을 확인하여 항목을 찾습니다.

이 예에서는 일련의 Node.js 모듈을 사용하여 DynamoDB 테이블에서 검색하려는 항목을 하나 이상 식별합니다. 이 코드는 SDK for JavaScript에서 DynamoDB 클라이언트 클래스의 다음 메서드를 사용하여 테이블을 쿼리하고 스캔합니다.
+ [query](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#query-property)
+ [스캔](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#scan-property)

## 사전 필수 작업
<a name="dynamodb-example-table-query-scan-prerequisites"></a>

이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.
+ Node.js를 설치합니다. 자세한 내용은 [Node.js](https://nodejs.org) 웹 사이트를 참조하세요.
+ 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 [공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-shared.md) 섹션을 참조하세요.
+ 액세스할 수 있는 항목이 포함된 DynamoDB 테이블을 생성합니다. DynamoDB 테이블 생성에 관한 자세한 내용은 [DynamoDB에서 테이블 생성 및 사용](dynamodb-examples-using-tables.md) 섹션을 참조하세요.

## 테이블 쿼리
<a name="dynamodb-example-table-query-scan-querying"></a>

이 예제에서는 비디오 시리즈에 대한 에피소드 정보가 포함된 테이블을 쿼리하여 지정된 어구가 자막에 포함되어 있는 에피소드 9 이후 두 번째 시즌 에피소드의 에피소드 제목과 자막을 반환합니다.

파일 이름이 `ddb_query.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 테이블을 쿼리하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블 이름, 쿼리에 필요한 `ExpressionAttributeValues`, 해당 값을 사용하여 쿼리에서 반환되는 항목을 정의하는 `KeyConditionExpression`, 각 항목에 대해 반환할 속성 값의 이름이 포함됩니다. DynamoDB 객체의 `query` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

var params = {
  ExpressionAttributeValues: {
    ":s": { N: "2" },
    ":e": { N: "09" },
    ":topic": { S: "PHRASE" },
  },
  KeyConditionExpression: "Season = :s and Episode > :e",
  ProjectionExpression: "Episode, Title, Subtitle",
  FilterExpression: "contains (Subtitle, :topic)",
  TableName: "EPISODES_TABLE",
};

ddb.query(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    //console.log("Success", data.Items);
    data.Items.forEach(function (element, index, array) {
      console.log(element.Title.S + " (" + element.Subtitle.S + ")");
    });
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_query.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_query.js)에서 찾을 수 있습니다.

## 테이블 스캔
<a name="dynamodb-example-table-query-scan-scanning"></a>

파일 이름이 `ddb_scan.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB` 서비스 객체를 생성합니다. 테이블에서 항목을 스캔하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 일치하는 각 항목에 대해 반환할 속성 값의 목록, 결과 집합을 필터링하여 지정된 어구가 포함된 항목을 찾는 표현식이 포함됩니다. DynamoDB 객체의 `scan` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js.
var AWS = require("aws-sdk");
// Set the AWS Region.
AWS.config.update({ region: "REGION" });

// Create DynamoDB service object.
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

const params = {
  // Specify which items in the results are returned.
  FilterExpression: "Subtitle = :topic AND Season = :s AND Episode = :e",
  // Define the expression attribute value, which are substitutes for the values you want to compare.
  ExpressionAttributeValues: {
    ":topic": { S: "SubTitle2" },
    ":s": { N: 1 },
    ":e": { N: 2 },
  },
  // Set the projection expression, which are the attributes that you want.
  ProjectionExpression: "Season, Episode, Title, Subtitle",
  TableName: "EPISODES_TABLE",
};

ddb.scan(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
    data.Items.forEach(function (element, index, array) {
      console.log(
        "printing",
        element.Title.S + " (" + element.Subtitle.S + ")"
      );
    });
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddb_scan.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddb_scan.js)에서 찾을 수 있습니다.

# DynamoDB 문서 클라이언트 사용
<a name="dynamodb-example-document-client"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**이 Node.js 코드 예제는 다음을 보여 줍니다.**
+ 문서 클라이언트를 사용하여 DynamoDB 테이블에 액세스하는 방법

## 시나리오
<a name="dynamodb-example-document-client-scenario"></a>

DynamoDB 문서 클라이언트는 속성 값의 개념을 추상화하여 항목 작업을 간소화합니다. 이 추상화는 입력 파라미터로 제공되는 기본 JavaScript 유형에 주석을 달고, 주석이 달린 응답 데이터를 기본 JavaScript 유형으로 변환합니다.

DynamoDB 문서 클라이언트 클래스에 대한 자세한 내용은 API 참조의 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html) 섹션을 참조하세요. Amazon DynamoDB를 사용한 프로그래밍에 관한 자세한 내용은 *Amazon DynamoDB 개발자 안내서*의 [DynamoDB를 사용한 프로그래밍](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.html)을 참조하세요.

이 예제에서는 일련의 Node.js 모듈에서 문서 클라이언트를 사용하여 DynamoDB 테이블에 대한 기본 작업을 수행합니다. 이 코드는 SDK for JavaScript에서 DynamoDB 문서 클라이언트 클래스의 다음 메서드를 사용하여 테이블을 쿼리하고 스캔합니다.
+ [get](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#get-property)
+ [put](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#put-property)
+ [update](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#update-property)
+ [query](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#query-property)
+ [delete](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#delete-property)

## 사전 필수 작업
<a name="dynamodb-example-document-client-prerequisites"></a>

이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.
+ Node.js를 설치합니다. 자세한 내용은 [Node.js](https://nodejs.org) 웹 사이트를 참조하세요.
+ 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 [공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드](loading-node-credentials-shared.md) 섹션을 참조하세요.
+ 액세스할 수 있는 항목이 포함된 DynamoDB 테이블을 생성합니다. SDK for JavaScript를 사용하여 DynamoDB 테이블을 생성하는 방법에 관한 자세한 내용은 [DynamoDB에서 테이블 생성 및 사용](dynamodb-examples-using-tables.md) 단원을 참조하세요. [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb/)을 사용하여 테이블을 생성할 수도 있습니다.

## 테이블에서 항목 가져오기
<a name="dynamodb-example-document-client-get"></a>

파일 이름이 `ddbdoc_get.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB.DocumentClient` 객체를 생성합니다. 테이블에서 항목을 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 해당 테이블에 있는 해시 키의 이름, 가져올 항목에 대한 해시 키의 값이 포함됩니다. DynamoDB 문서 클라이언트의 `get` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  TableName: "EPISODES_TABLE",
  Key: { KEY_NAME: VALUE },
};

docClient.get(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.Item);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddbdoc_get.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_get.js)에서 찾을 수 있습니다.

## 테이블에 항목 넣기
<a name="dynamodb-example-document-client-put"></a>

파일 이름이 `ddbdoc_put.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB.DocumentClient` 객체를 생성합니다. 항목을 테이블에 쓰는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 해시 키 및 값을 포함하여 추가하거나 업데이트할 항목에 대한 설명, 항목에서 설정할 속성의 이름과 값이 포함됩니다. DynamoDB 문서 클라이언트의 `put` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  TableName: "TABLE",
  Item: {
    HASHKEY: VALUE,
    ATTRIBUTE_1: "STRING_VALUE",
    ATTRIBUTE_2: VALUE_2,
  },
};

docClient.put(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddbdoc_put.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_put.js)에서 찾을 수 있습니다.

## 테이블에서 항목 업데이트
<a name="dynamodb-example-document-client-update"></a>

파일 이름이 `ddbdoc_update.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB.DocumentClient` 객체를 생성합니다. 항목을 테이블에 쓰는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 업데이트할 항목의 키, `ExpressionAttributeValues` 파라미터에서 값을 할당하는 토큰을 사용하여 업데이트할 항목의 속성을 정의하는 `UpdateExpressions` 집합이 포함됩니다. DynamoDB 문서 클라이언트의 `update` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

// Create variables to hold numeric key values
var season = SEASON_NUMBER;
var episode = EPISODES_NUMBER;

var params = {
  TableName: "EPISODES_TABLE",
  Key: {
    Season: season,
    Episode: episode,
  },
  UpdateExpression: "set Title = :t, Subtitle = :s",
  ExpressionAttributeValues: {
    ":t": "NEW_TITLE",
    ":s": "NEW_SUBTITLE",
  },
};

docClient.update(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddbdoc_update.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_update.js)에서 찾을 수 있습니다.

## 테이블 쿼리
<a name="dynamodb-example-document-client-query"></a>

이 예제에서는 비디오 시리즈에 대한 에피소드 정보가 포함된 테이블을 쿼리하여 지정된 어구가 자막에 포함되어 있는 에피소드 9 이후 두 번째 시즌 에피소드의 에피소드 제목과 자막을 반환합니다.

파일 이름이 `ddbdoc_query.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB.DocumentClient` 객체를 생성합니다. 테이블을 쿼리하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블 이름, 쿼리에 필요한 `ExpressionAttributeValues`, 해당 값을 사용하여 쿼리에서 반환되는 항목을 정의하는 `KeyConditionExpression`이 포함됩니다. DynamoDB 문서 클라이언트의 `query` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  ExpressionAttributeValues: {
    ":s": 2,
    ":e": 9,
    ":topic": "PHRASE",
  },
  KeyConditionExpression: "Season = :s and Episode > :e",
  FilterExpression: "contains (Subtitle, :topic)",
  TableName: "EPISODES_TABLE",
};

docClient.query(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.Items);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddbdoc_query.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_query.js)에서 찾을 수 있습니다.

## 테이블에서 항목 삭제
<a name="dynamodb-example-document-client-delete"></a>

파일 이름이 `ddbdoc_delete.js`인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면 `AWS.DynamoDB.DocumentClient` 객체를 생성합니다. 테이블에서 항목을 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 삭제할 항목에 대한 해시 키의 이름과 값이 포함됩니다. DynamoDB 문서 클라이언트의 `delete` 메서드를 직접 호출합니다.

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  Key: {
    HASH_KEY: VALUE,
  },
  TableName: "TABLE",
};

docClient.delete(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

예제를 실행하려면 명령줄에서 다음을 입력합니다.

```
node ddbdoc_delete.js
```

이 샘플 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_delete.js)에서 찾을 수 있습니다.