

# Java 코드 예
<a name="CodeSamples.Java"></a>

**Topics**
+ [Java: AWS 보안 인증 정보 설정](#CodeSamples.Java.Credentials)
+ [Java: AWS 리전 및 엔드포인트 설정](#CodeSamples.Java.RegionAndEndpoint)

이 개발자 안내서에는 Java 코드 조각과 실행 준비된 프로그램이 포함되어 있습니다. 다음 단원에서 이들 코드 예제를 찾을 수 있습니다.
+ [DynamoDB의 항목 및 속성 작업](WorkingWithItems.md)
+ [DynamoDB의 테이블 및 데이터 작업](WorkingWithTables.md)
+ [DynamoDB에서 테이블 쿼리](Query.md)
+ [DynamoDB에서 테이블 스캔](Scan.md)
+ [DynamoDB에서 보조 인덱스를 사용하여 데이터 액세스 개선](SecondaryIndexes.md)
+ [Java 1.x: DynamoDBMapper](DynamoDBMapper.md)
+ [DynamoDB Streams에 대한 변경 데이터 캡처](Streams.md)

Eclipse와 함께 [AWS Toolkit for Eclipse](https://aws.amazon.com/eclipse/)를 사용하여 빠르게 시작할 수 있습니다. 완벽한 기능의 IDE 외에 자동 업데이트가 포함된 AWS SDK for Java와 사전 구성된 AWS 애플리케이션 개발 템플릿도 포함되어 있습니다.

**Java 코드 예제를 실행하려면(Eclipse 사용)**

1. [Eclipse](http://www.eclipse.org) IDE를 다운로드하고 설치합니다.

1. 를 다운로드하여 설치합니다..[AWS Toolkit for Eclipse](https://aws.amazon.com/eclipse/)

1. Eclipse를 시작하고 **Eclipse** 메뉴에서 **파일**, **새로 만들기**, **기타**를 차례대로 선택합니다.

1. **Select a wizard**에서 **AWS**, **AWS Java Project**, **Next**를 차례대로 선택합니다.

1. **Create an AWS Java**에서 다음을 수행합니다.

   1. **프로젝트 이름**에 프로젝트의 이름을 입력합니다.

   1. **Select Account**의 목록에서 자격 증명 프로필을 선택합니다.

      [AWS Toolkit for Eclipse](https://aws.amazon.com/eclipse/)를 처음 사용하는 경우, **Configure AWS Accounts**(계정 구성)를 선택하여 AWS 보안 인증 정보를 설정합니다.

1. 프로젝트를 생성하려면 **Finish**를 선택합니다.

1. **Eclipse** 메뉴에서 **File**, **New**, **Class**를 차례대로 선택합니다.

1. **Java Class(Java 클래스)**에서 **이름**에 클래스 이름을 입력(실행하려는 코드 예제와 동일한 이름 사용)한 다음 **마침**을 선택하여 클래스를 생성합니다.

1. 설명서 페이지에서 코드 예제를 Eclipse 에디터로 복사합니다.

1. 코드를 실행하려면 Eclipse 메뉴에서 **실행**을 선택합니다.

SDK for Java는 DynamoDB 작업을 위한 스레드 세이프(thread-safe) 클라이언트를 제공합니다. 모범 사례로서 애플리케이션에서 클라이언트 하나를 생성한 후 스레드 간에 재사용해야 합니다.

자세한 내용은 [AWS SDK for Java](https://aws.amazon.com/sdk-for-java) 섹션을 참조하세요.

**참고**  
이 안내서의 코드 예제는 AWS SDK for Java의 최신 버전과 함께 사용해야 합니다.  
AWS Toolkit for Eclipse를 사용하는 경우 SDK for Java에 대해 자동 업데이트를 구성할 수 있습니다. Eclipse에서 이렇게 하려면 **기본 설정**으로 이동하고 **AWS Toolkit**, **AWS SDK for Java**, **Download new SDKs automatically(새 SDK를 자동으로 다운로드)**를 차례로 선택합니다.

## Java: AWS 보안 인증 정보 설정
<a name="CodeSamples.Java.Credentials"></a>

SDK for Java에서는 런타임에 애플리케이션에 AWS 자격 증명을 제공해야 합니다. 이 가이드의 코드 예시에서는 *AWS SDK for Java 개발자 안내서*의 [AWS 보안 인증 정보 설정](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/set-up-creds.html)에 설명된 대로 AWS 보안 인증 정보 파일을 사용한다고 가정합니다.

다음은 `~/.aws/credentials`라는 AWS 자격 증명 파일의 예입니다. 여기서 물결 문자(`~`)는 사용자의 홈 디렉터리입니다.

```
[default]
aws_access_key_id = AWS access key ID goes here
aws_secret_access_key = Secret key goes here
```

## Java: AWS 리전 및 엔드포인트 설정
<a name="CodeSamples.Java.RegionAndEndpoint"></a>

기본적으로 코드 예제는 미국 서부(오레곤) 리전에서 DynamoDB에 액세스합니다. `AmazonDynamoDB` 속성을 수정하여 리전을 변경할 수 있습니다.

다음 코드 예제에서는 새 `AmazonDynamoDB`를 인스턴스화합니다.

```
import software.amazon.dynamodb.AmazonDynamoDBClientBuilder;
import com.amazonaws.regions.Regions;
...
// This client will default to US West (Oregon)
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
.withRegion(Regions.US_WEST_2)
.build();
```

`withRegion` 메서드를 사용하면 사용할 수 있는 어떤 리전의 DynamoDB에 대해서도 코드를 실행할 수 있습니다. 전체 목록은 **Amazon Web Services 일반 참조에서 [AWS 리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#ddb_region)를 참조하세요.

컴퓨터에서 로컬로 DynamoDB를 사용하여 코드 예제를 실행하려면 다음과 같이 엔드포인트를 설정합니다.

### AWS SDK V1
<a name="CodeSamples.Java.RegionAndEndpoint.V1"></a>

```
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration("http://localhost:8000", "us-west-2"))
.build();
```

### AWS SDK V2
<a name="CodeSamples.Java.RegionAndEndpoint.V2"></a>

```
DynamoDbClient client = DynamoDbClient.builder()
    .endpointOverride(URI.create("http://localhost:8000"))
    // The region is meaningless for local DynamoDb but required for client builder validation
    .region(Region.US_EAST_1)
    .credentialsProvider(StaticCredentialsProvider.create(
    AwsBasicCredentials.create("dummy-key", "dummy-secret")))
    .build();
```