

# 컴퓨터에 로컬로 DynamoDB 배포
<a name="DynamoDBLocal.DownloadingAndRunning"></a>

**참고**  
DynamoDB 로컬은 v3.x(현재), v2.x(레거시) 및 v1.x(사용되지 않음)의 세 가지 버전으로 제공됩니다.
DynamoDB v3.x는 로컬 테스트 및 개발 사용에 권장됩니다.
DynamoDB 로컬 V2.x에서 V3.x로 마이그레이션하려면 `com.amazonaws.services.dynamodbv2`에서 `software.amazon.dynamodb`로 가져오기 문을 업데이트하고 Maven 사용자에 대한 Maven 종속성을 업데이트해야 합니다.
SDK for Java v1.x를 사용하는 애플리케이션을 SDK for Java 2.x로 마이그레이션하는 경우 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html)의 단계를 따릅니다.

## DynamoDB 로컬 다운로드
<a name="DynamoDBLocal.DownloadingAndRunning.V2"></a>

다음 단계에 따라 컴퓨터에서 DynamoDB를 설정하고 실행합니다.

**컴퓨터에서 DynamoDB를 설정하려면**

1. 다음 중 한 곳에서 무료로 DynamoDB 로컬을 다운로드합니다.  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)
**중요**  
 컴퓨터에서 DynamoDB v2.6.0 이상을 실행하려면 Java 런타임 환경(JRE) 버전 17.x 이상이 필요합니다. 애플리케이션은 이전 JRE 버전에서 실행되지 않습니다.

1.  아카이브를 다운로드한 뒤 콘텐츠의 압축을 풀고 압축 해제된 디렉터리를 원하는 위치로 복사합니다.

1.  컴퓨터에서 DynamoDB를 시작하려면 명령 프롬프트 창을 열고 `DynamoDBLocal.jar`의 압축을 해제한 디렉터리로 이동한 후 다음 명령을 입력합니다.

   ```
   java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
   ```
**참고**  
 Windows PowerShell을 사용하는 경우 파라미터 이름이나 전체 이름 및 다음과 비슷한 값을 묶어야 합니다.  
 ` java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar `   
 중지하기 전까지 DynamoDB는 수신 요청을 처리합니다. DynamoDB를 중지하려면 명령 프롬프트에서 Ctrl\+C를 누릅니다.  
 DynamoDB는 기본적으로 8000번 포트를 사용합니다. 8000번 포트를 사용할 수 없는 경우에는 이 명령에서 예외가 발생합니다. `-port`를 포함한 DynamoDB 런타임 옵션의 전체 목록을 보려면 이 명령을 입력합니다.  
 ` java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help ` 

