

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

# Amazon Keyspaces(Apache Cassandra용) 액세스
<a name="accessing"></a>

콘솔을 사용하거나, `cqlsh` 클라이언트 AWS CloudShell, AWS SDK를 실행하거나, Apache 2.0 라이선스 Cassandra 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스할 수 있습니다. Amazon Keyspaces는 Apache Cassandra 3.11.2와 호환되는 드라이버와 클라이언트를 지원합니다. Amazon Keyspaces에 액세스하기 전에 설정을 완료한 AWS Identity and Access Management 다음 Amazon Keyspaces에 IAM 자격 증명 액세스 권한을 부여해야 합니다.

## 설 AWS Identity and Access Management정
<a name="SettingUp.IAM"></a>

### 에 가입 AWS 계정
<a name="sign-up-for-aws"></a>

이 없는 경우 다음 단계를 AWS 계정완료하여 생성합니다.

**에 가입하려면 AWS 계정**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)을 엽니다.

1. 온라인 지시 사항을 따르세요.

   등록 절차 중 전화 또는 텍스트 메시지를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

   에 가입하면 AWS 계정*AWS 계정 루트 사용자*가 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 [루트 사용자 액세스 권한이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 수행하는 것입니다.

AWS 는 가입 프로세스가 완료된 후 확인 이메일을 보냅니다. 언제든지 [https://aws.amazon.com/](https://aws.amazon.com/)으로 이동하고 **내 계정**을 선택하여 현재 계정 활동을 확인하고 계정을 관리할 수 있습니다.

### 관리자 액세스 권한이 있는 사용자 생성
<a name="create-an-admin"></a>

에 가입한 후 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 AWS 계정보호 AWS IAM Identity Center, AWS 계정 루트 사용자활성화 및 생성합니다.

**보안 AWS 계정 루트 사용자**

1.  **루트 사용자를** 선택하고 AWS 계정 이메일 주소를 입력하여 계정 소유자[AWS Management Console](https://console.aws.amazon.com/)로에 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다.

   루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*의 [루트 사용자로 로그인](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)을 참조하세요.

1. 루트 사용자의 다중 인증(MFA)을 활성화합니다.

   지침은 *IAM 사용 설명서*의 [AWS 계정 루트 사용자(콘솔)에 대한 가상 MFA 디바이스 활성화를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html).

**관리자 액세스 권한이 있는 사용자 생성**

1. IAM Identity Center를 활성화합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [AWS IAM Identity Center설정](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)을 참조하세요.

1. IAM Identity Center에서 사용자에게 관리 액세스 권한을 부여합니다.

   를 자격 증명 소스 IAM Identity Center 디렉터리 로 사용하는 방법에 대한 자습서는 사용 *AWS IAM Identity Center 설명서*[의 기본값으로 사용자 액세스 구성을 IAM Identity Center 디렉터리](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) 참조하세요.

**관리 액세스 권한이 있는 사용자로 로그인**
+ IAM IDentity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.

  IAM Identity Center 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*[의 AWS 액세스 포털에 로그인](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)을 참조하세요.

**추가 사용자에게 액세스 권한 할당**

1. IAM Identity Center에서 최소 권한 적용 모범 사례를 따르는 권한 세트를 생성합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)를 참조하세요.

1. 사용자를 그룹에 할당하고, 그룹에 Single Sign-On 액세스 권한을 할당합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [그룹 추가](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)를 참조하세요.

## Amazon Keyspaces 설정
<a name="SettingUp.KEY"></a>

 Amazon Keyspaces 리소스에 대한 액세스는 [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)을 사용하여 관리됩니다. IAM을 사용하면 Amazon Keyspaces의 특정 리소스에 읽기 및 쓰기 권한을 부여하는 정책을 IAM 사용자, 역할, 페더레이션 ID에 연결할 수 있습니다.

IAM ID에 대한 권한 부여를 시작하려면 Amazon Keyspaces에 대한 AWS 관리형 정책 중 하나를 사용하면 됩니다.
+ [AmazonKeyspacesFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonKeyspacesFullAccess.html) – 이 정책은 모든 기능에 대한 전체 액세스 권한과 함께 Amazon Keyspaces의 모든 리소스에 액세스할 수 있는 권한을 부여합니다.
+ [AmazonKeyspacesReadOnlyAccess\$1v2](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonKeyspacesReadOnlyAccess_v2.html) - 이 정책은 Amazon Keyspaces에 대한 읽기 전용 권한을 부여합니다.

관리형 정책에 정의된 작업에 대한 자세한 설명은 [AWS Amazon Keyspaces에 대한 관리형 정책](security-iam-awsmanpol.md) 섹션을 참조하세요.

IAM ID가 수행할 수 있는 작업의 범위를 제한하거나 ID가 액세스할 수 있는 리소스를 제한하려면 `AmazonKeyspacesFullAccess` 관리형 정책을 템플릿으로 사용하는 사용자 지정 정책을 만들고 필요하지 않은 모든 권한을 제거할 수 있습니다. 특정 키스페이스 또는 테이블에 대한 액세스를 제한할 수도 있습니다. Amazon Keyspaces에서 작업을 제한하거나 특정 리소스에 대한 액세스를 제한하는 방법에 대한 자세한 내용은 [Amazon Keyspaces에서 IAM을 사용하는 방법](security_iam_service-with-iam.md) 섹션을 참조하세요.

를 생성하고 Amazon Keyspaces에 대한 IAM 자격 증명 액세스 권한을 부여하는 정책을 AWS 계정 생성한 후 Amazon Keyspaces에 액세스하려면 다음 섹션 중 하나를 진행합니다.
+ [콘솔 사용](console_keyspaces.md)
+ [사용 AWS CloudShell](using-aws-with-cloudshell.md)

# 콘솔을 사용하여 Amazon Keyspaces 액세스
<a name="console_keyspaces"></a>

[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home)에서 Amazon Keyspaces용 콘솔에 액세스할 수 있습니다. AWS Management Console 액세스에 대한 자세한 내용은 [IAM 사용 설명서의에 대한 IAM 사용자 액세스 제어를 AWS Management Console](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_controlling-access.html) 참조하세요.

콘솔을 사용하여 Amazon Keyspaces에서 다음을 수행할 수 있습니다.
+ 키스페이스 및 테이블 생성, 삭제, 관리
+ 테이블의 **모니터** 탭에서 중요한 테이블 지표를 모니터링합니다.
  + 청구 가능한 테이블 크기(바이트)
  + 용량 지표
+ CQL 편집기를 사용하거나 데이터 삽입, 업데이트 및 삭제와 같은 [통합 AWS CloudShell 환경을](console_cloudshell_integration.md) 통해 쿼리를 실행합니다.
+ 통합 CQLSH 지원을 통해를 통해 Amazon Keyspaces AWS CloudShell 에 직접 연결합니다.
+ 계정의 파티셔너 구성을 변경합니다.
+ 대시보드에서 계정의 성능 및 오류 지표를 봅니다.

# 콘솔 AWS CloudShell 에서를 사용하여 Amazon Keyspaces에 연결
<a name="console_cloudshell_integration"></a>

AWS CloudShell 는 콘솔에서 직접 Amazon Keyspaces에 연결하는 간소화된 방법을 제공합니다. AWS CloudShell 통합은 자동으로를 초기화`cqlsh-expansion`하고 특정 키스페이스에 대한 연결을 설정합니다.

## AWS CloudShell 통합 시작하기
<a name="cloudshell_getting_started"></a>

1. ** AWS CloudShell 통합 액세스** - Amazon Keyspaces 콘솔에서 연결하려는 키스페이스로 이동하여 **키스페이스에 연결** AWS CloudShell 버튼을 선택합니다.

1. **사전 채워진 설정 명령** - AWS CloudShell 버튼을 선택하면 필요한 초기화 및 연결 파라미터가 포함된 사전 채워진 명령이 제공됩니다.

   ```
   cqlsh-expansion.init ; cqlsh-expansion cassandra.region.amazonaws.com 9142 --ssl -my_keyspace
   ```

1. ****실행**을 클릭합니다.**

1. **Amazon Keyspaces가 연결을 설정할 때까지 대기 **- 설정 프로세스가 완료되고 선택한 키스페이스에 대한 연결이 설정될 때까지 기다립니다.

1. **명령 실행** - 연결된 경우 선택한 키스페이스에 대해 직접 CQL 명령을 작성하고 실행할 수 있습니다.

## 사용 가능한 CQLSH 명령
<a name="available_cqlsh_commands"></a>

 AWS CloudShell 통합을 통해 기본 CQL 이외의 명령에 대한 지원을 포함하여 표준 CQLSH 기능에 액세스할 수 있습니다.
+ **설명** - 키스페이스 및 테이블에 대한 자세한 설명을 나열하고 봅니다.
+ **복사** - 나중에 처리할 수 있도록 쿼리 출력을 파일로 내보냅니다.
+ **소스** - 파일에서 CQL 문을 실행합니다.
+ **명령 기록 탐색** - 키보드 바로 가기를 사용하여 이전 명령을 스크롤합니다.
+ **쿼리 실행** - 키보드 인터페이스에서 직접 쿼리를 실행합니다.
+ **출력 복사** - 결과를 다른 애플리케이션에서 사용할 수 있는 간단한 텍스트로 복사합니다.

## 기능 고려 사항
<a name="feature_considerations"></a>

 AWS CloudShell 통합을 사용할 때는 다음과 같은 장단점을 고려하세요.

**다음 기능은 지원되지 않습니다.**
+ CQL 구문 제안 및 자동 완성 기능.
+ 자동 완성 표시, 도구 설명 표시, 찾기, 찾기 및 바꾸기, 다시 실행, 블록 설명 전환, 코드 접기 전환, 줄 설명 전환, 실행 취소와 같은 편집기 도구입니다.

**수정된 기능:**
+ **CSV 다운로드 **- 결과를 CSV 형식으로 다운로드하려면 명령 출력을 파이프할 `>` 연산자를 지정합니다.

  ```
  SELECT * FROM my_table > file_name.csv
  ```
+ **JSON 보기** - 데이터 변환 없이 JSON 형식으로 항목을 볼 수 있습니다.
+ **터미널 스타일 인터페이스 -**이 환경은 전체 기능을 갖춘 코드 편집기가 아닌 터미널 인터페이스로 작동합니다.

 AWS CloudShell 통합은 연결 프로세스를 간소화하는 동시에에서 직접 Amazon Keyspaces 데이터를 관리하기 위한 필수 CQL 기능을 제공합니다 AWS Management Console.

Amazon Keyspaces 키스페이스 및 테이블을 생성하고 샘플 애플리케이션 데이터로 설정하는 방법을 알아보려면 [Amazon Keyspaces(Apache Cassandra용) 시작](getting-started.md) 섹션을 참조하세요.

# AWS CloudShell 를 사용하여 Amazon Keyspaces에 액세스
<a name="using-aws-with-cloudshell"></a>

AWS CloudShell 는 브라우저 기반의 사전 인증된 셸로,에서 직접 시작할 수 있습니다 AWS Management Console. 원하는 쉘(Bash, PowerShell 또는 Z 쉘)을 사용하여 AWS 서비스에 대해 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell 는 콘솔 자격 증명으로 사전 인증되며 AWS CLI, , Python 및 Node.js를 포함한 AWS 서비스 작업을 위한 일반적인 도구를 포함합니다.

[AWS CloudShell 에서를 시작 AWS Management Console](https://docs.aws.amazon.com/cloudshell/latest/userguide/working-with-cloudshell.html#launch-options)하면 콘솔에 로그인하는 데 사용한 AWS 자격 증명이 새 쉘 세션에서 자동으로 사용할 수 있습니다. 이 AWS CloudShell 사용자 사전 인증을 사용하면 `cqlsh` 또는 AWS CLI 버전 2(쉘의 컴퓨팅 환경에 사전 설치됨)를 사용하여 Amazon Keyspaces와 같은 AWS 서비스와 상호 작용할 때 자격 증명 구성을 건너뛸 수 있습니다.

## AWS CloudShell 통합 옵션
<a name="cloudshell-integration-options"></a>

Amazon Keyspaces는 AWS CloudShell두 가지 사용 방법을 제공합니다.

1. **통합 AWS CloudShell 환경** -를 자동으로 초기화`cqlsh-expansion`하고 특정 키스페이스에 연결하는 Amazon Keyspaces 콘솔에서 직접 사용할 수 있는 간소화된 연결 방법입니다. 이 통합 환경 사용에 대한 전체 지침은 섹션을 참조하세요[콘솔 AWS CloudShell 에서를 사용하여 Amazon Keyspaces에 연결](console_cloudshell_integration.md).

1. **수동 AWS CloudShell 설정** - `cqlsh`에서 수동으로 설치 및 구성합니다 AWS CloudShell. 단계는 다음 섹션에 설명되어 있으며 설정 프로세스를 더 잘 제어하고 사용자 지정 구성을 활성화합니다.

## 사전 조건
<a name="cloudshell-prerequisites"></a>

에서 Amazon Keyspaces를 사용하기 전에 다음을 갖추었는지 AWS CloudShell확인합니다.
+ Amazon Keyspaces 및에 액세스할 수 있는 AWS 계정 AWS CloudShell
+ 두 서비스를 모두 사용할 수 있는 적절한 IAM 권한
+ Cassandra 쿼리 언어(CQL)에 대한 기본 지식

## 시작하기 AWS CloudShell
<a name="getting-started-cloudshell"></a>

에 액세스하려면 AWS CloudShell:

1. 에 로그인 AWS Management Console

1. 콘솔 상단의 탐색 모음에서 AWS CloudShell 아이콘을 AWS CloudShell 선택하거나 [https://console.aws.amazon.com/cloudshell/](https://console.aws.amazon.com/cloudshell/) 이동하여를 시작합니다.

1.  AWS CloudShell 환경이 초기화될 때까지 기다립니다.

## 에 대한 IAM 권한 획득 AWS CloudShell
<a name="cloudshell-permissions"></a>

에서 제공하는 액세스 관리 리소스를 사용하여 AWS Identity and Access Management관리자는 IAM 사용자에게 환경의 기능에 액세스 AWS CloudShell 하고 사용할 수 있는 권한을 부여할 수 있습니다.

관리자가 사용자에게 액세스 권한을 부여하는 가장 빠른 방법은 AWS 관리형 정책을 사용하는 것입니다. [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)은 AWS에서 생성 및 관리하는 독립 실행형 정책입니다. CloudShell에 대한 다음 AWS 관리형 정책을 IAM 자격 증명에 연결할 수 있습니다.
+ `AWSCloudShellFullAccess`: 모든 기능에 대한 전체 액세스 권한 AWS CloudShell 과 함께를 사용할 수 있는 권한을 부여합니다.

IAM 사용자가 수행할 수 있는 작업 범위를 제한하려면 `AWSCloudShellFullAccess` 관리형 정책을 템플릿으로 사용하는 사용자 지정 정책을 생성할 AWS CloudShell수 있습니다. CloudShell에서 사용자가 사용할 수 있는 작업을 제한하는 방법에 대한 자세한 내용은 *AWS CloudShell 사용 설명서*의 [IAM 정책을 사용한 AWS CloudShell 액세스 및 사용 관리를](https://docs.aws.amazon.com/cloudshell/latest/userguide/sec-auth-with-identities.html) 참조하세요.

**참고**  
IAM ID에는 Amazon Keyspaces에 호출할 수 있는 권한을 부여하는 정책도 필요합니다.

 AWS 관리형 정책을 사용하여 IAM 자격 증명에 Amazon Keyspaces 액세스 권한을 부여하거나 관리형 정책을 템플릿으로 시작하고 필요하지 않은 권한을 제거할 수 있습니다. 특정 키스페이스 및 테이블에 대한 액세스를 제한하여 사용자 지정 정책을 생성할 수도 있습니다. 다음과 같은 Amazon Keyspaces에 대한 관리형 정책을 IAM ID에 연결할 수 있습니다.
+ [AmazonKeyspacesFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonKeyspacesFullAccess.html) – 이 정책은 모든 기능에 대한 전체 액세스 권한과 함께 Amazon Keyspaces를 사용할 수 있는 권한을 부여합니다.

관리형 정책에 정의된 작업에 대한 자세한 설명은 [AWS Amazon Keyspaces에 대한 관리형 정책](security-iam-awsmanpol.md) 섹션을 참조하세요.

 Amazon Keyspaces에서 작업을 제한하거나 특정 리소스에 대한 액세스를 제한하는 방법에 대한 자세한 내용은 [Amazon Keyspaces에서 IAM을 사용하는 방법](security_iam_service-with-iam.md) 섹션을 참조하세요.

## cqlsh 클라이언트 설치
<a name="installing-cqlsh-client"></a>

AWS CloudShell 는 `cqlsh` 사전 설치된와 함께 제공되지 않습니다. Amazon Keyspaces와 상호 작용하려면 설치해야 합니다. 의 Amazon Keyspaces별 버전을 설치할 수 있습니다`cqlsh`. `cqlsh-expansion` 설치 지침은 [`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](programmatic.cqlsh.md#using_cqlsh) 섹션을 확인하세요.

## TLS 인증서 구성
<a name="configuring-ssl-certificates"></a>

TLS 연결을 사용하여 Amazon Keyspaces에 연결하려면 필요한 Amazon 디지털 인증서를 다운로드해야 합니다. SSL 인증서 다운로드 및 구성에 대한 자세한 지침은 섹션을 참조하세요[TLS에 대한 `cqlsh` 연결을 수동으로 구성하는 방법](programmatic.cqlsh.md#encrypt_using_tls).

## Amazon Keyspaces에 연결
<a name="connecting-to-keyspaces"></a>

IAM 자격 증명(권장) 또는 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 연결할 수 있습니다.

### IAM 자격 증명으로 연결(권장)
<a name="connecting-iam-credentials"></a>

AWS CloudShell 는 이미 IAM 자격 증명으로 인증되었습니다. 이러한 자격 증명을 사용하여 연결하려면 SigV4 인증 플러그인을 사용할 수 있습니다. 에서 IAM 자격 증명을 사용하는 방법에 대한 자세한 지침은 섹션을 `cqlsh`참조하세요[`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](programmatic.cqlsh.md#using_cqlsh).

### 서비스별 보안 인증을 사용하여 연결
<a name="connecting-service-specific-credentials"></a>

Amazon Keyspaces에 대한 서비스별 자격 증명을 생성한 경우 이를 사용하여 연결할 수 있습니다. 서비스별 자격 증명 생성 및 사용에 대한 자세한 내용은 섹션을 참조하세요[Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md).

## Amazon Keyspaces에서 CQLSH 사용
<a name="using-cqlsh-keyspaces"></a>

연결되면 표준 CQL 명령을 사용하여 키스페이스 및 테이블과 상호 작용할 수 있습니다. 지원되는 CQL 명령 및 작업에 대한 자세한 내용은 섹션을 참조하세요[`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](programmatic.cqlsh.md#using_cqlsh).

## 에서 데이터 유지 AWS CloudShell
<a name="persisting-data-cloudshell"></a>

AWS CloudShell 는 홈 디렉터리에 1GB의 영구 스토리지를 제공합니다. 즉, 생성한 스크립트, 인증서 및 구성 파일은 세션 간에 계속 사용할 수 있습니다. 에 대한 구성 파일을 생성`cqlsh`하여 연결을 간소화할 수 있습니다.

구성 파일을 사용하면 추가 파라미터를 지정`cqlsh`하지 않고도를 실행할 수 있습니다. `cqlsh` 구성 파일 생성 및 사용에 대한 자세한 내용은 섹션을 참조하세요[`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](programmatic.cqlsh.md#using_cqlsh).

## 모범 사례
<a name="best-practices-cloudshell"></a>

에서 Amazon Keyspaces를 사용하는 경우 다음 모범 사례를 따르는 AWS CloudShell것이 좋습니다.
+ 반복 작업에 대한 스크립트를 생성하고 영구 홈 디렉터리에 저장합니다.
+ 민감한 정보를 하드 코딩하는 대신 환경 변수를 사용합니다.
+ 비활성 후 AWS CloudShell 세션 시간이 초과될 수 있습니다.
+  AWS CloudShell 서비스 할당량 및 제한 사항에 유의하세요.
+ Amazon Keyspaces에서 자동화된 작업에 AWS CLI 를 사용하는 것이 좋습니다.

## 문제 해결
<a name="troubleshooting-cloudshell"></a>

다음에서 Amazon Keyspaces에 연결할 때 문제가 발생하는 경우 AWS CloudShell:
+ IAM 권한에 필요한 Amazon Keyspaces 작업이 포함되어 있는지 확인합니다.
+ 리전에 올바른 엔드포인트를 사용하고 있는지 확인합니다.
+ SSL 인증서가 올바르게 다운로드되고 참조되었는지 확인합니다.
+ 서비스별 자격 증명이 올바르고 만료되지 않았는지 확인합니다.
+ cqlshrc 파일을 사용하는 경우 형식 및 권한을 확인합니다.

## 예:를 사용하여 Amazon Keyspaces와 상호 작용하는 방법 AWS CloudShell
<a name="cshell-examples"></a>

 AWS CloudShell 에서를 시작한 후 `cqlsh` 또는 명령줄 인터페이스를 사용하여 Amazon Keyspaces와 즉시 상호 작용할 AWS Management Console수 있습니다. 아직 `cqlsh-expansion`을 설치하지 않은 경우 자세한 단계는 [`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](programmatic.cqlsh.md#using_cqlsh) 섹션을 참조하세요.

**참고**  
`cqlsh-expansion`에서를 사용하는 경우 AWS CloudShell셸 내에서 이미 인증되었으므로 호출하기 전에 자격 증명을 구성할 필요가 없습니다.

**Amazon Keyspaces에 연결하고 새 키스페이스를 생성합니다. 그런 다음 시스템 테이블에서 읽고를 사용하여 키스페이스가 생성되었는지 확인합니다. AWS CloudShell**

1. 에서 탐색 모음에서 사용할 AWS Management Console수 있는 다음 옵션을 선택하여 CloudShell을 시작할 수 있습니다.
   +  CloudShell 아이콘을 선택합니다.
   + `cloudshell` 검색 상자에 입력을 시작한 다음 CloudShell 옵션을 선택합니다.

1. 다음 명령을 사용하여 Amazon Keyspaces에 대한 연결을 설정할 수 있습니다. 를 해당 리전의 올바른 엔드포인트`cassandra.us-east-1.amazonaws.com`로 바꿔야 합니다.

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

   접속에 성공하면 다음 예제와 비슷하게 출력됩니다.

   ```
   Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
   [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
   Use HELP for help.
   cqlsh current consistency level is ONE.
   cqlsh>
   ```

1. 이름 `mykeyspace`로 새 키스페이스를 생성합니다. 다음과 같은 명령을 사용하여 수행할 수 있습니다.

   ```
   CREATE KEYSPACE mykeyspace WITH REPLICATION = {'class': 'SingleRegionStrategy'};
   ```

1. 키스페이스가 생성되었는지 확인하려면 다음 명령을 사용하여 시스템 테이블에서 읽을 수 있습니다.

   ```
   SELECT * FROM system_schema_mcs.keyspaces WHERE keyspace_name = 'mykeyspace';
   ```

   직접 호출이 성공하면 명령줄에 다음 출력과 비슷한 서비스의 응답이 표시됩니다.

   ```
    keyspace_name  | durable_writes | replication
   ----------------+----------------+-------------------------------------------------------------------------------------
    mykeyspace     |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
   
   (1 rows)
   ```

# Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 자격 증명 만들기
<a name="programmatic.credentials"></a>

Amazon Keyspaces 리소스에 프로그래밍 방식으로 액세스할 수 있는 자격 증명을 사용자와 애플리케이션에 제공하려면 다음 중 하나를 수행할 수 있습니다.
+ Cassandra가 인증 및 액세스 관리에 사용하는 기존 사용자 이름 및 암호와 유사한 서비스별 자격 증명을 생성합니다. AWS 서비스별 자격 증명은 특정 AWS Identity and Access Management (IAM) 사용자와 연결되며 생성된 서비스에만 사용할 수 있습니다. 자세한 내용은 IAM 사용 설명서의 [Amazon Keyspaces(Apache Cassandra용)에서 IAM 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_keyspaces.html)을 참조하세요.
**주의**  
IAM 사용자는 장기 자격 증명을 가지므로 보안 위험이 있습니다. 이 위험을 줄이려면 이러한 사용자에게 작업을 수행하는 데 필요한 권한만 제공하고 더 이상 필요하지 않을 경우 이러한 사용자를 제거하는 것이 좋습니다.
+ 보안을 강화하려면 모든 AWS 서비스에서 사용되는 IAM 자격 증명을 생성하고 임시 자격 증명을 사용하는 것이 좋습니다. Cassandra 클라이언트 드라이버용 Amazon Keyspaces SigV4 인증 플러그인을 사용하면 사용자 이름 및 암호 대신 IAM 액세스 키를 사용하여 Amazon Keyspaces에 대한 호출을 인증할 수 있습니다. Amazon Keyspaces SigV4 플러그인을 사용하여 [IAM 사용자, 역할, 페더레이션 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)가 Amazon Keyspaces API 요청에서 인증할 수 있도록 지원하는 방법에 대해 자세히 알아보려면 [AWS Signature Version 4 프로세스(SiGV4)](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)를 참조하세요.

  다음 위치에서 SigV4 플러그인을 다운로드할 수 있습니다.
  + Java: [https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin).
  + Node.js: [https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin).
  + Python: [https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin).
  + Go: [https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin).

  SigV4 인증 플러그인을 사용하여 연결을 설정하는 방법을 보여주는 코드 샘플은 [Cassandra 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](programmatic.drivers.md) 섹션을 참조하십시오.

**Topics**
+ [서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)
+ [AWS 인증을 위한 IAM 자격 증명 생성](access.credentials.md)

# Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기
<a name="programmatic.credentials.ssc"></a>

서비스별 자격 증명은 Cassandra가 인증 및 액세스 관리에 사용하는 것과 같은 전통적인 사용자 이름 및 암호와 유사합니다. IAM 사용자는 서비스별 자격 증명을 사용하여 특정 AWS 서비스에 액세스할 수 있습니다. 이러한 장기 자격 증명은 다른 AWS 서비스에 액세스하는 데 사용할 수 없습니다. 자격 증명은 특정 IAM 사용자와 연결되어 있어 다른 IAM 사용자가 사용할 수 없습니다.

**중요**  
서비스별 자격 증명은 특정 IAM 사용자와 연결되는 장기 자격 증명이며, 해당 자격 증명을 생성한 서비스에만 사용할 수 있습니다. IAM 역할 또는 페더레이션 자격 증명에 임시 자격 증명을 사용하여 모든 AWS 리소스에 액세스할 수 있는 권한을 부여하려면 [AWS Amazon Keyspaces용 SigV4 인증 플러그인으로 인증을](access.credentials.md) 사용해야 합니다.

다음 절차 중 하나를 사용하여 서비스별 자격 증명을 생성하세요.

------
#### [ Console ]

**콘솔을 사용하여 서비스별 자격 증명 생성**

1. 에 로그인 AWS Management Console 하고에서 AWS Identity and Access Management 콘솔을 엽니다[https://console.aws.amazon.com/iam/home](https://console.aws.amazon.com/iam/home).

1. 탐색 창에서 **사용자**를 선택한 다음, 이전에 생성한 사용자 중 Amazon Keyspaces 권한(정책 연결)이 있는 사용자를 선택합니다.

1. **자격 증명**을 선택합니다. **Amazon Keyspace용 자격 증명**에서 **자격 증명 생성**을 선택하여 서비스별 자격 증명을 생성합니다.

   이제 서비스별 자격 증명을 사용할 수 있습니다. 이 때가 암호를 다운로드하거나 볼 수 있는 유일한 시간입니다. 나중에 복구할 수 없습니다. 그러나 언제든지 암호를 재설정할 수 있습니다. 나중에 필요하므로 사용자와 암호를 안전한 위치에 저장하세요.

------
#### [ CLI ]

**를 사용하여 서비스별 자격 증명 생성 AWS CLI**

 서비스별 자격 증명을 생성하기 전에 AWS Command Line Interface (AWS CLI)를 다운로드, 설치 및 구성해야 합니다.

1. [http://aws.amazon.com/cli](https://aws.amazon.com/cli) AWS CLI 를 다운로드합니다.
**참고**  
는 Windows, macOS 또는 Linux에서 AWS CLI 실행됩니다.

1. *AWS Command Line Interface 사용 설명서*[의 AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 및 [AWS CLI 구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 지침을 따릅니다.

1. 를 사용하여 다음 명령을 AWS CLI실행하여 Amazon Keyspaces에 액세스할 수 `alice`있도록 사용자에 대한 서비스별 자격 증명을 생성합니다.

   ```
   aws iam create-service-specific-credential \
       --user-name alice \
       --service-name cassandra.amazonaws.com
   ```

출력은 다음과 같습니다.

```
{
    "ServiceSpecificCredential": {
        "CreateDate": "2019-10-09T16:12:04Z",
        "ServiceName": "cassandra.amazonaws.com",
        "ServiceUserName": "alice-at-111122223333",
        "ServicePassword": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "ServiceSpecificCredentialId": "ACCAYFI33SINPGJEBYESF",
        "UserName": "alice",
        "Status": "Active"
    }
}
```

출력에서 `ServiceUserName` 및 `ServicePassword` 값을 기록해 둡니다. 이 값은 나중에 필요하므로 안전한 위치에 저장하세요.

**중요**  
`ServicePassword`을 사용할 수 있는 유일한 시간입니다.

------

# Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성
<a name="access.credentials"></a>

 AWS CLI, AWS SDK 또는 Cassandra 클라이언트 드라이버와 SigV4 플러그인을 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스하려면 액세스 키가 있는 IAM 사용자가 필요합니다. Amazon Keyspaces를 프로그래밍 방식으로 사용하는 경우가 프로그래밍 방식 호출에서 자격 증명을 확인할 AWS 수 있도록 AWS 액세스 키를 제공합니다. 액세스 키는 액세스 키 ID(예: AKIAIOSFODNN7EXAMPLE)와 시크릿 액세스 키(예: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)로 구성됩니다. 이 주제에서는 이 프로세스의 필수 단계를 살펴봅니다.

보안 모범 사례에서는 권한이 제한된 IAM 사용자를 생성하고 대신 IAM 역할을 특정 작업을 수행하는 데 필요한 권한과 연결하는 것이 좋습니다. 그런 다음 IAM 사용자는 IAM 역할을 일시적으로 수임하여 필요한 작업을 수행할 수 있습니다. Amazon Keyspaces 콘솔을 사용하는 계정의 IAM 사용자는 역할로 전환하여 콘솔에서 해당 역할의 권한을 임시로 사용할 수 있습니다. 사용자는 자신의 원래 권한을 포기하고 역할에 할당된 권한을 수임합니다. 사용자가 역할을 끝내면 원래 권한이 복원됩니다. 사용자가 역할을 수임하는 데 사용하는 자격 증명은 일시적입니다. 반대로 IAM 사용자에게는 장기 자격 증명이 있으므로 역할을 맡는 대신 자신에게 직접 할당된 권한을 갖게 되면 보안 위험이 있습니다. 이 위험을 줄이려면 이러한 사용자에게 작업을 수행하는 데 필요한 권한만 제공하고 더 이상 필요하지 않을 경우 이러한 사용자를 제거하는 것이 좋습니다. 역할에 대한 자세한 내용은 **IAM 사용 설명서의 [역할에 대한 일반적인 시나리오: 사용자, 애플리케이션 및 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html)를 참조하세요.

**Topics**
+ [Cassandra 클라이언트 드라이버용 AWS CLI, AWS SDK 또는 Amazon Keyspaces SigV4 플러그인에 필요한 자격 증명](SigV4_credentials.md)
+ [IAM 역할 및 SigV4 플러그인을 생성하여 임시 자격 증명으로 Amazon Keyspaces에 접속](temporary.credentials.IAM.md)
+ [AWS 계정의 Amazon Keyspaces에 프로그래밍 방식으로 액세스할 수 있는 IAM 사용자 생성](access.credentials.IAM.md)
+ [IAM 사용자에 대한 새 액세스 키 생성](create.keypair.md)
+ [프로그래밍 방식 액세스를 위한 액세스 키 저장](aws.credentials.manage.md)

# Cassandra 클라이언트 드라이버용 AWS CLI, AWS SDK 또는 Amazon Keyspaces SigV4 플러그인에 필요한 자격 증명
<a name="SigV4_credentials"></a>

IAM 사용자 또는 역할을 인증하는 데 필요한 다음 자격 증명은 다음과 같습니다.

`AWS_ACCESS_KEY_ID`  
IAM 사용자 또는 역할과 연결된 AWS 액세스 키를 지정합니다.  
Amazon Keyspace에 프로그래밍 방식으로 접속하려면 액세스 키 `aws_access_key_id`가 필요합니다.

`AWS_SECRET_ACCESS_KEY`  
액세스 키와 연결된 보안 키를 지정합니다. 이는 액세스 키에 대한 기본적인 "암호"입니다.  
Amazon Keyspace에 프로그래밍 방식으로 접속하려면 `aws_secret_access_key`가 필요합니다.

`AWS_SESSION_TOKEN` - 선택 사항  
 AWS Security Token Service 작업에서 직접 검색한 임시 보안 자격 증명을 사용하는 경우 필요한 세션 토큰 값을 지정합니다. 자세한 내용은 [IAM 역할 및 SigV4 플러그인을 생성하여 임시 자격 증명으로 Amazon Keyspaces에 접속](temporary.credentials.IAM.md) 단원을 참조하십시오.  
IAM 사용자로 연결하는 경우에는 `aws_session_token`이 필요하지 않습니다.

# IAM 역할 및 SigV4 플러그인을 생성하여 임시 자격 증명으로 Amazon Keyspaces에 접속
<a name="temporary.credentials.IAM"></a>

프로그래밍 방식으로 Amazon Keyspaces에 액세스하는 권장 방법은 [임시 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)을 사용하여 SigV4 플러그인으로 인증하는 것입니다. 대부분의 시나리오에서는 IAM 사용자와 같이 만료되지 않는 장기 액세스 키가 필요하지 않습니다. 대신, IAM 역할을 만들고 임시 보안 자격 증명을 생성할 수 있습니다. 임시 보안 자격 증명은 액세스 키 ID와 비밀 액세스 키로 구성되지만, 자격 증명이 만료되는 시간을 나타내는 보안 토큰을 포함합니다. 장기 액세스 키 대신 IAM 역할을 사용하는 방법에 대한 자세한 내용은 [ IAM 역할로 전환(AWS API)을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html).

임시 자격 증명을 시작하려면 먼저 IAM 역할을 생성해야 합니다.

**Amazon Keyspaces에 대한 읽기 전용 액세스를 부여하는 IAM 역할을 생성합니다.**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창에서 **역할**, **역할 생성**을 차례로 선택합니다.

1. **역할 생성** 페이지의 **신뢰할 수 있는 엔터티 유형 선택**에서 **AWS 서비스**를 선택합니다. **사용 사례 선택**에서 **Amazon EC2**를 선택한 후 **다음**을 선택합니다.

1. **권한 추가** 페이지의 **권한 정책**에서 **Amazon Keyspaces 읽기 전용 액세스**를 선택한 후 **다음**을 선택합니다.

1. **이름 지정, 검토, 생성** 페이지에서 역할 이름을 입력하고 **신뢰할 수 있는 엔티티 선택** 및 **권한 추가** 섹션을 검토합니다. 이 페이지에서 역할에 대한 선택적 태그를 추가할 수도 있습니다. 완료했으면 **역할 생성**을 선택하세요. Amazon EC2 인스턴스를 시작할 때 필요하므로 이 이름을 기억해 두십시오.

코드에서 임시 보안 자격 증명을 사용하려면와 같은 AWS Security Token Service API를 프로그래밍 방식으로 호출`AssumeRole`하고 이전 단계에서 생성한 IAM 역할에서 결과 자격 증명 및 세션 토큰을 추출합니다. 그런 다음 해당 값을 후속 호출의 자격 증명으로 사용합니다 AWS. 다음 예는 임시 보안 자격 증명을 사용하는 방법에 대한 유사 코드를 보여줍니다.

```
assumeRoleResult = AssumeRole(role-arn);
tempCredentials = new SessionAWSCredentials(
   assumeRoleResult.AccessKeyId, 
   assumeRoleResult.SecretAccessKey, 
   assumeRoleResult.SessionToken);
cassandraRequest = CreateAmazoncassandraClient(tempCredentials);
```

Python 드라이버를 사용하여 Amazon Keyspace에 액세스하는 임시 자격 증명을 구현하는 예제는 [Apache Cassandra용 DataStax Python 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속](using_python_driver.md#python_SigV4)을 참조하세요.

`AssumeRole`, `GetFederationToken` 및 기타 API 작업을 호출하는 방법에 대한 자세한 내용은 [AWS Security Token Service API 참조](https://docs.aws.amazon.com/STS/latest/APIReference/)를 참조하세요. 이러한 호출의 결과에서 임시 보안 자격 증명 및 세션 토큰을 얻는 방법에 대한 자세한 내용은 사용하고 있는 SDK의 설명서를 참조하세요. 기본 설명서 페이지의 **SDKs 및 도구 키트** 섹션에서 모든 AWS SDKs에 대한 설명서를 찾을 수 있습니다. [AWS](https://aws.amazon.com/documentation) 

# AWS 계정의 Amazon Keyspaces에 프로그래밍 방식으로 액세스할 수 있는 IAM 사용자 생성
<a name="access.credentials.IAM"></a>

 AWS CLI, AWS SDK 또는 SigV4 플러그인을 사용하여 Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 자격 증명을 얻으려면 먼저 IAM 사용자 또는 역할을 생성해야 합니다. IAM 사용자를 생성하고 해당 IAM 사용자가 Amazon Keyspaces에 프로그래밍 방식으로 액세스할 수 있도록 구성하는 과정은 다음 단계와 같습니다.

1.  AWS Management Console, Tools AWS CLI for Windows PowerShell 또는 AWS API 작업에서 사용자를 생성합니다. 에서 사용자를 생성하면 자격 AWS Management Console증명이 자동으로 생성됩니다.

1. 프로그래밍 방식으로 사용자를 생성하는 경우 추가 단계에서 해당 사용자의 액세스 키(0액세스 키 ID 및 비밀 액세스 키)를 생성해야 합니다.

1. 사용자에게 Amazon Keyspace에 액세스할 수 있는 권한을 부여합니다.

IAM 사용자를 생성하는 데 필요한 권한에 대한 자세한 내용은 [IAM 리소스에 액세스하는 데 필요한 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions-required.html)을 참조하세요.

------
#### [ Console ]

**프로그래밍 방식의 액세스 권한이 있는 IAM 사용자 생성(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자(Users)**와 **사용자 추가(Add users)**를 차례로 선택합니다.

1. 신규 사용자의 사용자 이름을 입력합니다. 로그인 이름입니다 AWS.
**참고**  
사용자 이름에는 최대 64개의 문자, 숫자 및 더하기(\$1), 등호(=), 쉼표(,), 마침표(.), 앳(@) 및 하이픈(-) 조합을 사용할 수 있습니다. 이름은 계정 내에서 고유해야 합니다. 대/소문자를 구분하지 않습니다. 예를 들어 *"TESTUSER"*와 *"testuser"*라는 두 사용자를 만들 수는 없습니다.

1. **액세스 키 - 프로그래밍 방식 액세스**를 선택하여 새 사용자를 위한 액세스 키를 생성합니다. **최종** 페이지에 이르면 액세스 키를 보거나 다운로드할 수 있습니다.

   **다음: 권한**을 선택합니다.

1. **권한 설정** 페이지에서 **직접 기존 정책 연결**을 선택하여 신규 사용자에게 권한을 부여합니다.

   이 옵션은 계정에서 사용할 수 있는 AWS 관리형 및 고객 관리형 정책 목록을 표시합니다. 검색 필드에 `keyspaces`를 입력하면 Amazon Keyspace와 관련된 정책만 표시됩니다.

   Amazon Keyspaces의 경우 사용 가능한 관리형 정책은 `AmazonKeyspacesFullAccess` 및 `AmazonKeyspacesReadOnlyAccess`입니다. 각 정책에 대한 자세한 내용은 [AWS Amazon Keyspaces에 대한 관리형 정책](security-iam-awsmanpol.md) 섹션을 참조하십시오.

   테스트 또는 접속 튜토리얼을 따르려면 신규 IAM 사용자에 대한 `AmazonKeyspacesReadOnlyAccess` 정책을 선택합니다. **참고:** 최소 권한 원칙을 따르고 특정 리소스에 대한 액세스를 제한하고 필요한 작업만 허용하는 사용자 지정 정책을 만드는 것이 좋습니다. IAM 정책에 대한 자세한 내용과 Amazon Keyspaces 정책 예제를 보려면 [Amazon Keyspaces ID 기반 정책](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies) 섹션을 참조하세요. 사용자 지정 권한 정책을 생성한 후 정책을 역할에 연결한 다음 사용자가 적절한 역할을 일시적으로 수임하도록 합니다.

   **다음: 태그**를 선택합니다.

1. **태그 추가(선택 사항)** 페이지에서 사용자에 대한 태그를 추가하거나 **다음: 검토**를 선택할 수 있습니다.

1. **검토** 페이지에서 이 시점까지 한 선택을 모두 확인할 수 있습니다. 계속 진행할 준비가 되었으면 **사용자 생성**을 선택합니다.

1. 사용자의 액세스 키(액세스 키 ID와 비밀 액세스 키)를 보려면 암호와 액세스 키 옆에 있는 **Show(표시)**를 선택합니다. 액세스 키를 저장하려면 **.csv 다운로드(Download .csv)**를 선택한 후 안전한 위치에 파일을 저장합니다.
**중요**  
비밀 액세스 키는 이 때만 확인 및 다운로드가 가능하기 때문에 이 정보가 있어야 사용자에게 SigV4 플러그인을 사용할 수 있습니다. 사용자의 새 액세스 키 ID와 비밀 액세스 키를 안전한 장소에 보관하세요. 이 단계 이후에는 보안 키에 다시 액세스할 수 없습니다.

------
#### [ CLI ]

**프로그래밍 방식의 액세스 권한이 있는 IAM 사용자 생성(AWS CLI)**

1. 다음 AWS CLI 코드를 사용하여 사용자를 생성합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html)

1. 사용자에게 프로그래밍 방식 액세스 권한을 부여합니다. 이를 위해서는 다음과 같은 방식으로 생성할 수 있는 액세스 키가 필요합니다.
   + AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)
   + Tools for Windows PowerShell: [https://docs.aws.amazon.com/powershell/latest/reference/items/New-IAMAccessKey.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-IAMAccessKey.html)
   + IAM API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)
**중요**  
비밀 액세스 키는 이 때만 확인 및 다운로드가 가능하기 때문에 이 정보가 있어야 사용자에게 SigV4 플러그인을 사용할 수 있습니다. 사용자의 새 액세스 키 ID와 비밀 액세스 키를 안전한 장소에 보관하세요. 이 단계 이후에는 보안 키에 다시 액세스할 수 없습니다.

1. 사용자 권한을 정의한 `AmazonKeyspacesReadOnlyAccess` 정책을 사용자에게 추가합니다. **주의:** 모범 사례로, 사용자에게 직접 정책을 추가하는 대신 그룹에 사용자를 추가하고 그 그룹에 정책을 추가하여 사용자 권한을 관리하시는 것이 좋습니다.
   + AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html)

------

# IAM 사용자에 대한 새 액세스 키 생성
<a name="create.keypair"></a>

이미 IAM 사용자가 있으면 언제든지 새 액세스 키를 생성할 수 있습니다. IAM 사용자의 액세스 키 관리(예: 액세스 키 업데이트 방법)에 대한 자세한 내용은 [IAM 사용자의 액세스 키 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)를 참조하세요.

**IAM 사용자의 액세스 키 생성(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 액세스 키를 생성하려는 사용자 이름을 선택합니다.

1. 사용자 **요약** 페이지에서 **보안 자격 증명** 탭을 선택합니다.

1. **액세스 키** 섹션의 **액세스 키 모범 사례 및 대안**에서 사용 사례 **기타**를 선택합니다. **다음을** 클릭하고 필요에 따라 선택적 정보를 입력한 다음 **액세스 키 생성을** 선택합니다.

   새 액세스 키 페어를 보려면 **표시**를 선택합니다. 자격 증명은 다음과 비슷합니다.
   + 액세스 키 ID: AKIAIOSFODNN7EXAMPLE
   + 시크릿 액세스 키: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
**참고**  
이 대화 상자를 닫은 후에는 비밀 액세스 키에 다시 액세스할 수 없습니다.

   생성한 키 페어에 대해 다음 모범 사례를 고려합니다.
   + 액세스 키를 일반 텍스트, 코드 리포지토리 또는 코드에 저장하지 마십시오.
   + 더 이상 필요하지 않은 경우 액세스 키를 비활성화하거나 삭제합니다.
   + 최소 권한 권한을 활성화합니다.
   + 액세스 키를 정기적으로 교체합니다.

1. 키 페어 파일을 다운로드하려면 [**Download .csv file**]을 선택합니다. 안전한 위치에 키를 저장합니다.

1. .csv 파일을 다운로드한 후 **닫기**를 선택합니다.

액세스 키를 생성하면 키 페어가 기본적으로 활성화되므로 해당 페어를 즉시 사용할 수 있습니다.

# 프로그래밍 방식 액세스를 위한 액세스 키 저장
<a name="aws.credentials.manage"></a>

액세스 키를 코드에 직접 포함하지 않는 것이 가장 좋은 방법입니다. AWS SDKs 및 AWS 명령줄 도구를 사용하면 액세스 키를 코드로 유지할 필요가 없도록 알려진 위치에 액세스 키를 배치할 수 있습니다. 액세스 키를 다음 중 한 곳에 보관하십시오.
+ **환경 변수 **– 다중 테넌트 시스템에서 시스템 환경 변수가 아닌 사용자 환경 변수를 선택합니다.
+ **CLI 자격 증명 파일** - `credentials` 명령을 실행하면 `config` 및 `aws configure` 파일이 업데이트됩니다. `credentials` 파일은 Linux, macOS, Unix에서는 `~/.aws/credentials`에, Windows에서는 `C:\Users\USERNAME\.aws\credentials`에 저장됩니다. 이 파일에는 `default` 프로필 및 모든 명명된 프로필에 대한 자격 증명 세부 정보가 포함되어 있습니다.
+ **CLI 구성 파일** - `credentials` 명령을 실행하면 `config` 및 `aws configure` 파일이 업데이트됩니다. `config` 파일은 Linux, macOS, Unix에서는 `~/.aws/config`에, Windows에서는 `C:\Users\USERNAME\.aws\config`에 저장됩니다. 이 파일에는 기본 프로필 및 모든 명명된 프로필에 대한 구성 설정이 포함되어 있습니다.

액세스 키를 환경 변수로 저장하는 것은 [Apache Cassandra용 4.x DataStax Java 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속하는 단계별 튜토리얼](using_java_driver.md#java_tutorial.SigV4)의 전제 조건입니다. 여기에는 기본값이 포함됩니다 AWS 리전. 클라이언트는 기본 자격 증명 공급자 체인을 사용하여 자격 증명을 검색하며, 환경 변수로 저장된 액세스 키는 다른 모든 위치(예: 구성 파일)보다 우선합니다. 자세한 내용은 [구성 설정 및 우선 순위](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence)를 참조하십시오.

다음은 기본 사용자에 대한 환경 변수를 구성할 수 있는 방법을 보여주는 예입니다.

------
#### [ Linux, macOS, or Unix ]

```
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>
$ export AWS_DEFAULT_REGION=us-east-1
```

환경 변수를 설정하면 사용되는 값이 변경되어 쉘 세션이 종료될 때까지 또는 변수를 다른 값으로 설정할 때까지 유지됩니다. 쉘의 스타트업 스크립트에서 변수를 설정하면 해당 변수가 향후 세션에서도 영구적으로 적용되도록 할 수 있습니다.

------
#### [ Windows Command Prompt ]

```
C:\> setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
C:\> setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> setx AWS_SESSION_TOKEN AQoDYXdzEJr...<remainder of security token>
C:\> setx AWS_DEFAULT_REGION us-east-1
```

환경 변수를 설정하는 데 `[set](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)`을 사용하면 사용되는 값이 변경되어 현재 명령 프롬프트 세션이 종료될 때까지 또는 변수를 다른 값으로 설정할 때까지 유지됩니다. 환경 변수를 설정하는 데 [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx)를 사용하면 현재 명령 프롬프트 세션과 명령 실행 후 생성한 모든 명령 프롬프트 세션에서 사용되는 값이 변경됩니다. 명령을 실행하는 시점에 이미 실행 중인 다른 명령 쉘에는 영향을 주지 ****않습니다**.

------
#### [ PowerShell ]

```
PS C:\> $Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
PS C:\> $Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
PS C:\> $Env:AWS_SESSION_TOKEN="AQoDYXdzEJr...<remainder of security token>"
PS C:\> $Env:AWS_DEFAULT_REGION="us-east-1"
```

이전 예에 표시된 대로 PowerShell 프롬프트에서 환경 변수를 설정하면 현재 세션 기간에만 해당 값이 저장됩니다. 모든 PowerShell 및 명령 프롬프트 세션에서 환경 변수 설정이 영구적으로 적용되도록 하려면 **제어판**에서 **시스템** 애플리케이션을 사용하여 해당 설정을 저장합니다. 또는 PowerShell 프로파일에 변수를 추가하여 향후 모든 PowerShell 세션에 적용되도록 변수를 설정할 수 있습니다. 환경 변수 저장 또는 세션에 영구적 적용에 대한 자세한 내용은 [PowerShell 설명서](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_environment_variables)를 참조하십시오.

------

# Amazon Keyspaces의 서비스 엔드포인트
<a name="programmatic.endpoints"></a>

**Topics**
+ [포트 및 프로토콜](#ports)
+ [글로벌 엔드포인트](#global_endpoints)
+ [AWS GovCloud (US) Region FIPS 엔드포인트](#fips_endpoints)
+ [중국 리전 엔드포인트](#china_endpoints)
+ [스트림 엔드포인트](#streams_endpoints)
+ [듀얼 스택 엔드포인트에 연결](dualstack_endpoints.md)

## 포트 및 프로토콜
<a name="ports"></a>

`cqlsh` 클라이언트를 실행하거나 Apache 2.0 라이선스 Cassandra 드라이버를 사용하거나 AWS CLI 및 AWS SDK를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스할 수 있습니다.

아래 테이블에는 다양한 액세스 메커니즘의 포트와 프로토콜이 나와 있습니다.


| 프로그래밍 방식 액세스 | 포트 | 프로토콜 | 
| --- | --- | --- | 
| CQLSH | 9142 | TLS | 
| Cassandra 드라이버 | 9142 | TLS | 
| AWS CLI | 443 | HTTPS | 
| AWS SDK | 443 | HTTPS | 

 TLS 연결의 경우 Amazon Keyspaces는 Amazon Trust Services(Amazon 루트 CAs1\$14)에서 발급된 인증서를 사용하여 서버에 대해 인증합니다. 자세한 내용은 [TLS에 대한 `cqlsh` 연결을 수동으로 구성하는 방법](programmatic.cqlsh.md#encrypt_using_tls) 또는 [Cassandra 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](programmatic.drivers.md) 장에서 드라이버의 [시작하기 전에](using_java_driver.md#using_java_driver.BeforeYouBegin) 섹션을 참조하세요.

## 글로벌 엔드포인트
<a name="global_endpoints"></a>

 Amazon Keyspaces는 IPv4 및 IPv6 퍼블릭 엔드포인트를 모두 지원합니다. IPv4 엔드포인트와 듀얼 스택 엔드포인트 중에서 선택할 수 있습니다. 엔드포인트는 다음 명명 규칙을 사용합니다. 여기서 *us-east-1*을 테이블 AWS 리전 에서 사용할 수 있는 다른 로 바꿀 수 있습니다.
+ **IPv4 엔드포인트** - `cassandra.us-east-1.amazonaws.com`
+ **듀얼 스택 엔드포인트 -** `cassandra.us-east-1.api.aws`

듀얼 스택 엔드포인트 및 연결 구성 방법에 대한 자세한 내용은 섹션을 참조하세요[듀얼 스택 엔드포인트에 연결](dualstack_endpoints.md).

Amazon Keyspaces는 다음 리전에서 사용할 수 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/programmatic.endpoints.html)

## AWS GovCloud (US) Region FIPS 엔드포인트
<a name="fips_endpoints"></a>

 AWS GovCloud (US) Region에서 사용 가능한 FIPS 엔드포인트 Amazon Keyspaces는 IPv4 및 IPv6 FIPS 엔드포인트를 모두 지원합니다. IPv4 엔드포인트와 듀얼 스택 엔드포인트 중에서 선택할 수 있습니다. 자세한 내용은 [*AWS GovCloud (US) 사용 설명서*의 Amazon Keyspaces](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-keyspaces.html)를 참조하세요.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/programmatic.endpoints.html)

## 중국 리전 엔드포인트
<a name="china_endpoints"></a>

Amazon Keyspaces는 AWS 중국 리전에서 IPv4 엔드포인트를 지원합니다.

이러한 엔드포인트에 액세스하려면 중국 리전에 고유한 별도의 계정 자격 증명 세트에 가입해야 합니다. 자세한 내용은 [중국 가입, 계정 및 자격 증명](https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html)을 참조하세요.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/programmatic.endpoints.html)

## 스트림 엔드포인트
<a name="streams_endpoints"></a>

Amazon Keyspaces CDC streams 는 다음에서 사용할 수 있습니다 AWS 리전. 이 표에는 각 리전에서 사용 가능한 듀얼 스택 서비스 엔드포인트가 나와 있습니다. 에 대한 자세한 내용은 단원을 Amazon Keyspaces CDC streams참조하십시오[Amazon Keyspaces에서 CDC 스트림 엔드포인트에 액세스하는 방법](CDC_access-endpoints.md).

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/programmatic.endpoints.html)

# 듀얼 스택 엔드포인트에 연결
<a name="dualstack_endpoints"></a>

Amazon Keyspaces 글로벌 엔드포인트는 IPv4 및 IPv6 요청을 수락하는 듀얼 스택 엔드포인트입니다.

IPv6를 사용하여 Amazon Keyspaces에 연결할 때 서비스는 연결 프로토콜에 맞게 시스템 테이블 응답을 자동으로 조정합니다. 이렇게 하면 애플리케이션이 연결 유형과 일치하는 일관된 네트워크 주소 정보를 수신할 수 있습니다. 이를 통해 클라이언트에 정확한 네트워크 토폴로지 정보를 제공하는 동시에 기존 CQL 애플리케이션의 이전 버전과의 호환성을 유지할 수 있습니다.

Amazon Keyspaces는 클라이언트 연결에서 사용하는 네트워크 프로토콜(IPv4 또는 IPv6)을 자동으로 감지하고 그에 따라 시스템 테이블 응답을 조정합니다. 이 감지는 초기 연결 핸드셰이크 중에 투명하게 수행되므로 클라이언트 애플리케이션의 추가 구성이 필요하지 않습니다.

Amazon Keyspaces는 연결 프로토콜을 기반으로 IP 주소를 반환합니다. 예를 들어 IPv4 네트워크의 요청은 다음 응답을 반환합니다.

```
SELECT * FROM system.peers;
-- Returns IPv4 addresses in peer column
-- Example: 172.31.1.1, 172.31.1.2, etc.
```

예를 들어 IPv6 네트워크에서 듀얼 스택 엔드포인트로의 연결은 다음 응답을 `cassandra.us-east-1.api.aws`반환합니다.

```
SELECT * FROM system.peers;
-- Returns IPv6 addresses in peer column
-- Example: 2001:db8::1, 2001:db8::2, etc.
```

Amazon Keyspaces의 IPv6 지원에 대한 자세한 내용은 섹션을 참조하세요[Amazon Keyspaces에서 IPv6 지원](ipv6-support.md).

# Amazon Keyspaces에서 IPv6 지원
<a name="ipv6-support"></a>

Amazon Keyspaces에서 IPv6 지원을 통해 애플리케이션은 IPv4에 비해 상당히 확장된 주소 공간을 제공하는 차세대 인터넷 프로토콜인 인터넷 프로토콜 버전 6을 사용하여 연결을 설정할 수 있습니다. 이 구현에서는 IPv4와 IPv6를 동시에 지원하는 듀얼 스택 엔드포인트를 사용하여 역호환성을 보장하는 동시에 미래 대비 연결을 지원합니다. 엔드포인트 목록은 [글로벌 엔드포인트](programmatic.endpoints.md#global_endpoints) 섹션을 참조하세요.

Amazon Keyspaces는 IPv6 연결을 활성화하면서 완전한 이전 버전과의 호환성을 유지하는 듀얼 스택 아키텍처를 통해 IPv6 지원을 구현합니다.

## Amazon Keyspaces의 DNS 확인
<a name="dns-resolution"></a>

애플리케이션이 듀얼 스택 엔드포인트에 연결되면 DNS 확인 프로세스는 두 주소 유형을 모두 반환합니다.

레코드(IPv4)  
이전 버전과의 호환성을 위한 기존 IPv4 주소

AAAA 레코드(IPv6)  
최신 연결을 위한 새로운 IPv6 주소

클라이언트의 운영 체제 및 네트워크 스택은 로컬 구성, 네트워크 가용성 및 시스템 기본 설정에 따라 가장 적합한 프로토콜을 자동으로 선택합니다.

Cassandra 쿼리 언어(CQL) 프로토콜은 애플리케이션 코드를 변경하지 않고도 IPv6 연결을 원활하게 지원합니다.

자동 프로토콜 선택  
+ 애플리케이션은 듀얼 스택 엔드포인트를 지정합니다.
+ 네트워크 스택은 가용성에 따라 IPv4 또는 IPv6를 선택합니다.
+ 기존 CQL 애플리케이션에는 코드 수정이 필요하지 않습니다.

드라이버 호환성  
+ 모든 주요 CQL 드라이버가 IPv6를 투명하게 지원
+ DataStax 드라이버는 기본적으로 IPv6 주소를 처리합니다.
+ 오픈 소스 드라이버는 수정 없이 작동합니다.

연결 일관성  
+ 시스템 테이블에는 사용된 연결 프로토콜이 반영됩니다.
+ IPv6 연결은의 IPv6 주소를 표시합니다. `system.peers` 
+ IPv4 연결에서 IPv4 주소 계속 표시

# `cqlsh` 사용하여 Amazon Keyspace에 접속
<a name="programmatic.cqlsh"></a>

`cqlsh`를 사용하여 Amazon Keyspaces에 접속하려면 `cqlsh-expansion`를 사용할 수 있습니다. 이 도구 키트에는 Apache Cassandra와의 완전한 호환성을 유지하면서 Amazon Keyspaces에 사전 구성된 `cqlsh` 및 도우미와 같은 일반적인 Apache Cassandra 도구가 포함되어 있습니다. `cqlsh-expansion`는 SigV4 인증 플러그인을 통합하여 사용자 이름과 암호 대신 IAM 액세스 키를 사용하여 접속할 수 있습니다. Amazon Keyspaces는 서버리스이므로 전체 Apache Cassandra 배포는 설치하지 않고 `cqlsh` 스크립트만 설치하면 접속할 수 있습니다. 이 간단한 설치 패키지에는 Python을 지원하는 모든 플랫폼에 설치할 수 있는 `cqlsh-expansion` 및 클래식 `cqlsh` 스크립트가 포함되어 있습니다.

**참고**  
`Murmur3Partitioner`는 Amazon Keyspaces 및 `cqlsh-expansion`에 권장되는 파티셔너입니다. `cqlsh-expansion`은 Amazon Keyspaces `DefaultPartitioner`를 지원하지 않습니다. 자세한 내용은 [Amazon Keyspaces에서 파티셔너 사용하기](working-with-partitioners.md) 단원을 참조하십시오.

`cqlsh`에 대한 일반적인 정보는 [`cqlsh`: CQL 쉘](https://cassandra.apache.org/doc/latest/cassandra/managing/tools/cqlsh.html) 섹션을 참조하세요.

**Topics**
+ [`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](#using_cqlsh)
+ [TLS에 대한 `cqlsh` 연결을 수동으로 구성하는 방법](#encrypt_using_tls)

## `cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속
<a name="using_cqlsh"></a>

**`cqlsh-expansion` 설치 및 구성**

1. `cqlsh-expansion` Python 패키지를 설치하려면 `pip` 명령을 실행할 수 있습니다. 그러면 종속성 목록이 포함된 파일과 함께 *pip install*을 사용하여 컴퓨터에 `cqlsh-expansion` 스크립트가 설치됩니다. `--user flag`가 `pip`에 플랫폼용 Python 사용자 설치 디렉터리를 사용하도록 지시합니다. Unix 기반 시스템에서는 `~/.local/` 디렉터리여야 합니다.

   `cqlsh-expansion`을 설치하려면 Python 3가 필요합니다. Python 버전을 확인하려면 `Python --version`를 사용하세요. 설치하려면 다음 명령 중 하나를 실행할 수 있습니다.

   ```
   python3 -m pip install --user cqlsh-expansion
   ```

   결과는 다음과 비슷해야 합니다.

   ```
   Collecting cqlsh-expansion
     Downloading cqlsh_expansion-0.9.6-py3-none-any.whl (153 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 153.7/153.7 KB 3.3 MB/s eta 0:00:00
   Collecting cassandra-driver
     Downloading cassandra_driver-3.28.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.1 MB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19.1/19.1 MB 44.5 MB/s eta 0:00:00
   Requirement already satisfied: six>=1.12.0 in /usr/lib/python3/dist-packages (from cqlsh-expansion) (1.16.0)
   Collecting boto3
     Downloading boto3-1.29.2-py3-none-any.whl (135 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 135.8/135.8 KB 17.2 MB/s eta 0:00:00
   Collecting cassandra-sigv4>=4.0.2
     Downloading cassandra_sigv4-4.0.2-py2.py3-none-any.whl (9.8 kB)
   Collecting botocore<1.33.0,>=1.32.2
     Downloading botocore-1.32.2-py3-none-any.whl (11.4 MB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 60.9 MB/s eta 0:00:00
   Collecting s3transfer<0.8.0,>=0.7.0
     Downloading s3transfer-0.7.0-py3-none-any.whl (79 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.8/79.8 KB 13.1 MB/s eta 0:00:00
   Collecting jmespath<2.0.0,>=0.7.1
     Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
   Collecting geomet<0.3,>=0.1
     Downloading geomet-0.2.1.post1-py3-none-any.whl (18 kB)
   Collecting python-dateutil<3.0.0,>=2.1
     Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 33.1 MB/s eta 0:00:00
   Requirement already satisfied: urllib3<2.1,>=1.25.4 in /usr/lib/python3/dist-packages (from botocore<1.33.0,>=1.32.2->boto3->cqlsh-expansion) (1.26.5)
   Requirement already satisfied: click in /usr/lib/python3/dist-packages (from geomet<0.3,>=0.1->cassandra-driver->cqlsh-expansion) (8.0.3)
   Installing collected packages: python-dateutil, jmespath, geomet, cassandra-driver, botocore, s3transfer, boto3, cassandra-sigv4, cqlsh-expansion
     WARNING: The script geomet is installed in '/home/ubuntu/.local/bin' which is not on PATH.
     Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
     WARNING: The scripts cqlsh, cqlsh-expansion and cqlsh-expansion.init are installed in '/home/ubuntu/.local/bin' which is not on PATH.
     Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
   Successfully installed boto3-1.29.2 botocore-1.32.2 cassandra-driver-3.28.0 cassandra-sigv4-4.0.2 cqlsh-expansion-0.9.6 geomet-0.2.1.post1 jmespath-1.0.1 python-dateutil-2.8.2 s3transfer-0.7.0
   ```

   설치 디렉터리가 `PATH`에 없는 경우 운영 체제의 지침에 따라 설치 디렉터리를 추가해야 합니다. 다음은 Ubuntu Linux의 한 예입니다.

   ```
   export PATH="$PATH:/home/ubuntu/.local/bin"
   ```

   패키지가 설치되었는지 확인하려면 다음 명령을 실행할 수 있습니다.

   ```
   cqlsh-expansion --version
   ```

   결과는 다음과 같아야 합니다.

   ```
   cqlsh 6.1.0
   ```

1. `cqlsh-expansion`를 구성하려면 설치 후 스크립트를 실행하여 다음 단계를 자동으로 완료할 수 있습니다.

   1. `.cassandra` 디렉터리가 아직 없으면 사용자 홈 디렉터리에 생성합니다.

   1. 사전 구성된 `cqlshrc` 구성 파일을 `.cassandra` 디렉터리에 복사합니다.

   1. 결합된 인증서 파일을 `.cassandra` 디렉터리에 복사합니다. Amazon Keyspaces는 이 인증서를 사용하여 전송 계층 보안(TLS) 과의 보안 연결을 구성합니다. 전송 중 암호화는 Amazon Keyspaces와 주고 받는 데이터를 암호화하여 추가 데이터 보호 계층을 제공합니다. 인증서에 대한 자세한 내용은 섹션을 참조하세요[TLS에 대한 `cqlsh` 연결을 수동으로 구성하는 방법](#encrypt_using_tls).

   스크립트를 먼저 검토하려면 [https://github.com/aws-samples/amazon-keyspaces-toolkit/blob/master/cqlsh-expansion/cqlsh_expansion/post_install.py](https://github.com/aws-samples/amazon-keyspaces-toolkit/blob/master/cqlsh-expansion/cqlsh_expansion/post_install.py)의 Github 리포지토리에서 액세스할 수 있습니다.

   다음 명령을 실행하여 스크립트를 사용할 수 있습니다.

   ```
   cqlsh-expansion.init
   ```
**참고**  
`pip uninstall`를 사용하여 `cqlsh-expansion`을 제거해도 설치 후 스크립트로 생성된 디렉터리와 파일은 제거되지 않으므로 수동으로 삭제해야 합니다.

**`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속**

1. 를 구성 AWS 리전 하고 사용자 환경 변수로 추가합니다.

   Linux 기반 시스템에서 기본 리전을 환경 변수로 추가하려면 다음 명령을 실행할 수 있습니다. 이 예제에서는를 사용합니다`us-east-1`.

   ```
   export AWS_DEFAULT_REGION=us-east-1
   ```

   다른 플랫폼을 포함하여 환경 변수를 설정하는 방법에 대한 자세한 내용은 [환경 변수 설정 방법](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set)을 참조하세요.

1. 서비스 엔드포인트를 찾습니다.

   리전에 적절한 서비스 엔드포인트를 선택합니다. Amazon Keyspaces에 사용할 수 있는 엔드포인트를 검토하려면 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md)을 참조하세요. 이 예에서는 엔드포인트 `cassandra.us-east-1.amazonaws.com`을 사용합니다.

1. 인증 방식을 구성합니다.

   보안을 강화하기 위한 권장 방법은 IAM 액세스 키(IAM 사용자, 역할, 페더레이션 ID)로 접속하는 것입니다.

   IAM 액세스 키로 접속하려면 먼저 다음 단계를 완료해야 합니다.

   1. IAM 사용자를 생성하거나, 모범 사례에 따라 IAM 사용자가 위임할 수 있는 IAM 역할을 생성하십시오. IAM 액세스 키를 생성하는 방법에 대한 자세한 정보는 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 섹션을 참조하세요.

   1. 역할(또는 IAM 사용자)에게 최소한 Amazon Keyspace에 대한 읽기 전용 액세스 권한을 부여하는 IAM 정책을 생성합니다. IAM 사용자 또는 역할이 Amazon Keyspaces에 접속하는 데 필요한 권한에 대한 자세한 내용은 [Amazon Keyspaces 테이블에 액세스](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-one-table) 섹션을 참조하세요.

   1. 다음 예제와 같이 IAM 사용자의 액세스 키를 사용자 환경 변수에 추가합니다.

      ```
      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
      export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      ```

      다른 플랫폼을 포함하여 환경 변수를 설정하는 방법에 대한 자세한 내용은 [환경 변수 설정 방법](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set)을 참조하세요.
**참고**  
Amazon EC2 인스턴스에서 연결하는 경우 인스턴스에서 Amazon Keyspaces로의 트래픽을 허용하는 아웃바운드 규칙도 보안 그룹에서 구성해야 합니다. EC2 아웃바운드 규칙을 보고 편집하는 방법에 대한 자세한 내용은 [Amazon EC2 사용 설명서의 보안 그룹에 규칙 추가](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule)를 참조하세요.

1. `cqlsh-expansion` 및 SigV4 인증을 사용하여 Amazon Keyspaces에 접속합니다.

   `cqlsh-expansion`를 사용하여 Amazon Keyspaces에 접속하려면 다음 명령을 사용합니다. 서비스 엔드포인트를 해당 리전의 올바른 엔드포인트로 바꿔야 합니다.

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

   접속에 성공하면 다음 예제와 비슷하게 출력됩니다.

   ```
   Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
   [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
   Use HELP for help.
   cqlsh current consistency level is ONE.
   cqlsh>
   ```

   연결 오류가 발생하는 경우 문제 해결 정보는 [cqlsh를 사용하여 Amazon Keyspaces에 연결할 수 없음](troubleshooting.connecting.md#troubleshooting.connection.cqlsh) 섹션을 참조하세요.
   + 서비스별 자격 증명으로 Amazon Keyspaces에 접속합니다.

     Cassandra가 인증에 사용하는 기존 사용자 이름 및 암호 조합으로 접속하려면 먼저 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)에 설명된 대로 Amazon Keyspaces에 대한 서비스별 자격 증명을 생성해야 합니다. 또한 해당 사용자에게 Amazon Keyspace에 액세스할 수 있는 권한을 부여해야 합니다. 자세한 내용은 [Amazon Keyspaces 테이블에 액세스](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-one-table) 섹션을 참조하세요.

     사용자에 대한 서비스별 자격 증명과 권한을 생성한 후에는 일반적으로 사용자 디렉터리 경로 `~/.cassandra/`에 있는 `cqlshrc` 파일을 업데이트해야 합니다. `cqlshrc` 파일에서 Cassandra `[authentication]` 섹션으로 이동하여 다음 예제와 같이 “;” 문자를 사용하여 `[auth_provider]`에 있는 SigV4 모듈과 클래스를 주석으로 처리합니다.

     ```
     [auth_provider]
     
     ; module = cassandra_sigv4.auth
     
     ; classname = SigV4AuthProvider
     ```

     `cqlshrc` 파일을 업데이트한 후 다음 명령을 사용하여 서비스별 자격 증명으로 Amazon Keyspace에 접속할 수 있습니다.

     ```
     cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 -u myUserName -p myPassword --ssl
     ```

**정리**
+ `pip uninstall` 명령을 사용하여 `cqlsh-expansion` 패키지를 제거할 수 있습니다.

  ```
  pip3 uninstall cqlsh-expansion
  ```

  `pip3 uninstall` 명령을 실행해도 설치 후 스크립트로 생성된 디렉터리 및 관련 파일은 제거되지 않습니다. 설치 후 스크립트로 생성된 폴더와 파일을 제거하려면 `.cassandra` 디렉터리를 삭제하면 됩니다.

## TLS에 대한 `cqlsh` 연결을 수동으로 구성하는 방법
<a name="encrypt_using_tls"></a>

Amazon Keyspaces는 전송 계층 보안(TLS)을 사용한 보안 연결만 허용합니다. 인증서를 자동으로 다운로드하고 미리 구성된 `cqlshrc` 구성 파일을 설치하는 `cqlsh-expansion` 유틸리티를 사용할 수 있습니다. 자세한 내용은 이 페이지의 [`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](#using_cqlsh)를 참조하세요.

인증서를 다운로드하고 연결을 수동으로 구성하려면 다음 단계를 사용하면 됩니다.

1.  다음 디지털 인증서를 다운로드하고 파일을 로컬 또는 홈 디렉터리에 저장합니다.

   1. AmazonRootCA1

   1. AmazonRootCA2

   1. AmazonRootCA3

   1. AmazonRootCA4

   1. Starfield 클래스 2 루트(선택 사항 - 이전 버전과의 호환성을 위해)

   인증서를 다운로드하려면 다음 명령을 사용할 수 있습니다.

   ```
   curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
   curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
   curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
   curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
   curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
   ```
**참고**  
Amazon Keyspaces는 이전에 Starfield Class 2 CA에 고정된 TLS 인증서를 사용했습니다. AWS 는 Amazon Trust Services(Amazon Root CA 1\$14)에 따라 발급된 인증서 AWS 리전 로 모두 마이그레이션하고 있습니다. CAs 이 전환 중에 Amazon Root CAs1\$14와 Starfield 루트를 모두 신뢰하도록 클라이언트를 구성하여 모든 리전에서 호환성을 보장합니다.

1. 예제에서 다운로드한 모든 인증서를 *keyspaces-bundle.pem*이라는 이름과 함께 단일 `pem` 파일로 결합합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다. 파일의 경로를 기록해 둡니다. 나중에 필요합니다.

   ```
   cat AmazonRootCA1.pem \
    AmazonRootCA2.pem \
    AmazonRootCA3.pem \
    AmazonRootCA4.pem \
    sf-class2-root.crt \
    > keyspaces-bundle.pem
   ```

1. 예를 들어 `${HOME}/.cassandra/cqlshrc`와 같은 Cassandra 홈 디렉터리에서 `cqlshrc` 구성 파일을 열고 다음 줄을 추가합니다.

   ```
   [connection]
   port = 9142
   factory = cqlshlib.ssl.ssl_transport_factory
   
   [ssl]
   validate = true
   certfile =  path_to_file/keyspaces-bundle.pem
   ```

# AWS CLI 를 사용하여 Amazon Keyspaces에 연결
<a name="access.cli"></a>

 AWS Command Line Interface (AWS CLI)를 사용하여 명령줄에서 여러 AWS 서비스를 제어하고 스크립트를 통해 자동화할 수 있습니다. Amazon Keyspaces를 사용하면 테이블 생성과 같은 데이터 정의 언어(DDL) 작업에 AWS CLI 를 사용할 수 있습니다. 또한 코드형 인프라(IaC) 서비스와 AWS CloudFormation 및 Terraform과 같은 도구를 사용할 수 있습니다.

Amazon Keyspaces AWS CLI 에서를 사용하려면 먼저 액세스 키 ID와 보안 액세스 키를 가져와야 합니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

에서 Amazon Keyspaces에 사용할 수 있는 모든 명령의 전체 목록은 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/keyspaces/index.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/keyspaces/index.html)를 AWS CLI참조하세요.

**Topics**
+ [다운로드 및 구성 AWS CLI](#access.cli.installcli)
+ [Amazon Keyspaces AWS CLI 에서 사용](#access.cli.usingcli)

## 다운로드 및 구성 AWS CLI
<a name="access.cli.installcli"></a>

 AWS CLI 는에서 사용할 수 있습니다[https://aws.amazon.com/cli](https://aws.amazon.com/cli). Windows, macOS 또는 Linux에서 실행됩니다. 를 다운로드한 후 다음 단계에 AWS CLI따라를 설치하고 구성합니다.

1. [AWS Command Line Interface 사용 설명서](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)로 이동합니다.

1. [AWS CLI설치](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 및 [AWS CLI구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 지침을 따릅니다.

## Amazon Keyspaces AWS CLI 에서 사용
<a name="access.cli.usingcli"></a>

명령줄 형식은 Amazon Keyspaces 작업 이름과 해당 작업에 대한 파라미터 순으로 구성됩니다. 는 파라미터 값과 JSON에 대한 간편 구문을 AWS CLI 지원합니다. 다음 Amazon Keyspaces 예제에서는 AWS CLI 간편 구문을 사용합니다. 자세한 내용은 [AWS CLI에서 간편 구문 사용을 참조하세요](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-shorthand.html).

다음 명령은 이름 *카탈로그*와 함께 키스페이스를 생성합니다.

```
aws keyspaces create-keyspace --keyspace-name 'catalog'
```

이 명령은 출력에 리소스 Amazon 리소스 이름(ARN)을 반환합니다.

```
{
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/"
}
```

다음 명령을 사용하여 키스페이스 *카탈로그*가 존재하는지 확인할 수 있습니다.

```
aws keyspaces get-keyspace --keyspace-name 'catalog'
```

명령의 출력은 다음 값을 반환합니다.

```
{
    "keyspaceName": "catalog",
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/"
}
```

다음 명령은 *book\$1awards*라는 이름의 테이블을 생성합니다. 테이블의 파티션 키는 `year` 열과 `award` 열로 구성되며 클러스터링 키는 `category` 열과 `rank` 열로 구성되고, 두 클러스터링 열 모두 오름차순 정렬 순서를 사용합니다. (읽기 쉽도록 이 섹션에서는 긴 명령이 여러 줄로 나누어져 있습니다.)

```
aws keyspaces create-table --keyspace-name 'catalog' --table-name 'book_awards' 
            --schema-definition 'allColumns=[{name=year,type=int},{name=award,type=text},{name=rank,type=int},
            {name=category,type=text}, {name=author,type=text},{name=book_title,type=text},{name=publisher,type=text}],
            partitionKeys=[{name=year},{name=award}],clusteringKeys=[{name=category,orderBy=ASC},{name=rank,orderBy=ASC}]'
```

이 명령은 다음 출력을 반환합니다.

```
{
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/book_awards"
}
```

다음 명령을 사용하여 테이블의 메타데이터 속성을 확인할 수 있습니다.

```
aws keyspaces get-table --keyspace-name 'catalog' --table-name 'book_awards'
```

이 명령은 다음 출력을 반환합니다.

```
{
    "keyspaceName": "catalog",
    "tableName": "book_awards",
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/book_awards",
    "creationTimestamp": 1645564368.628,
    "status": "ACTIVE",
    "schemaDefinition": {
        "allColumns": [
            {
                "name": "year",
                "type": "int"
            },
            {
                "name": "award",
                "type": "text"
            },
            {
                "name": "category",
                "type": "text"
            },
            {
                "name": "rank",
                "type": "int"
            },
            {
                "name": "author",
                "type": "text"
            },
            {
                "name": "book_title",
                "type": "text"
            },
            {
                "name": "publisher",
                "type": "text"
            }
        ],
        "partitionKeys": [
            {
                "name": "year"
            },
            {
                "name": "award"
            }
        ],
        "clusteringKeys": [
            {
                "name": "category",
                "orderBy": "ASC"
            },
            {
                "name": "rank",
                "orderBy": "ASC"
            }
        ],
        "staticColumns": []
    },
    "capacitySpecification": {
        "throughputMode": "PAY_PER_REQUEST",
        "lastUpdateToPayPerRequestTimestamp": 1645564368.628
    },
    "encryptionSpecification": {
        "type": "AWS_OWNED_KMS_KEY"
    },
    "pointInTimeRecovery": {
        "status": "DISABLED"
    },
    "ttl": {
        "status": "ENABLED"
    },
    "defaultTimeToLive": 0,
    "comment": {
        "message": ""
    }
}
```

복잡한 스키마가 포함된 테이블을 만들 때는 JSON 파일에서 테이블의 스키마 정의를 로드하는 것이 유용할 수 있습니다. 다음은 그 예시입니다. [schema\$1definition.zip](samples/schema_definition.zip)의 스키마 정의 예제 JSON 파일을 다운로드하고 `schema_definition.json`의 압축을 푼 다음 파일 경로를 기록해 둡니다. 이 예제에서는 스키마 정의 JSON 파일이 현재 디렉터리에 위치합니다. 다양한 파일 경로 옵션에 대해서는 [파일에서 매개변수를 로드하는 방법](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html#cli-usage-parameters-file-how)을 참조하세요.

```
aws keyspaces create-table --keyspace-name 'catalog' 
            --table-name 'book_awards' --schema-definition 'file://schema_definition.json'
```

다음 예제는 추가 옵션을 사용하여 *myTable*이라는 이름의 간단한 테이블을 만드는 방법을 보여줍니다. 참고로 가독성을 높이기 위해 명령이 별도의 행으로 구분되어 있습니다. 이 명령은 테이블을 만드는 방법을 보여줍니다.
+ 테이블의 용량 모드 설정
+ 테이블 시점 복구 활성화
+ 테이블의 기본 Time to Live(TTL) 값을 1년으로 설정
+ 테이블에 태그 두 개 추가

```
aws keyspaces create-table --keyspace-name 'catalog' --table-name 'myTable' 
            --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' 
            --capacity-specification 'throughputMode=PROVISIONED,readCapacityUnits=5,writeCapacityUnits=5' 
            --point-in-time-recovery 'status=ENABLED' 
            --default-time-to-live '31536000' 
            --tags 'key=env,value=test' 'key=dpt,value=sec'
```

이 예제에서는 암호화에 고객 관리형 키를 사용하고 열과 행의 만료 날짜를 설정할 수 있도록 TTL을 활성화한 새 테이블을 생성하는 방법을 보여줍니다. 이 샘플을 실행하려면 고객 관리형 AWS KMS 키의 리소스 ARN을 자체 키로 바꾸고 Amazon Keyspaces가 액세스할 수 있는지 확인해야 합니다.

```
aws keyspaces create-table --keyspace-name 'catalog' --table-name 'myTable' 
            --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' 
            --encryption-specification 'type=CUSTOMER_MANAGED_KMS_KEY,kmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/11111111-2222-3333-4444-555555555555'  
            --ttl 'status=ENABLED'
```

# API를 사용하여 Amazon Keyspace에 접속
<a name="access.api"></a>

 AWS SDK 및 AWS Command Line Interface (AWS CLI)를 사용하여 Amazon Keyspaces와 대화식으로 작업할 수 있습니다. API를 데이터 언어 정의(DDL) 작업(예: 키스페이스 또는 테이블 생성)에 사용할 수 있습니다. 또한 AWS CloudFormation 및 Terraform과 같은 코드형 인프라(IaC) 서비스 및 도구를 사용할 수 있습니다.

Amazon Keyspaces AWS CLI 에서를 사용하려면 먼저 액세스 키 ID와 보안 액세스 키를 받아야 합니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

API에서 Amazon Keyspaces에 사용할 수 있는 모든 작업의 전체 목록은 [https://docs.aws.amazon.com/keyspaces/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/keyspaces/latest/APIReference/Welcome.html)에서 확인할 수 있습니다.

# Cassandra 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
<a name="programmatic.drivers"></a>

많은 타사 오픈 소스 Cassandra 드라이버를 사용하여 Amazon Keyspaces에 접속할 수 있습니다. Amazon Keyspaces는 Apache Cassandra 버전 3.11.2를 지원하는 Cassandra 드라이버와 호환됩니다. Amazon Keyspaces에서 테스트하고 사용할 것을 권장하는 드라이버와 최신 버전은 다음과 같습니다.
+ `Java v3.3`
+ `Java v4.17`
+ `Python Cassandra-driver 3.29.1`
+ `Node.js cassandra driver -v 4.7.2`
+ `GO using GOCQL v1.6`
+ `.NET CassandraCSharpDriver -v 3.20.1`

Cassandra 드라이버에 대한 자세한 내용은 [Apache Cassandra Client 드라이버](http://cassandra.apache.org/doc/latest/getting_started/drivers.html)를 참조하세요.

**참고**  
시작하는 데 도움이 되도록 인기 있는 드라이버를 통한 Amazon Keyspace에 대한 연결을 설정하는 엔드 투 엔드 코드 예제를 보고 다운로드할 수 있습니다. GitHub에서 [Amazon Keyspaces 예제](https://github.com/aws-samples/amazon-keyspaces-examples)를 참조하세요.

이 장의 튜토리얼에는 Amazon Keyspace에 대한 연결이 성공적으로 설정되었는지 확인하는 간단한 CQL 쿼리가 포함되어 있습니다. Amazon Keyspaces 엔드포인트에 연결한 후 키스페이스 및 테이블을 사용하는 방법을 알아보려면 [Amazon Keyspaces(Apache Cassandra용)에 대한 CQL 언어 참조](cql.md)을 참조하세요. Amazon VPC 엔드포인트에서 Amazon Keyspaces에 접속하는 방법을 보여주는 단계별 튜토리얼은 [자습서: 인터페이스 VPC 엔드포인트를 사용하여 Amazon Keyspaces에 연결](vpc-endpoints-tutorial.md) 섹션을 참조하세요.

**Topics**
+ [Cassandra Java 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_java_driver.md)
+ [Cassandra Python 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_python_driver.md)
+ [Cassandra Node.js 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_nodejs_driver.md)
+ [Cassandra. NET Core 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_dotnetcore_driver.md)
+ [Cassandra Go 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_go_driver.md)
+ [Cassandra Perl 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_perl_driver.md)

# Cassandra Java 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
<a name="using_java_driver"></a>

이 섹션에서는 Java 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다.

**참고**  
Java 17 및 DataStax Java 드라이버 4.17은 현재 베타 지원에서만 사용할 수 있습니다. 자세한 내용은 [https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/](https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/) 단원을 참조하십시오.

Amazon Keyspaces 리소스에 프로그래밍 방식으로 액세스할 수 있는 자격 증명을 사용자와 애플리케이션에 제공하려면 다음 중 하나를 수행할 수 있습니다.
+ 특정 AWS Identity and Access Management (IAM) 사용자와 연결된 서비스별 자격 증명을 생성합니다.
+ 보안을 강화하려면 모든 AWS 서비스에서 사용되는 IAM 자격 증명에 대한 IAM 액세스 키를 생성하는 것이 좋습니다. Cassandra 클라이언트 드라이버용 Amazon Keyspaces SigV4 인증 플러그인을 사용하면 사용자 이름 및 암호 대신 IAM 액세스 키를 사용하여 Amazon Keyspaces에 대한 호출을 인증할 수 있습니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

**참고**  
Spring Boot와 함께 Amazon Keyspaces를 사용하는 방법에 대한 예는 [https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring](https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring)을 참조하세요.

**Topics**
+ [시작하기 전 준비 사항](#using_java_driver.BeforeYouBegin)
+ [서비스별 자격 증명을 사용하는 Apache Cassandra용 DataStax Java 드라이버를 사용하여 Amazon Keyspaces에 접속하는 단계별 튜토리얼](#java_tutorial)
+ [Apache Cassandra용 4.x DataStax Java 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속하는 단계별 튜토리얼](#java_tutorial.SigV4)
+ [Apache Cassandra용 4.x DataStax Java 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속](#java3x_tutorial.SigV4)

## 시작하기 전 준비 사항
<a name="using_java_driver.BeforeYouBegin"></a>

Amazon Keyspaces에 접속하려면 시작하기 전에 다음 작업을 수행해야 합니다.

1. Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다.

   1.  다음 디지털 인증서를 다운로드하고 파일을 로컬 또는 홈 디렉터리에 저장합니다.

      1. AmazonRootCA1

      1. AmazonRootCA2

      1. AmazonRootCA3

      1. AmazonRootCA4

      1. Starfield 클래스 2 루트(선택 사항 - 이전 버전과의 호환성을 위해)

      인증서를 다운로드하려면 다음 명령을 사용할 수 있습니다.

      ```
      curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
      curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
      curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
      curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
      curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
      ```
**참고**  
Amazon Keyspaces는 이전에 Starfield Class 2 CA에 고정된 TLS 인증서를 사용했습니다. AWS 는 Amazon Trust Services(Amazon Root CA 1\$14)에 따라 발급된 인증서 AWS 리전 로 모두 마이그레이션하고 있습니다. CAs 이 전환 중에 Amazon Root CAs1\$14와 Starfield 루트를 모두 신뢰하도록 클라이언트를 구성하여 모든 리전에서 호환성을 보장합니다.

   1. 디지털 인증서를 trustStore 파일로 변환하고 키 스토어에 추가합니다.

      ```
      openssl x509 -outform der -in AmazonRootCA1.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-1 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA2.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-2 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA3.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-3 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA4.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-4 -keystore cassandra_truststore.jks -file temp_file.der
                   
      openssl x509 -outform der -in sf-class2-root.crt -out temp_file.der
      keytool -import -alias cassandra -keystore cassandra_truststore.jks -file temp_file.der
      ```

      마지막 단계에서는 키 스토어의 암호를 생성하고 각 인증서를 신뢰해야 합니다. 대화형 명령은 다음과 같습니다.

      ```
      Enter keystore password:  
      Re-enter new password: 
      Owner: CN=Amazon Root CA 1, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 1, O=Amazon, C=US
      Serial number: 66c9fcf99bf8c0a39e2f0788a43e696365bca
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sun Jan 17 00:00:00 UTC 2038
      Certificate fingerprints:
           SHA1: 8D:A7:F9:65:EC:5E:FC:37:91:0F:1C:6E:59:FD:C1:CC:6A:6E:DE:16
           SHA256: 8E:CD:E6:88:4F:3D:87:B1:12:5B:A3:1A:C3:FC:B1:3D:70:16:DE:7F:57:CC:90:4F:E1:CB:97:C6:AE:98:19:6E
      Signature algorithm name: SHA256withRSA
      Subject Public Key Algorithm: 2048-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: 84 18 CC 85 34 EC BC 0C   94 94 2E 08 59 9C C7 B2  ....4.......Y...
      0010: 10 4E 0A 08                                        .N..
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 2, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 2, O=Amazon, C=US
      Serial number: 66c9fd29635869f0a0fe58678f85b26bb8a37
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: 5A:8C:EF:45:D7:A6:98:59:76:7A:8C:8B:44:96:B5:78:CF:47:4B:1A
           SHA256: 1B:A5:B2:AA:8C:65:40:1A:82:96:01:18:F8:0B:EC:4F:62:30:4D:83:CE:C4:71:3A:19:C3:9C:01:1E:A4:6D:B4
      Signature algorithm name: SHA384withRSA
      Subject Public Key Algorithm: 4096-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: B0 0C F0 4C 30 F4 05 58   02 48 FD 33 E5 52 AF 4B  ...L0..X.H.3.R.K
      0010: 84 E3 66 52                                        ..fR
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 3, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 3, O=Amazon, C=US
      Serial number: 66c9fd5749736663f3b0b9ad9e89e7603f24a
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: 0D:44:DD:8C:3C:8C:1A:1A:58:75:64:81:E9:0F:2E:2A:FF:B3:D2:6E
           SHA256: 18:CE:6C:FE:7B:F1:4E:60:B2:E3:47:B8:DF:E8:68:CB:31:D0:2E:BB:3A:DA:27:15:69:F5:03:43:B4:6D:B3:A4
      Signature algorithm name: SHA256withECDSA
      Subject Public Key Algorithm: 256-bit EC (secp256r1) key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: AB B6 DB D7 06 9E 37 AC   30 86 07 91 70 C7 9C C4  ......7.0...p...
      0010: 19 B1 78 C0                                        ..x.
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 4, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 4, O=Amazon, C=US
      Serial number: 66c9fd7c1bb104c2943e5717b7b2cc81ac10e
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: F6:10:84:07:D6:F8:BB:67:98:0C:C2:E2:44:C2:EB:AE:1C:EF:63:BE
           SHA256: E3:5D:28:41:9E:D0:20:25:CF:A6:90:38:CD:62:39:62:45:8D:A5:C6:95:FB:DE:A3:C2:2B:0B:FB:25:89:70:92
      Signature algorithm name: SHA384withECDSA
      Subject Public Key Algorithm: 384-bit EC (secp384r1) key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: D3 EC C7 3A 65 6E CC E1   DA 76 9A 56 FB 9C F3 86  ...:en...v.V....
      0010: 6D 57 E5 81                                        mW..
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US
      Issuer: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US
      Serial number: 0
      Valid from: Tue Jun 29 17:39:16 UTC 2004 until: Thu Jun 29 17:39:16 UTC 2034
      Certificate fingerprints:
           SHA1: AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A
           SHA256: 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58
      Signature algorithm name: SHA1withRSA (weak)
      Subject Public Key Algorithm: 2048-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.35 Criticality=false
      AuthorityKeyIdentifier [
      KeyIdentifier [
      0000: BF 5F B7 D1 CE DD 1F 86   F4 5B 55 AC DC D7 10 C2  ._.......[U.....
      0010: 0E A9 88 E7                                        ....
      ]
      [OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US]
      SerialNumber: [    00]
      ]
      
      #2: ObjectId: 2.5.29.19 Criticality=false
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: BF 5F B7 D1 CE DD 1F 86   F4 5B 55 AC DC D7 10 C2  ._.......[U.....
      0010: 0E A9 88 E7                                        ....
      ]
      ]
      
      
      Warning:
      The input uses the SHA1withRSA signature algorithm which is considered a security risk. This algorithm will be disabled in a future update.
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      ```

1.  JVM 인수에 trustStore 파일을 첨부합니다.

   ```
   -Djavax.net.ssl.trustStore=path_to_file/cassandra_truststore.jks 
   -Djavax.net.ssl.trustStorePassword=my_password
   ```

## 서비스별 자격 증명을 사용하는 Apache Cassandra용 DataStax Java 드라이버를 사용하여 Amazon Keyspaces에 접속하는 단계별 튜토리얼
<a name="java_tutorial"></a>

다음 단계별 튜토리얼에서는 서비스별 자격 증명을 사용하는 Cassandra용 Java 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다. 구체적으로는 Apache Cassandra용 DataStax Java 드라이버 4.0 버전을 사용합니다.

**Topics**
+ [1단계: 사전 조건](#java_tutorial.prereq)
+ [2단계: 드라이버 구성](#java_tutorial.driverconfiguration)
+ [3단계: 샘플 애플리케이션 실행](#java_tutorial.application)

### 1단계: 사전 조건
<a name="java_tutorial.prereq"></a>

이 튜토리얼에 따르려면 서비스별 자격 증명을 생성하고 Apache Cassandra용 DataStax Java 드라이버를 Java 프로젝트에 추가해야 합니다.
+ [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)의 단계를 완료하여 Amazon Keyspaces IAM 사용자를 위한 서비스별 자격 증명을 생성합니다. IAM 액세스 키를 인증에 사용하려면 [Apache Cassandra용 4.x DataStax Java 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속하는 단계별 튜토리얼](#java_tutorial.SigV4)을 참조하세요.
+ Apache Cassandra용 DataStax Java 드라이버를 Java 프로젝트에 추가합니다. Apache Cassandra 3.11.2를 지원하는 드라이버 버전을 사용하고 있는지 확인하세요. 자세한 내용은 [Apache Cassandra용 DataStax Java 드라이버 설명서](https://github.com/datastax/java-driver)를 참조하세요.

### 2단계: 드라이버 구성
<a name="java_tutorial.driverconfiguration"></a>

애플리케이션용 구성 파일을 생성하여 DataStax Java Cassandra 드라이버에 대한 설정을 지정할 수 있습니다. 이 구성 파일은 기본 설정을 재정의하고 포트 9142를 사용하여 Amazon Keyspaces 서비스 엔드포인트에 접속하도록 드라이버에 지시합니다. 사용 가능한 서비스 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

구성 파일을 생성하고 애플리케이션의 리소스 폴더에 파일을 저장합니다(예: `src/main/resources/application.conf`). `application.conf`을 열고 다음 구성 설정을 열고 추가합니다.

1. **인증 제공자** - `PlainTextAuthProvider` 클래스를 사용하여 인증 제공자를 생성합니다. *ServiceUserName* 및 *ServicePassword*는 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)의 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 일치해야 합니다.
**참고**  
드라이버 구성 파일에 자격 증명을 하드코딩하는 대신 Apache Cassandra용 DataStax Java 드라이버를 위한 인증 플러그인을 통해 단기 자격 증명을 사용할 수 있습니다. 자세히 알아보려면 [Apache Cassandra용 4.x DataStax Java 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속하는 단계별 튜토리얼](#java_tutorial.SigV4)에 대한 안내를 따르세요.

1. **로컬 데이터 센터** - `local-datacenter`에 대한 값을 연결 대상 리전으로 설정합니다. 예를 들어 애플리케이션이 `cassandra.us-east-2.amazonaws.com`에 연결 중인 경우 로컬 데이터 센터를 `us-east-2`로 설정합니다. 사용 가능한 모든 AWS 리전에 대한 자세한 내용은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요. 더 적은 수의 노드에 대해 로드 밸런싱을 수행하도록 `slow-replica-avoidance = false`을 설정합니다.

1. **SSL/TLS** — `class = DefaultSslEngineFactory`를 통해 클래스를 지정하는 한 줄로 구성 파일에 섹션을 추가하여 SSLengineFactory를 초기화합니다. trustStore 파일의 경로와 이전에 만든 암호를 입력합니다. Amazon Keyspaces는 피어의 `hostname-validation`를 지원하지 않으므로 이 옵션을 false로 설정합니다.

```
datastax-java-driver {

    basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]
    advanced.auth-provider{
        class = PlainTextAuthProvider
        username = "ServiceUserName"
        password = "ServicePassword"
    }
    basic.load-balancing-policy {
        local-datacenter = "us-east-2"
        slow-replica-avoidance = false           
    }

    advanced.ssl-engine-factory {
        class = DefaultSslEngineFactory
        truststore-path = "./src/main/resources/cassandra_truststore.jks"
        truststore-password = "my_password"
        hostname-validation = false
      }
}
```

**참고**  
구성 파일에 trustStore 경로를 추가하는 대신 애플리케이션 코드에 trustStore 경로를 직접 추가하거나 trustStore 경로를 JVM 인수에 추가할 수도 있습니다.

### 3단계: 샘플 애플리케이션 실행
<a name="java_tutorial.application"></a>

이 코드 예제는 앞서 만든 구성 파일을 사용하여 Amazon Keyspaces에 대한 연결 풀을 생성하는 간단한 명령줄 애플리케이션을 보여줍니다. 간단한 쿼리를 실행하여 연결이 설정되었는지 확인합니다.

```
package <your package>;
// add the following imports to your project
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;

public class App 
{
    
    public static void main( String[] args )
    {
        //Use DriverConfigLoader to load your configuration file
        DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf");
        try (CqlSession session = CqlSession.builder()
                .withConfigLoader(loader)
                .build()) {

            ResultSet rs = session.execute("select * from system_schema.keyspaces");
            Row row = rs.one();
            System.out.println(row.getString("keyspace_name"));
        }
    }
}
```

**참고**  
`try` 블록을 사용하여 연결이 항상 닫히도록 설정합니다. `try` 블록을 사용하지 않는 경우 리소스 유출을 방지하기 위해 연결을 닫아야 합니다.

## Apache Cassandra용 4.x DataStax Java 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속하는 단계별 튜토리얼
<a name="java_tutorial.SigV4"></a>

다음 섹션에서는 Apache Cassandra용 오픈 소스 4.x DataStax Java 드라이버를 위한 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces(Apache Cassandra용)에 액세스하는 방법을 설명합니다. 플러그인은 [GitHub 리포지토리](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin)에서 다운로드할 수 있습니다.

SigV4 인증 플러그인을 사용하면 Amazon Keyspaces에 접속할 때 사용자 또는 역할에 대한 IAM 자격 증명을 사용할 수 있습니다. 이 플러그인은 사용자 이름과 비밀번호를 요구하는 대신 액세스 키를 사용하여 API 요청에 서명합니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

### 1단계: 사전 조건
<a name="java_tutorial.SigV4.1"></a>

이 튜토리얼을 따르려면 다음 작업을 수행해야 합니다.
+ 아직 수행하지 않은 경우 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md)의 단계에 따라 IAM 사용자 또는 역할의 자격 증명을 생성합니다. 이 튜토리얼에서는 액세스 키가 환경 변수로 저장된다고 가정합니다. 자세한 내용은 [프로그래밍 방식 액세스를 위한 액세스 키 저장](aws.credentials.manage.md) 단원을 참조하십시오.
+ Apache Cassandra용 DataStax Java 드라이버를 Java 프로젝트에 추가합니다. Apache Cassandra 3.11.2를 지원하는 드라이버 버전을 사용하고 있는지 확인하세요. 자세한 내용은 [Apache Cassandra용 DataStax Java 드라이버 설명서](https://github.com/datastax/java-driver)를 참조하세요.
+ 애플리케이션에 인증 플러그인을 추가합니다. 인증 플러그인은 Apache Cassandra용 DataStax Java 드라이버 버전 4.x를 지원합니다. Apache Maven이나 Maven 종속성을 사용할 수 있는 빌드 시스템을 사용하는 경우 `pom.xml` 파일에 다음 종속성을 추가합니다.
**중요**  
[GitHub 리포지토리](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin#add-the-authentication-plugin-to-the-application)에 표시된 대로 플러그인 버전을 최신 버전으로 교체합니다.

  ```
  <dependency>
          <groupId>software.aws.mcs</groupId>
          <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin</artifactId>
          <version>4.0.9</version>
  </dependency>
  ```

### 2단계: 드라이버 구성
<a name="java_tutorial.SigV4.2"></a>

애플리케이션용 구성 파일을 생성하여 DataStax Java Cassandra 드라이버에 대한 설정을 지정할 수 있습니다. 이 구성 파일은 기본 설정을 재정의하고 포트 9142를 사용하여 Amazon Keyspaces 서비스 엔드포인트에 접속하도록 드라이버에 지시합니다. 사용 가능한 서비스 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

구성 파일을 생성하고 애플리케이션의 리소스 폴더에 파일을 저장합니다(예: `src/main/resources/application.conf`). `application.conf`을 열고 다음 구성 설정을 열고 추가합니다.

1. **인증 제공자** - `advanced.auth-provider.class`를 `software.aws.mcs.auth.SigV4AuthProvider`의 새 인스턴스로 설정합니다. SigV4AuthProvider는 SigV4 인증을 수행하기 위해 플러그인에서 제공하는 인증 핸들러입니다.

1. **로컬 데이터 센터** - `local-datacenter`에 대한 값을 연결 대상 리전으로 설정합니다. 예를 들어 애플리케이션이 `cassandra.us-east-2.amazonaws.com`에 연결 중인 경우 로컬 데이터 센터를 `us-east-2`로 설정합니다. 사용 가능한 모든 항목은 섹션을 AWS 리전참조하세요[Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md). 사용 가능한 모든 노드에 대해 로드 밸런싱으로 `slow-replica-avoidance = false`를 설정합니다.

1. **멱등성** - 실패한 읽기/쓰기/준비/실행 요청을 항상 다시 시도하도록 드라이버를 구성하려면 애플리케이션의 기본 `idempotence`를 `true`로 설정합니다. 이는 실패한 요청을 재시도하여 일시적인 실패를 처리하는 데 도움이 되는 분산 애플리케이션의 모범 사례입니다.

1. **SSL/TLS** — `class = DefaultSslEngineFactory`를 통해 클래스를 지정하는 한 줄로 구성 파일에 섹션을 추가하여 SSLengineFactory를 초기화합니다. trustStore 파일의 경로와 이전에 만든 암호를 입력합니다. Amazon Keyspaces는 피어의 `hostname-validation`를 지원하지 않으므로 이 옵션을 false로 설정합니다.

1. **연결** - `local.size = 3`을 설정하여 엔드포인트당 최소 3개의 로컬 연결을 생성합니다. 이는 애플리케이션이 오버헤드 및 트래픽 버스트를 처리하는 데 도움이 되는 모범 사례입니다. 예상 트래픽 패턴을 기반으로 애플리케이션에 필요한 엔드포인트당 로컬 연결 수를 계산하는 방법에 대한 자세한 내용은 [Amazon Keyspaces에서 연결을 구성하는 방법](connections.md#connections.howtoconfigure) 섹션을 참조하세요.

1. **재시도 정책** - Cassandra 드라이버와 함께 제공되는 `DefaultRetryPolicy` 대신 Amazon Keyspaces 재시도 정책 `AmazonKeyspacesExponentialRetryPolicy`를 구현합니다. 이를 통해 필요에 맞는 `AmazonKeyspacesExponentialRetryPolicy`의 재시도 시도 횟수를 구성할 수 있습니다. 기본적으로 `AmazonKeyspacesExponentialRetryPolicy`에 대한 재시도 횟수는 3으로 설정됩니다. 자세한 내용은 [Amazon Keyspaces에서 연결에 대한 재시도 정책을 구성하는 방법](connections.md#connections.retry-policies) 단원을 참조하십시오.

1. **준비된 문** - 네트워크 사용을 최적화하려면 `prepare-on-all-nodes`로 설정합니다.

```
datastax-java-driver {
    basic {
        contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]  
        request {
            timeout = 2 seconds
            consistency = LOCAL_QUORUM
            page-size = 1024
            default-idempotence = true
        }
        load-balancing-policy {
            local-datacenter = "us-east-2"
            class = DefaultLoadBalancingPolicy
            slow-replica-avoidance = false           
        }
    }
    advanced {
        auth-provider {
            class = software.aws.mcs.auth.SigV4AuthProvider
            aws-region = us-east-2
        }
        ssl-engine-factory {
            class = DefaultSslEngineFactory
            truststore-path = "./src/main/resources/cassandra_truststore.jks"
            truststore-password = "my_password"
            hostname-validation = false
        }
        connection {
	     connect-timeout = 5 seconds
	     max-requests-per-connection = 512
	     pool {
                local.size = 3
	     }
        }
       retry-policy {
           class =  com.aws.ssa.keyspaces.retry.AmazonKeyspacesExponentialRetryPolicy
	    max-attempts = 3
	    min-wait = 10 mills
	    max-wait = 100 mills
       }
       prepared-statements {
	    prepare-on-all-nodes = false
       }
    }
}
```

**참고**  
구성 파일에 trustStore 경로를 추가하는 대신 애플리케이션 코드에 trustStore 경로를 직접 추가하거나 trustStore 경로를 JVM 인수에 추가할 수도 있습니다.

### 3단계: 애플리케이션 실행
<a name="java_tutorial.SigV4.3"></a>

이 코드 예제는 앞서 만든 구성 파일을 사용하여 Amazon Keyspaces에 대한 연결 풀을 생성하는 간단한 명령줄 애플리케이션을 보여줍니다. 간단한 쿼리를 실행하여 연결이 설정되었는지 확인합니다.

```
package <your package>;
// add the following imports to your project
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;

public class App 
{
    
    public static void main( String[] args )
    {
        //Use DriverConfigLoader to load your configuration file
        DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf");
        try (CqlSession session = CqlSession.builder()
                .withConfigLoader(loader)
                .build()) {

            ResultSet rs = session.execute("select * from system_schema.keyspaces");
            Row row = rs.one();
            System.out.println(row.getString("keyspace_name"));
        }
    }
}
```

**참고**  
`try` 블록을 사용하여 연결이 항상 닫히도록 설정합니다. `try` 블록을 사용하지 않는 경우 리소스 유출을 방지하기 위해 연결을 닫아야 합니다.

## Apache Cassandra용 4.x DataStax Java 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속
<a name="java3x_tutorial.SigV4"></a>

다음 섹션에서는 Apache Cassandra용 3.x 오픈 소스 DataStax Java 드라이버를 위한 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 액세스하는 방법을 설명합니다. 플러그인은 [GitHub 리포지토리](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin/tree/3.x-Driver-Compatible)에서 다운로드할 수 있습니다.

SigV4 인증 플러그인을 사용하면 Amazon Keyspaces에 접속할 때 사용자 및 역할에 대한 IAM 자격 증명을 사용할 수 있습니다. 이 플러그인은 사용자 이름과 비밀번호를 요구하는 대신 액세스 키를 사용하여 API 요청에 서명합니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

### 1단계: 사전 조건
<a name="java3x_tutorial.SigV4.1"></a>

이 코드 샘플을 실행하려면 먼저 다음 작업을 수행해야 합니다.
+ [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md)의 단계에 따라 IAM 사용자 또는 역할의 자격 증명을 생성합니다. 이 튜토리얼에서는 액세스 키가 환경 변수로 저장된다고 가정합니다. 자세한 내용은 [프로그래밍 방식 액세스를 위한 액세스 키 저장](aws.credentials.manage.md) 단원을 참조하십시오.
+ 의 단계에 따라 디지털 인증서를 다운로드[시작하기 전 준비 사항](#using_java_driver.BeforeYouBegin)하고, 이를 trustStore 파일로 변환하고, JVM 인수의 키 스토어를 애플리케이션에 연결합니다.
+ Apache Cassandra용 DataStax Java 드라이버를 Java 프로젝트에 추가합니다. Apache Cassandra 3.11.2를 지원하는 드라이버 버전을 사용하고 있는지 확인하세요. 자세한 내용은 [Apache Cassandra용 DataStax Java 드라이버 설명서](https://github.com/datastax/java-driver)를 참조하세요.
+ 애플리케이션에 인증 플러그인을 추가합니다. 인증 플러그인은 Apache Cassandra용 DataStax Java 드라이버 버전 3.x를 지원합니다. Apache Maven이나 Maven 종속성을 사용할 수 있는 빌드 시스템을 사용하는 경우 `pom.xml` 파일에 다음 종속성을 추가합니다. [GitHub 리포지토리](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin/tree/3.x-Driver-Compatible)에 표시된 대로 플러그인 버전을 최신 버전으로 교체합니다.

  ```
  <dependency>
          <groupId>software.aws.mcs</groupId>
          <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin_3</artifactId>
          <version>3.0.3</version>
  </dependency>
  ```

### 2단계: 애플리케이션 실행
<a name="java3x_tutorial.SigV4.3"></a>

이 코드 예제는 Amazon Keyspaces에 대한 연결 풀을 생성하는 간단한 명령줄 애플리케이션을 보여줍니다. 간단한 쿼리를 실행하여 연결이 설정되었는지 확인합니다.

```
package <your package>;
// add the following imports to your project

import software.aws.mcs.auth.SigV4AuthProvider;  
import com.datastax.driver.core.Cluster;  
import com.datastax.driver.core.ResultSet;  
import com.datastax.driver.core.Row;  
import com.datastax.driver.core.Session;

public class App 
{
    
    public static void main( String[] args )
    {
        String endPoint = "cassandra.us-east-2.amazonaws.com";  
        int portNumber = 9142;
        Session session = Cluster.builder()  
	                                 .addContactPoint(endPoint)  
	                                 .withPort(portNumber)  
	                                 .withAuthProvider(new SigV4AuthProvider("us-east-2"))  
	                                 .withSSL()  
	                                 .build()  
	                                 .connect();

        ResultSet rs = session.execute("select * from system_schema.keyspaces");  
        Row row = rs.one();  
        System.out.println(row.getString("keyspace_name"));
    }
}
```

사용 노트:

사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

Amazon Keyspace와 함께 Java Driver를 사용할 때 유용한 Java 드라이버 정책, 예제, 모범 사례는 [https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers](https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers) 리포지토리를 참조하십시오.

# Cassandra Python 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
<a name="using_python_driver"></a>

 이 섹션에서는 Python 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다. Amazon Keyspaces 리소스에 프로그래밍 방식으로 액세스할 수 있는 자격 증명을 사용자와 애플리케이션에 제공하려면 다음 중 하나를 수행할 수 있습니다.
+ 특정 AWS Identity and Access Management (IAM) 사용자와 연결된 서비스별 자격 증명을 생성합니다.
+ 보안을 강화하려면 모든 AWS 서비스에서 사용되는 IAM 사용자 또는 역할에 대한 IAM 액세스 키를 생성하는 것이 좋습니다. Cassandra 클라이언트 드라이버용 Amazon Keyspaces SigV4 인증 플러그인을 사용하면 사용자 이름 및 암호 대신 IAM 액세스 키를 사용하여 Amazon Keyspaces에 대한 호출을 인증할 수 있습니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

**Topics**
+ [시작하기 전 준비 사항](#using_python_driver.BeforeYouBegin)
+ [Apache Cassandra용 Python 드라이버와 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 접속합니다.](#python_ssc)
+ [Apache Cassandra용 DataStax Python 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속](#python_SigV4)

## 시작하기 전 준비 사항
<a name="using_python_driver.BeforeYouBegin"></a>

시작하기 전에 다음 작업을 수행해야 합니다.

Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다. TLS를 사용하여 Amazon Keyspaces에 연결하려면 Amazon 디지털 인증서를 다운로드하고 TLS를 사용하도록 Python 드라이버를 구성해야 합니다.

 다음 디지털 인증서를 다운로드하고 파일을 로컬 또는 홈 디렉터리에 저장합니다.

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield 클래스 2 루트(선택 사항 - 이전 버전과의 호환성을 위해)

인증서를 다운로드하려면 다음 명령을 사용할 수 있습니다.

```
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
```

**참고**  
Amazon Keyspaces는 이전에 Starfield Class 2 CA에 고정된 TLS 인증서를 사용했습니다. AWS 는 Amazon Trust Services(Amazon Root CA 1\$14)에 따라 발급된 인증서 AWS 리전 로 모두 마이그레이션하고 있습니다. CAs 이 전환 중에 Amazon Root CAs1\$14와 Starfield 루트를 모두 신뢰하도록 클라이언트를 구성하여 모든 리전에서 호환성을 보장합니다.

예제에서 다운로드한 모든 인증서를 *keyspaces-bundle.pem*이라는 이름과 함께 단일 `pem` 파일로 결합합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다. 파일의 경로를 기록해 둡니다. 나중에 필요합니다.

```
cat AmazonRootCA1.pem \
 AmazonRootCA2.pem \
 AmazonRootCA3.pem \
 AmazonRootCA4.pem \
 sf-class2-root.crt \
 > keyspaces-bundle.pem
```

## Apache Cassandra용 Python 드라이버와 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 접속합니다.
<a name="python_ssc"></a>

다음 코드 예제는 Python 클라이언트 드라이버 및 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 접속하는 방법을 보여줍니다.

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2 )

ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')

ssl_context.verify_mode = CERT_REQUIRED
auth_provider = PlainTextAuthProvider(username='ServiceUserName', password='ServicePassword')
cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

사용 노트:

1. 를 첫 번째 단계에서 저장된 결합된 인증서 파일의 경로`"path_to_file/keyspaces-bundle.pem"`로 바꿉니다.

1. *ServiceUserName*과 *ServicePassword*는 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)에 대한 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 일치해야 합니다.

1. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

## Apache Cassandra용 DataStax Python 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속
<a name="python_SigV4"></a>

다음 섹션에서는 Apache Cassandra용 오픈 소스 DataStax Python 드라이버를 위한 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces(Apache Cassandra용) 에 액세스하는 방법을 설명합니다.

아직 수행하지 않은 경우 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md)의 단계에 따라 IAM 역할의 자격 증명을 생성합니다. 이 튜토리얼에서는 IAM 역할이 필요한 임시 자격 증명을 사용합니다. 임시 자격 증명에 대한 자세한 내용은 [IAM 역할 및 SigV4 플러그인을 생성하여 임시 자격 증명으로 Amazon Keyspaces에 접속](temporary.credentials.IAM.md) 섹션을 참조하세요.

그런 다음 [GitHub 리포지토리](https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin)에서 Python SigV4 인증 플러그인을 환경에 추가합니다.

```
pip install cassandra-sigv4
```

다음 코드 예제는 Cassandra용 오픈 소스 DataStax Python 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속하는 방법을 보여줍니다. 플러그인은 AWS SDK for Python(Boto3)에 따라 달라집니다. `boto3.session`을 통해 임시 자격 증명이 생성됩니다.

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider
import boto3
from cassandra_sigv4.auth import SigV4AuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2)
ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')
ssl_context.verify_mode = CERT_REQUIRED

# use this if you want to use Boto to set the session parameters.
boto_session = boto3.Session(aws_access_key_id="AKIAIOSFODNN7EXAMPLE",
                             aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                             aws_session_token="AQoDYXdzEJr...<remainder of token>",
                             region_name="us-east-2")
auth_provider = SigV4AuthProvider(boto_session)

# Use this instead of the above line if you want to use the Default Credentials and not bother with a session.
# auth_provider = SigV4AuthProvider()

cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider,
                  port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

사용 노트:

1. `"path_to_file/keyspaces-bundle.pem"`을 첫 번째 단계에서 저장한 인증서 경로로 바꿉니다.

1. *aws\$1access\$1key\$1id*, *aws\$1secret\$1access\$1key*, *aws\$1session\$1token*이 `boto3.session`를 사용하여 얻은 `Access Key`, `Secret Access Key`, `Session Token`와 일치하는지 확인합니다. 자세한 내용은 *AWS SDK for Python (Boto3)*의 [자격 증명](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)을 참조하세요.

1. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

# Cassandra Node.js 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
<a name="using_nodejs_driver"></a>

 이 섹션에서는 Node.js 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다. Amazon Keyspaces 리소스에 프로그래밍 방식으로 액세스할 수 있는 자격 증명을 사용자와 애플리케이션에 제공하려면 다음 중 하나를 수행할 수 있습니다.
+ 특정 AWS Identity and Access Management (IAM) 사용자와 연결된 서비스별 자격 증명을 생성합니다.
+ 보안을 강화하려면 모든 AWS 서비스에서 사용되는 IAM 사용자 또는 역할에 대한 IAM 액세스 키를 생성하는 것이 좋습니다. Cassandra 클라이언트 드라이버용 Amazon Keyspaces SigV4 인증 플러그인을 사용하면 사용자 이름 및 암호 대신 IAM 액세스 키를 사용하여 Amazon Keyspaces에 대한 호출을 인증할 수 있습니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

**Topics**
+ [시작하기 전 준비 사항](#using_nodejs_driver.BeforeYouBegin)
+ [Apache Cassandra용 Node.js DataStax 드라이버와 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 접속합니다.](#nodejs_ssc)
+ [Apache Cassandra용 DataStax Node.js 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속](#nodejs_SigV4)

## 시작하기 전 준비 사항
<a name="using_nodejs_driver.BeforeYouBegin"></a>

시작하기 전에 다음 작업을 수행해야 합니다.

Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다. TLS를 사용하여 Amazon Keyspace에 접속하려면 Amazon 디지털 인증서를 다운로드하고 TLS를 사용하도록 Python 드라이버를 구성해야 합니다.

 다음 디지털 인증서를 다운로드하고 파일을 로컬 또는 홈 디렉터리에 저장합니다.

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield 클래스 2 루트(선택 사항 - 이전 버전과의 호환성을 위해)

인증서를 다운로드하려면 다음 명령을 사용할 수 있습니다.

```
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
```

**참고**  
Amazon Keyspaces는 이전에 Starfield Class 2 CA에 고정된 TLS 인증서를 사용했습니다. AWS 는 Amazon Trust Services(Amazon Root CA 1\$14)에 따라 발급된 인증서 AWS 리전 로 모두 마이그레이션하고 있습니다. CAs 이 전환 중에 Amazon Root CAs1\$14와 Starfield 루트를 모두 신뢰하도록 클라이언트를 구성하여 모든 리전에서 호환성을 보장합니다.

예제에서 다운로드한 모든 인증서를 *keyspaces-bundle.pem*이라는 이름과 함께 단일 `pem` 파일로 결합합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다. 파일의 경로를 기록해 둡니다. 나중에 필요합니다.

```
cat AmazonRootCA1.pem \
 AmazonRootCA2.pem \
 AmazonRootCA3.pem \
 AmazonRootCA4.pem \
 sf-class2-root.crt \
 > keyspaces-bundle.pem
```

## Apache Cassandra용 Node.js DataStax 드라이버와 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 접속합니다.
<a name="nodejs_ssc"></a>

 TLS에 결합된 인증서 파일을 사용하고 서비스별 자격 증명을 사용하여 인증하도록 드라이버`keyspaces-bundle.pem`를 구성합니다. 예제: 

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword');
const sslOptions1 = {
         ca: [
                    fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')],      
                    host: 'cassandra.us-west-2.amazonaws.com',
                    rejectUnauthorized: true
        };
const client = new cassandra.Client({
                   contactPoints: ['cassandra.us-west-2.amazonaws.com'],
                   localDataCenter: 'us-west-2',
                   authProvider: auth,
                   sslOptions: sslOptions1,
                   protocolOptions: { port: 9142 }
        });
const query = 'SELECT * FROM system_schema.keyspaces';
 
client.execute(query)
                    .then( result => console.log('Row from Keyspaces %s', result.rows[0]))
                    .catch( e=> console.log(`${e}`));
```

사용 노트:

1. 를 첫 번째 단계에서 저장된 결합된 인증서 파일의 경로`"path_to_file/keyspaces-bundle.pem"`로 바꿉니다.

1. *ServiceUserName*과 *ServicePassword*는 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)에 대한 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 일치해야 합니다.

1. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

## Apache Cassandra용 DataStax Node.js 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속
<a name="nodejs_SigV4"></a>

다음 섹션에서는 Apache Cassandra용 오픈 소스 DataStax Node.js 드라이버를 위한 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces(Apache Cassandra용) 에 액세스하는 방법을 설명합니다.

아직 수행하지 않은 경우 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md)의 단계에 따라 IAM 사용자 또는 역할의 자격 증명을 생성합니다.

[GitHub 리포지토리](https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin)에서 Node.js SigV4 인증 플러그인을 애플리케이션에 추가합니다. 플러그인은 Cassandra용 DataStax Node.js 드라이버 버전 4.x를 지원하며 Node.js용 AWS SDK에 따라 다릅니다. `AWSCredentialsProvider`을 통해 자격 증명이 생성됩니다.

```
$ npm install aws-sigv4-auth-cassandra-plugin --save
```

이 코드 예제는 `SigV4AuthProvider`의 리전별 인스턴스를 인증 공급자로 설정하는 방법을 보여줍니다.

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const sigV4 = require('aws-sigv4-auth-cassandra-plugin');

const auth = new sigV4.SigV4AuthProvider({
    region: 'us-west-2', 
    accessKeyId:'AKIAIOSFODNN7EXAMPLE',
    secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'});

const sslOptions1 = {
  ca: [
      fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')],
  host: 'cassandra.us-west-2.amazonaws.com',
  rejectUnauthorized: true
};


const client = new cassandra.Client({
  contactPoints: ['cassandra.us-west-2.amazonaws.com'],
  localDataCenter: 'us-west-2',
  authProvider: auth,
  sslOptions: sslOptions1,
  protocolOptions: { port: 9142 }
});


const query = 'SELECT * FROM system_schema.keyspaces';

client.execute(query).then(
    result => console.log('Row from Keyspaces %s', result.rows[0]))
    .catch( e=> console.log(`${e}`));
```

사용 노트:

1. `"path_to_file/keyspaces-bundle.pem"`을 첫 번째 단계에서 저장한 인증서 경로로 바꿉니다.

1. *accessKeyID*와 *secretAccessKey*가 `AWSCredentialsProvider`을 사용하여 획득한 액세스 키 및 비밀 액세스 키와 일치하는지 확인합니다. 자세한 내용은 *Node.js의 JavaScript용AWS SDK*의 [Node.js의 자격 증명 설정](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html)을 참조하세요.

1. 액세스 키를 코드 외부에 저장하는 경우의 모범 사례는 [프로그래밍 방식 액세스를 위한 액세스 키 저장](aws.credentials.manage.md) 섹션을 참조하세요.

1. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

# Cassandra. NET Core 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
<a name="using_dotnetcore_driver"></a>

이 섹션에서는 .NET Core 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다. 설정 단계는 환경 및 운영 체제에 따라 다르므로 그에 따라 수정해야 할 수도 있습니다. Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다. TLS를 사용하여 Amazon Keyspaces에 연결하려면 Amazon Root CAs 1-4가 포함된 시스템 트러스트 스토어를 사용하도록 드라이버를 구성합니다.

1.  너겟 콘솔을 사용하여 너겟을 통해 CassandraCSharpDriver를 설치합니다.

   ```
   PM> Install-Package CassandraCSharpDriver
   ```

1. 다음 예제는.NET Core C\$1 콘솔 프로젝트를 사용하여 Amazon Keyspaces에 접속하고 쿼리를 실행합니다.

   ```
   using Cassandra;
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Net.Security;
   using System.Runtime.ConstrainedExecution;
   using System.Security.Cryptography.X509Certificates;
   using System.Text;
   using System.Threading.Tasks;
   
   namespace CSharpKeyspacesExample
   {
       class Program
       {
           public Program(){}
   
           static void Main(string[] args)
           {
               var userName = "ServiceUserName";
               var pwd = "ServicePassword";
               certCollection.Add(amazoncert);
    
               var awsEndpoint =  "cassandra.us-east-2.amazonaws.com" ;  
   
               var cluster = Cluster.Builder()
                        .AddContactPoints(awsEndpoint)
                        .WithPort(9142)
                        .WithAuthProvider(new PlainTextAuthProvider(userName, pwd))
                        .WithSSL(new SSLOptions().SetCertificateCollection(certCollection))
                        .Build();
   
               var session = cluster.Connect();
               var rs = session.Execute("SELECT * FROM system_schema.tables;");
               foreach (var row in rs)
               {
                   var name = row.GetValue<String>("keyspace_name");
                   Console.WriteLine(name);
               }
           }
       }
   }
   ```

사용 노트:

1. Amazon Root CAs 트러스트 스토어를 사용해야 합니다.

1. *ServiceUserName*과 *ServicePassword*는 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)에 대한 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 일치해야 합니다.

1. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

# Cassandra Go 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
<a name="using_go_driver"></a>

이 섹션에서는 Go Cassandra 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다. Amazon Keyspaces 리소스에 프로그래밍 방식으로 액세스할 수 있는 자격 증명을 사용자와 애플리케이션에 제공하려면 다음 중 하나를 수행할 수 있습니다.
+ 특정 AWS Identity and Access Management (IAM) 사용자와 연결된 서비스별 자격 증명을 생성합니다.
+ 보안을 강화하려면 모든 AWS 서비스에서 사용되는 IAM 보안 주체에 대한 IAM 액세스 키를 생성하는 것이 좋습니다. Cassandra 클라이언트 드라이버용 Amazon Keyspaces SigV4 인증 플러그인을 사용하면 사용자 이름 및 암호 대신 IAM 액세스 키를 사용하여 Amazon Keyspaces에 대한 호출을 인증할 수 있습니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

**Topics**
+ [시작하기 전 준비 사항](#using_go_driver.BeforeYouBegin)
+ [Apache Cassandra용 Gocql 드라이버와 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 접속합니다.](#go_ssc)
+ [Apache Cassandra용 Go 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속](#go_SigV4)

## 시작하기 전 준비 사항
<a name="using_go_driver.BeforeYouBegin"></a>

시작하기 전에 다음 작업을 수행해야 합니다.

Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다. TLS를 사용하여 Amazon Keyspace에 접속하려면 Amazon 디지털 인증서를 다운로드하고 TLS를 사용하도록 Go 드라이버를 구성해야 합니다.

 다음 디지털 인증서를 다운로드하고 파일을 로컬 또는 홈 디렉터리에 저장합니다.

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield 클래스 2 루트(선택 사항 - 이전 버전과의 호환성을 위해)

인증서를 다운로드하려면 다음 명령을 사용할 수 있습니다.

```
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
```

**참고**  
Amazon Keyspaces는 이전에 Starfield Class 2 CA에 고정된 TLS 인증서를 사용했습니다. AWS 는 Amazon Trust Services(Amazon Root CA 1\$14)에 따라 발급된 인증서 AWS 리전 로 모두 마이그레이션하고 있습니다. CAs 이 전환 중에 Amazon Root CAs1\$14와 Starfield 루트를 모두 신뢰하도록 클라이언트를 구성하여 모든 리전에서 호환성을 보장합니다.

예제에서 다운로드한 모든 인증서를 *keyspaces-bundle.pem*이라는 이름과 함께 단일 `pem` 파일로 결합합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다. 파일의 경로를 기록해 둡니다. 나중에 필요합니다.

```
cat AmazonRootCA1.pem \
 AmazonRootCA2.pem \
 AmazonRootCA3.pem \
 AmazonRootCA4.pem \
 sf-class2-root.crt \
 > keyspaces-bundle.pem
```

## Apache Cassandra용 Gocql 드라이버와 서비스별 자격 증명을 사용하여 Amazon Keyspaces에 접속합니다.
<a name="go_ssc"></a>

1. 애플리케이션용 디렉터리를 생성합니다.

   ```
   mkdir ./gocqlexample
   ```

1. 새 디렉터리로 이동합니다.

   ```
   cd gocqlexample
   ```

1. 애플리케이션에 대한 파일을 생성합니다.

   ```
   touch cqlapp.go
   ```

1. Go 드라이버를 다운로드합니다.

   ```
   go get github.com/gocql/gocql
   ```

1. 다음 샘플 코드를 cqlapp.go 파일에 추가합니다.

   ```
   package main
   
   import (
   	    "fmt"
   	    "github.com/gocql/gocql"
   	    "log"
   )
   
   func main() {
   
       // add the Amazon Keyspaces service endpoint 
       cluster := gocql.NewCluster("cassandra.us-east-2.amazonaws.com")
       cluster.Port=9142
       // add your service specific credentials
       cluster.Authenticator = gocql.PasswordAuthenticator{
               Username: "ServiceUserName",
               Password: "ServicePassword"}
   
       // provide the path to the keyspaces-bundle.pem
       cluster.SslOpts = &gocql.SslOptions{
               CaPath: "path_to_file/keyspaces-bundle.pem",
               EnableHostVerification: false,            
        }
   
        // Override default Consistency to LocalQuorum
        cluster.Consistency = gocql.LocalQuorum
        cluster.DisableInitialHostLookup = false
   
        session, err := cluster.CreateSession()
        if err != nil {
               fmt.Println("err>", err)
        }
        defer session.Close()
   
        // run a sample query from the system keyspace
        var text string
        iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter()
        for iter.Scan(&text) {
               fmt.Println("keyspace_name:", text)
        }
        if err := iter.Close(); err != nil {
               log.Fatal(err)
        }
        session.Close()
   }
   ```

   사용 노트:

   1. 를 첫 번째 단계에서 저장된 결합된 인증서 파일의 경로`"path_to_file/keyspaces-bundle.pem"`로 바꿉니다.

   1. *ServiceUserName*과 *ServicePassword*는 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)에 대한 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 일치해야 합니다.

   1. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

1. 프로그램을 빌드합니다.

   ```
   go build cqlapp.go
   ```

1. 프로그램을 실행합니다.

   ```
   ./cqlapp
   ```

## Apache Cassandra용 Go 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 접속
<a name="go_SigV4"></a>

다음 코드 샘플에서는 오픈 소스 Go 드라이버를 위한 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces(Apache Cassandra용) 에 액세스하는 방법을 설명합니다.

아직 수행하지 않은 경우 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md)의 단계에 따라 IAM 위탁자의 자격 증명을 생성합니다. 애플리케이션이 Lambda 또는 Amazon EC2 인스턴스에서 실행 중인 경우 애플리케이션은 인스턴스의 자격 증명을 자동으로 사용합니다. 이 자습서를 로컬에서 실행하려면 자격 증명을 로컬 환경 변수로 저장할 수 있습니다.

[GitHub 리포지토리](https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin)에서 Go SigV4 인증 플러그인을 애플리케이션에 추가합니다. 플러그인은 Cassandra용 오픈 소스 Go 드라이버 버전 1.2.x를 지원하며 AWS SDK for Go에 따라 다릅니다.

```
$ go mod init
$ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin
```

이 코드 예제에서 Amazon Keyspaces 엔드포인트는 `Cluster` 클래스로 표현됩니다. 클러스터의 인증 속성에 대한 `AwsAuthenticator`을 통해 자격 증명이 생성됩니다.

```
package main

import (
        "fmt"
        "github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin/sigv4"
        "github.com/gocql/gocql"
        "log"
)

func main() {
    // configuring the cluster options
    cluster := gocql.NewCluster("cassandra.us-west-2.amazonaws.com")
    cluster.Port=9142
    
    // the authenticator uses the default credential chain to find AWS credentials
    cluster.Authenticator = sigv4.NewAwsAuthenticator()

    cluster.SslOpts = &gocql.SslOptions{

            CaPath: "path_to_file/keyspaces-bundle.pem",
            EnableHostVerification: false,
    }
    cluster.Consistency = gocql.LocalQuorum
    cluster.DisableInitialHostLookup = false
   
    session, err := cluster.CreateSession()
    if err != nil {
	    fmt.Println("err>", err)
	    return
    }
    defer session.Close()

    // doing the query
    var text string
    iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter()
    for iter.Scan(&text) {
	    fmt.Println("keyspace_name:", text)
    }
    if err := iter.Close(); err != nil {
	    log.Fatal(err)
    }
}
```

사용 노트:

1. 를 첫 번째 단계에서 저장된 인증서 파일의 경로`"path_to_file/keyspaces-bundle.pem"`로 바꿉니다.

1. 이 예제를 로컬에서 실행하려면 다음 변수를 환경 변수로 정의해야 합니다.
   + `AWS_ACCESS_KEY_ID`
   + `AWS_SECRET_ACCESS_KEY`
   + `AWS_DEFAULT_REGION`

1. 액세스 키를 코드 외부에 저장하는 경우의 모범 사례는 [프로그래밍 방식 액세스를 위한 액세스 키 저장](aws.credentials.manage.md) 섹션을 참조하세요.

1. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

# Cassandra Perl 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
<a name="using_perl_driver"></a>

이 섹션에서는 Perl 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다. 이 코드 샘플에서는 Perl 5를 사용했습니다. Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다.

**중요**  
Amazon Keyspacescertificates가 Amazon Trust Services(ATS) 계층 구조로 전환되고 있습니다. 이 교체 중에 연결 오류가 발생하지 않도록 환경이 Amazon Root CAs 1\$14를 신뢰하는지 확인합니다. Perl 드라이버는 서버의 Amazon SSL 인증서를 검증하지 않으므로 Amazon Keyspaces에 접속하고 있는지 확인할 수 없습니다. 두 번째 단계는 Amazon Keyspaces에 접속해야 할 때 TLS를 사용하도록 드라이버를 구성하고 클라이언트와 서버 간에 전송되는 데이터가 암호화되도록 하는 것입니다.

1. [https://metacpan.org/pod/DBD::Cassandra](https://metacpan.org/pod/DBD::Cassandra)에서 Cassandra DBI 드라이버를 다운로드하여 Perl 환경에 설치합니다. 정확한 단계는 환경에 따라 달라집니다. 다음은 일반적인 예제입니다.

   ```
   cpanm DBD::Cassandra
   ```

1. 애플리케이션에 대한 파일을 생성합니다.

   ```
   touch cqlapp.pl
   ```

1. 다음 샘플 코드를 cqlapp.pl 파일에 추가합니다.

   ```
   use DBI;
   my $user = "ServiceUserName";
   my $password = "ServicePassword";
   my $db = DBI->connect("dbi:Cassandra:host=cassandra.us-east-2.amazonaws.com;port=9142;tls=1;", 
   $user, $password);
   
   my $rows = $db->selectall_arrayref("select * from system_schema.keyspaces"); 
   print "Found the following Keyspaces...\n"; 
   for my $row (@$rows) { 
         print join(" ",@$row['keyspace_name']),"\n"; 
   } 
   
   $db->disconnect;
   ```
**중요**  
 *ServiceUserName*과 *ServicePassword*는 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 만들기](programmatic.credentials.ssc.md)에 대한 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 일치해야 합니다.
**참고**  
사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

1. 애플리케이션을 실행합니다.

   ```
   perl cqlapp.pl
   ```

# VPC 엔드포인트를 사용하여 Amazon Keyspaces에 대한 교차 계정 액세스 구성
<a name="access.cross-account"></a>

별도의 AWS 계정 를 생성하고 사용하여 리소스를 격리하고 개발 및 프로덕션과 같은 다양한 환경에서 사용할 수 있습니다. 이 주제에서는 Amazon Virtual Private Cloud에서 인터페이스 VPC 엔드포인트를 통한 Amazon Keyspaces의 크로스 계정 액세스를 안내합니다. IAM 크로스 계정 액세스 구성에 대한 자세한 내용은 IAM 사용 설명서의 [개별 개발 계정과 프로덕션 계정을 사용하는 예제 시나리오](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html#id_roles_common-scenarios_aws-accounts-example) 섹션을 참조하세요.

Amazon Keyspaces와 프라이빗 VPC 엔드포인트에 대한 자세한 내용은 [인터페이스 VPC 엔드포인트에서 Amazon Keyspaces 사용](vpc-endpoints.md) 섹션을 참조하세요.

**Topics**
+ [공유 VPC에서의 교차 계정 액세스 구성](access.cross-account.sharedVPC.md)
+ [공유 VPC 없이 교차 계정 액세스 구성](access.cross-account.noVPC.setup.md)

# 공유 VPC에서 VPC 엔드포인트를 사용하여 Amazon Keyspaces에 대한 교차 계정 액세스 구성
<a name="access.cross-account.sharedVPC"></a>

다른를 생성 AWS 계정 하여 애플리케이션과 리소스를 분리할 수 있습니다. 예를 들어 Amazon Keyspaces 테이블에 대한 계정 하나, 개발 환경의 애플리케이션 계정 하나, 프로덕션 환경의 애플리케이션 계정 하나를 생성할 수 있습니다. 이 주제에서는 공유 VPC의 인터페이스 VPC 엔드포인트를 사용하여 Amazon Keyspaces에 대한 크로스 계정 액세스를 설정하는 데 필요한 구성 단계를 안내합니다.

Amazon Keyspaces의 VPC 엔드포인트를 구성하는 방법에 대한 자세한 단계는 [3단계: Amazon Keyspaces에 대한 VPC 엔드포인트 생성](vpc-endpoints-tutorial.create-endpoint.md) 섹션을 참조하세요.

이 예제에서는 공유 VPC에서 다음 세 개의 계정을 사용합니다.
+ `Account A:111111111111` — 이 계정에는 VPC 엔드포인트, VPC 서브넷, Amazon Keyspaces 테이블을 비롯한 인프라가 포함되어 있습니다.
+ `Account B:222222222222` — 이 계정에는 `Account A:111111111111`에서 Amazon Keyspaces 테이블에 연결해야 하는 개발 환경의 애플리케이션이 포함되어 있습니다.
+ `Account C:333333333333` — 이 계정에는 `Account A:111111111111`에서 Amazon Keyspaces 테이블에 연결해야 하는 프로덕션 환경의 애플리케이션이 포함되어 있습니다.

![\[공유 VPC를 사용하는 동일한 AWS 리전 에서 동일한 조직이 소유한 세 개의 계정을 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/images/keyspaces_cross-account_sharedVPC.png)


`Account A:111111111111`는 `Account B:222222222222` 및가 액세스`Account C:333333333333`해야 하는 리소스(Amazon Keyspaces 테이블)가 포함된 계정이고 `Account A:111111111111`는 *신뢰할 수* 있는 계정입니다. `Account B:222222222222` 및 `Account C:333333333333`는의 리소스(Amazon Keyspaces 테이블)에 액세스해야 하는 보안 주체가 있는 계정`Account A:111111111111`이므로 `Account B:222222222222` 및 `Account C:333333333333`는 *신뢰할* 수 있는 계정입니다. 신뢰하는 계정은 IAM 역할을 공유하여 신뢰 받는 계정에 권한을 부여합니다. 다음 절차에서는 `Account A:111111111111`에서 필요한 구성 단계를 간략하게 설명합니다.

**`Account A:111111111111`에 대한 구성**

1.  AWS Resource Access Manager 를 사용하여 서브넷에 대한 리소스 공유를 생성하고 프라이빗 서브넷을 `Account B:222222222222` 및와 공유합니다`Account C:333333333333`.

   `Account B:222222222222` 및 `Account C:333333333333`는 공유된 서브넷에서 리소스를 보고 생성할 수 있습니다.

1. 기반 Amazon Keyspaces 프라이빗 VPC 엔드포인트를 생성합니다 AWS PrivateLink. 이렇게 하면 Amazon Keyspaces 서비스 엔드포인트에 대한 공유 서브넷 전체와 DNS 항목에 걸쳐 공유되는 여러 엔드포인트가 생성됩니다.

1. Amazon Keyspaces 키스페이스 및 테이블을 생성합니다.

1. Amazon Keyspaces 테이블에 대한 `Account A:111111111111` 전체 액세스 권한, Amazon Keyspaces 시스템 테이블에 대한 읽기 액세스 권한이 있고 다음 정책 예제와 같이 Amazon EC2 VPC 리소스를 설명할 수 있는에서 IAM 역할을 생성합니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountAccess",
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeNetworkInterfaces",
                   "ec2:DescribeVpcEndpoints",
                   "cassandra:*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. `Account B:222222222222` 및가 역할을 신뢰할 수 있는 계정으로 수임할 `Account C:333333333333` 수 `Account A:111111111111` 있도록에서 IAM 역할에 대한 신뢰 정책을 구성합니다. 방법은 다음 예제와 같습니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::222222222222:role/Cross-Account-Role-B",
             "arn:aws:iam::333333333333:role/Cross-Account-Role-C"
           ]
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

   크로스 계정 IAM 정책에 대한 자세한 내용은 IAM 사용 설명서의 [크로스 계정 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)을 참조하세요.

**`Account B:222222222222` 및 `Account C:333333333333`에서의 구성**

1. `Account B:222222222222`및 `Account C:333333333333`에서 새 역할을 만들고 `Account A:111111111111`에서 생성된 공유 역할을 주체가 맡도록 허용하는 다음 정책을 연결합니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ec2.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

   보안 주체가 공유 역할을 수임하도록 허용하는 것은 AWS Security Token Service ()의 `AssumeRole` API를 사용하여 구현됩니다AWS STS. 자세한 내용은 [ IAM 사용 설명서의 소유한 다른의 IAM 사용자에게 액세스 권한 제공을 참조 AWS 계정 하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html).

1. `Account B:222222222222` 및 `Account C:333333333333`에서는 SIGV4 인증 플러그인을 활용하는 애플리케이션을 생성할 수 있습니다. 그러면 애플리케이션이 공유 역할을 맡아 공유 VPC의 VPC 엔드포인트를 통해 `Account A:111111111111`에 위치한 Amazon Keyspaces 테이블에 연결할 수 있습니다. SIGV4에 대한 자세한 내용은 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 자격 증명 만들기](programmatic.credentials.md) 섹션을 참조하세요. 다른 AWS 계정의 역할을 수임하도록 애플리케이션을 구성하는 방법에 대한 자세한 내용은 SDK 및 도구 참조 안내서의 [인증 및 액세스를](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) 참조하세요. *AWS SDKs *

# 공유 VPC 없이 Amazon Keyspaces에 대한 교차 계정 액세스 구성
<a name="access.cross-account.noVPC.setup"></a>

Amazon Keyspaces 테이블과 프라이빗 VPC 엔드포인트를 서로 다른 계정에서 소유하고 있지만 VPC를 공유하지는 않는 경우에도 애플리케이션은 VPC 엔드포인트를 사용하여 크로스 계정을 연결할 수 있습니다. 계정이 VPC 엔드포인트를 공유하지 않으므로 `Account A:111111111111`, `Account B:222222222222`, `Account C:333333333333`에 자체 VPC 엔드포인트가 필요합니다. Cassandra 클라이언트 드라이버에게 Amazon Keyspaces는 다중 노드 클러스터가 아닌 단일 노드처럼 보입니다. 연결 시 클라이언트 드라이버는 DNS 서버에 도달하여 계정의 VPC에서 사용 가능한 엔드포인트 중 하나를 반환합니다.

퍼블릭 엔드포인트를 사용하거나 각 계정에 프라이빗 VPC 엔드포인트를 배포하여 공유 VPC 엔드포인트 없이 여러 계정의 Amazon Keyspaces 테이블에 액세스할 수도 있습니다. 공유 VPC를 사용하지 않는 경우 각 계정에는 자체 VPC 엔드포인트가 필요합니다. 이 예제에서는 `Account A:111111111111`, `Account B:222222222222`, `Account C:333333333333`에 자체 VPC 엔드포인트가 있어야 `Account A:111111111111`의 테이블에 액세스할 수 있습니다. 이 구성에서 VPC 엔드포인트를 사용하는 경우 Amazon Keyspaces는 Cassandra 클라이언트 드라이버에 다중 노드 클러스터 대신 단일 노드 클러스터로 나타납니다. 연결 시 클라이언트 드라이버는 DNS 서버에 도달하여 계정의 VPC에서 사용 가능한 엔드포인트 중 하나를 반환합니다. 하지만 클라이언트 드라이버는 `system.peers` 테이블에 액세스하여 추가 엔드포인트를 검색할 수 없습니다. 사용 가능한 호스트가 적기 때문에 드라이버의 연결 수가 줄어듭니다. 이를 조정하려면 드라이버의 연결 풀 설정을 3배 늘립니다.

![\[공유 VPC가 없는 동일한 AWS 리전 에서 동일한 조직이 소유한 세 개의 계정을 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/images/keyspaces_cross-account_noVPC.png)


`Account A:111111111111`는 `Account B:222222222222` 및가 액세스`Account C:333333333333`해야 하는 리소스(Amazon Keyspaces 테이블)가 포함된 계정이고 `Account A:111111111111`는 *신뢰할 수* 있는 계정입니다. `Account B:222222222222` 및 `Account C:333333333333`는의 리소스(Amazon Keyspaces 테이블)에 액세스해야 하는 보안 주체가 있는 계정`Account A:111111111111`이므로 `Account B:222222222222` 및 `Account C:333333333333`는 *신뢰할* 수 있는 계정입니다. 신뢰하는 계정은 IAM 역할을 공유하여 신뢰 받는 계정에 권한을 부여합니다. 다음 절차에서는 `Account A:111111111111`에서 필요한 구성 단계를 간략하게 설명합니다.

**`Account A:111111111111`에 대한 구성**

1. 에서 Amazon Keyspaces 키스페이스 및 테이블을 생성합니다`Account A:111111111111`.

1. Amazon Keyspaces 테이블에 대한 전체 액세스 권한과 Amazon Keyspaces 시스템 테이블에 대한 읽기 액세스 권한이 `Account A:111111111111` 있는에서 IAM 역할을 생성합니다.

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "cassandra:Select",
               "cassandra:Modify"
            ],
            "Resource":[
               "arn:aws:cassandra:us-east-1:111111111111:/keyspace/mykeyspace/table/mytable",
               "arn:aws:cassandra:us-east-1:111111111111:/keyspace/system*"
            ]
         }
      ]
   }
   ```

1. `Account B:222222222222` 및의 보안 주체가 역할을 신뢰할 수 있는 계정으로 수임할 `Account C:333333333333` 수 `Account A:111111111111` 있도록에서 IAM 역할에 대한 신뢰 정책을 구성합니다. 방법은 다음 예제와 같습니다.

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::222222222222:role/Cross-Account-Role-B",
             "arn:aws:iam::333333333333:role/Cross-Account-Role-C"
           ]
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

   크로스 계정 IAM 정책에 대한 자세한 내용은 IAM 사용 설명서의 [크로스 계정 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)을 참조하세요.

1. 에서 VPC 엔드포인트를 구성`Account A:111111111111`하고 및가 VPC 엔드포인트를 `Account A` 사용하여에서 역할을 수임`Account B:222222222222``Account C:333333333333`할 수 있는 권한을 엔드포인트에 연결합니다. 이러한 권한은 연결된 VPC 엔드포인트에 유효합니다. VPC 엔드포인트 정책에 대한 자세한 내용은 [Amazon Keyspaces의 인터페이스 VPC 엔드포인트에 대한 액세스 제어](vpc-endpoints.md#interface-vpc-endpoints-policies) 섹션을 참조하세요.

   ```
   {{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowAccessfromSpecificIAMroles",
         "Effect": "Allow",
         "Action": "cassandra:*",
         "Resource": "*",
         "Principal": "*",
         "Condition": {
           "ArnEquals": {
             "aws:PrincipalArn": [
               "arn:aws:iam::222222222222:role/Cross-Account-Role-B",
               "arn:aws:iam::333333333333:role/Cross-Account-Role-C"
             ]
           }
         }
       }
     ]
   }
   ```

**`Account B:222222222222` 및 `Account C:333333333333`에서의 구성**

1. `Account B:222222222222`및 `Account C:333333333333`에서 새 역할을 만들고 `Account A:111111111111`에서 생성된 공유 역할을 주체가 맡도록 허용하는 다음 정책을 연결합니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": {
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::111111111111:role/keyspaces_access"
           }
   }
   ```

   보안 주체가 공유 역할을 수임하도록 허용하는 것은 AWS Security Token Service ()의 `AssumeRole` API를 사용하여 구현됩니다AWS STS. 자세한 내용은 [ IAM 사용 설명서의 소유한 다른의 IAM 사용자에게 액세스 권한 제공을 참조 AWS 계정 하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html).

1. `Account B:222222222222` 및에서 SIGV4 인증 플러그인을 활용하는 애플리케이션을 생성할 `Account C:333333333333`수 있습니다. 그러면 애플리케이션이 공유 역할을 수임하여에 있는 Amazon Keyspaces 테이블에 연결할 수 있습니다`Account A:111111111111`. SIGV4에 대한 자세한 내용은 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 자격 증명 만들기](programmatic.credentials.md) 섹션을 참조하세요. 다른 AWS 계정의 역할을 수임하도록 애플리케이션을 구성하는 방법에 대한 자세한 내용은 SDK 및 도구 참조 안내서의 [인증 및 액세스를](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) 참조하세요. *AWS SDKs *