1. 프로그래밍 방식이나 AWS Command Line Interface(AWS CLI)를 통해 DynamoDB에 액세스하기 전에 애플리케이션에 권한 부여를 활성화하기 위한 자격 증명을 구성해야 합니다. 다음 예제와 같이 다운로드 가능한 DynamoDB가 작동하려면 자격 증명이 필요합니다.

   ```
   AWS Access Key ID: "fakeMyKeyId" 
   AWS Secret Access Key: "fakeSecretAccessKey"
   Default Region Name: "fakeRegion"
   ```

    `aws configure`의 AWS CLI 명령을 사용하여 자격 증명을 설정할 수 있습니다. 자세한 내용은 [AWS CLI 사용](AccessingDynamoDB.md#Tools.CLI) 섹션을 참조하세요.

1.  애플리케이션 작성을 시작합니다. AWS CLI를 통해 로컬에서 실행되는 DynamoDB에 액세스하려면 `--endpoint-url ` 파라미터를 사용합니다. 예를 들어, 다음 명령을 사용하여 DynamoDB 테이블을 나열합니다.

   ```
   aws dynamodb list-tables --endpoint-url http://localhost:8000
   ```

## DynamoDB 로컬을 Docker 이미지로 실행
<a name="DynamoDBLocal.DownloadingAndRunning.Docker"></a>

 Amazon DynamoDB의 다운로드 가능 버전은 도커 이미지로 제공됩니다. 자세한 내용은 [dynamodb-local](https://hub.docker.com/r/amazon/dynamodb-local) 섹션을 참조하세요. 현재 DynamoDB 로컬 버전을 확인하려면 다음 명령을 입력합니다.

```
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -version
```

 DynamoDB Local을 AWS Serverless Application Model(AWS SAM)에 빌드된 REST 애플리케이션의 일부로 사용하는 예제는 [주문 관리를 위한 SAM DynamoDB 애플리케이션](https://github.com/aws-samples/aws-sam-java-rest)을 참조하세요. 이 샘플 애플리케이션은 테스트를 위해 DynamoDB Local을 사용하는 방법을 보여 줍니다.

 DynamoDB Local 컨테이너도 사용하는 다중 컨테이너 애플리케이션을 실행하려면 Docker Compose를 사용하여 DynamoDB Local을 비롯한 애플리케이션의 모든 서비스를 정의하고 실행합니다.

**Docker compose를 사용하여 DynamoDB local을 설치하고 실행하는 방법**

1.  [Docker desktop](https://www.docker.com/products/docker-desktop)을 다운로드하여 설치합니다.

1.  다음 코드를 파일에 복사하고 `docker-compose.yml`로 저장합니다.

   ```
   services:
    dynamodb-local:
      command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
      image: "amazon/dynamodb-local:latest"
      container_name: dynamodb-local
      ports:
        - "8000:8000"
      volumes:
        - "./docker/dynamodb:/home/dynamodblocal/data"
      working_dir: /home/dynamodblocal
   ```

    애플리케이션과 DynamoDB Local을 별도의 컨테이너에 보관하려면 다음 yaml 파일을 사용합니다.

   ```
   version: '3.8'
   services:
    dynamodb-local:
      command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
      image: "amazon/dynamodb-local:latest"
      container_name: dynamodb-local
      ports:
        - "8000:8000"
      volumes:
        - "./docker/dynamodb:/home/dynamodblocal/data"
      working_dir: /home/dynamodblocal
    app-node:
      depends_on:
        - dynamodb-local
      image: amazon/aws-cli
      container_name: app-node
      ports:
       - "8080:8080"
      environment:
        AWS_ACCESS_KEY_ID: 'DUMMYIDEXAMPLE'
        AWS_SECRET_ACCESS_KEY: 'DUMMYEXAMPLEKEY'
      command:
        dynamodb describe-limits --endpoint-url http://dynamodb-local:8000 --region us-west-2
   ```

    이 docker-compose.yml 스크립트는 `app-node` 컨테이너와 `dynamodb-local` 컨테이너를 만듭니다. 이 스크립트는 `app-node` 컨테이너에서 AWS CLI를 사용하여 `dynamodb-local` 컨테이너에 연결하고 계정 및 테이블 제한을 설명하는 명령을 실행합니다.

    고유한 애플리케이션 이미지와 함께 사용하려면 아래 예제의 `image` 값을 해당 애플리케이션의 값으로 바꿉니다.

   ```
   version: '3.8'
   services:
    dynamodb-local:
      command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
      image: "amazon/dynamodb-local:latest"
      container_name: dynamodb-local
      ports:
        - "8000:8000"
      volumes:
        - "./docker/dynamodb:/home/dynamodblocal/data"
      working_dir: /home/dynamodblocal
    app-node:
      image: {{location-of-your-dynamodb-demo-app:latest}}
      container_name: app-node
      ports:
        - "8080:8080"
      depends_on:
        - "dynamodb-local"
      links:
        - "dynamodb-local"
      environment:
        AWS_ACCESS_KEY_ID: 'DUMMYIDEXAMPLE'
        AWS_SECRET_ACCESS_KEY: 'DUMMYEXAMPLEKEY'
        REGION: 'eu-west-1'
   ```
**참고**  
 YAML 스크립트를 사용하려면 AWS 액세스 키와 AWS 보안 키를 지정해야 하지만 유효한 AWS 키가 없어도 DynamoDB Local에 액세스할 수 있습니다.

1.  다음 명령줄 명령을 실행합니다.

   ```
   docker-compose up
   ```

## DynamoDB 로컬을 Apache Maven 종속성으로 실행
<a name="DynamoDBLocal.DownloadingAndRunning.Maven.v2"></a>

**참고**  
SDK for Java v1.x를 사용하는 애플리케이션을 SDK for Java 2.x로 마이그레이션하는 경우 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html)의 단계를 따릅니다.

 다음 단계에 따라 애플리케이션의 Amazon DynamoDB를 종속 항목으로 사용합니다.

**DynamoDB를 Apache Maven 리포지토리로 배포하려면**

1.  Apache Maven을 다운로드하고 설치합니다. 자세한 내용은 [Downloading Apache Maven](https://maven.apache.org/download.cgi) 및 [Installing Apache Maven](https://maven.apache.org/install.html)을 참조하세요.

1.  애플리케이션의 POM(Project Object Model) 파일에 DynamoDB Maven 리포지토리를 추가합니다.

   ```
   <!--Dependency:-->
   <dependencies>
      <dependency>
         <groupId>software.amazon.dynamodb</groupId>
         <artifactId>DynamoDBLocal</artifactId>
         <version>3.3.0</version>
      </dependency>
   </dependencies>
   ```

    Spring Boot 3 및/또는 Spring Framework 6와 함께 사용할 수 있는 예제 템플릿: 

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <project xmlns="http://maven.apache.org/POM/4.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   
   <groupId>org.example</groupId>
   <artifactId>SpringMavenDynamoDB</artifactId>
   <version>1.0-SNAPSHOT</version>
   
   <properties>
      <spring-boot.version>3.0.1</spring-boot.version>
      <maven.compiler.source>17</maven.compiler.source>
      <maven.compiler.target>17</maven.compiler.target>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   
      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>3.1.0</version>
      </parent>
   
   <dependencies>
      <dependency>
          <groupId>software.amazon.dynamodb</groupId>
          <artifactId>DynamoDBLocal</artifactId>
          <version>3.3.0</version>
      </dependency>
      <!-- Spring Boot -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter</artifactId>
          <version>${spring-boot.version}</version>
      </dependency>
      <!-- Spring Web -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          <version>${spring-boot.version}</version>
      </dependency>
      <!-- Spring Data JPA -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
          <version>${spring-boot.version}</version>
      </dependency>
      <!-- Other Spring dependencies -->
      <!-- Replace the version numbers with the desired version -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>6.0.0</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>6.0.0</version>
      </dependency>
      <!-- Add other Spring dependencies as needed -->
      <!-- Add any other dependencies your project requires -->
   </dependencies>
   </project>
   ```
**참고**  
 [Maven 중앙 리포지토리](https://mvnrepository.com/artifact/com.amazonaws/DynamoDBLocal?repo=dynamodb-local-release) URL을 사용할 수도 있습니다.

## AWS CloudShell에서 DynamoDB 로컬 실행
<a name="DynamoDBLocal.DynamoDB.Local.CloudShell"></a>

AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, 에서 바로 시작할 수 있습니다.AWS Management Console AWS CloudShell에서 AWS Management Console로 이동하는 몇 가지 방법이 있습니다. 자세한 내용은 [AWS CloudShell 시작하기](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html)를 참조하세요.

AWS Management Console의 어느 곳에서나 AWS CloudShell에서 DynamoDB 로컬을 실행하려면 다음 단계를 따릅니다.

**AWS Management Console의 AWS CloudShell에서 DynamoDB 로컬을 실행하려면**

1. 콘솔 인터페이스에서 AWS CloudShell을 시작하고, 사용 가능한 AWS 리전을 선택한 다음, Bash, PowerShell 또는 Z 쉘과 같은 선호하는 쉘로 전환합니다.

1. AWS 리전을 선택하려면 **리전 선택** 메뉴로 이동하여 [지원되는 AWS 리전](https://docs.aws.amazon.com/cloudshell/latest/userguide/supported-aws-regions.html)을 선택합니다. (사용 가능한 지역은 강조 표시됩니다.)

1. AWS Management Console에서는 다음 옵션 중 하나를 선택하여 AWS CloudShell을 시작할 수 있습니다.

   1. 탐색 모음에서 **AWS CloudShell** 아이콘을 선택합니다.

   1. **검색** 상자에 CloudShell이라는 단어를 입력한 다음, **CloudShell**을 선택합니다.

   1. **최근 방문한** 위젯에서 **CloudShell**을 선택합니다.

   1. 콘솔 도구 모음에서 **CloudShell**을 선택합니다.

1. AWS CloudShell에서 DynamoDB 로컬을 실행하려면 `dynamodb-local` 별칭을 사용합니다. DynamoDB 로컬 설정을 변경하기 위한 추가 명령줄 옵션을 지정할 수 있습니다. 사용할 수 있는 옵션은 [DynamoDB local 사용 참고 사항](DynamoDBLocal.UsageNotes.md) 섹션을 참조하세요.
**참고**  
백그라운드에서 DynamoDB 로컬을 실행하려면 AWS CloudShell에서 `dynamodb-local &`을 사용하여 DynamoDB 로컬을 실행합니다.

1. AWS CLI를 통해 AWS CloudShell에서 로컬로 실행되는 DynamoDB에 액세스하려면 `--endpoint-url` 파라미터를 사용합니다. 예를 들어, 다음 명령을 사용하여 DynamoDB 테이블을 나열합니다.

   `aws dynamodb list-tables --endpoint-url http://localhost:8000`

JAR 파일 다운로드, Docker 이미지로 실행, Maven 종속성으로 사용 등 DynamoDB 로컬을 설정하고 사용하기 위한 다양한 접근 방식을 보여주는 샘플 프로젝트의 예는 [DynamoDB Local Sample Java Project](https://github.com/awslabs/amazon-dynamodb-local-samples/tree/main)를 참조하세요.