기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Cassandra Java 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스
이 섹션에서는 Java 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 방법을 소개합니다.
참고
자바 17 및 DataStax 자바 드라이버 4.17은 현재 베타 지원만 가능합니다. 자세한 정보는 https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/
Amazon Keyspaces 리소스에 프로그래밍 방식으로 액세스할 수 있는 보안 인증 정보를 사용자와 애플리케이션에 제공하려면 다음 중 하나를 수행할 수 있습니다.
-
특정 AWS Identity and Access Management (IAM) 사용자와 연결된 서비스별 보안 인증 정보를 생성합니다.
-
보안 강화를 위해 모든 서비스에서 사용되는 IAM ID용 IAM 액세스 키를 생성하는 것이 좋습니다. AWS Cassandra 클라이언트 드라이버용 Amazon Keyspaces SigV4 인증 플러그인을 사용하면 사용자 이름 및 암호 대신 IAM 액세스 키를 사용하여 Amazon Keyspaces에 대한 호출을 인증할 수 있습니다. 자세한 정보는 생성 및 구성 AWS Amazon Keyspace의 자격 증명을 참조하세요.
참고
Spring Boot와 함께 Amazon Keyspaces를 사용하는 방법에 대한 예는 https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring
주제
시작하기 전 준비 사항
Amazon Keyspaces에 접속하려면 시작하기 전에 다음 작업을 수행해야 합니다.
Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다.
다음 명령을 사용하여 Starfield 디지털 인증서를 다운로드하고
sf-class2-root.crt
를 로컬 또는 홈 디렉터리에 저장합니다.curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
참고
또한 Amazon 디지털 인증서를 사용하여 Amazon Keyspaces에 접속할 수 있으며, 클라이언트가 Amazon Keyspaces에 성공적으로 접속하면 계속 접속할 수 있습니다. Starfield 인증서는 이전 인증 기관을 사용하는 클라이언트에게 추가적인 이전 버전과의 호환성을 제공합니다.
Starfield 디지털 인증서를 trustStore 파일로 변환합니다.
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: 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: MD5: 32:4A:4B:BB:C8:63:69:9B:BE:74:9A:C6:DD:1D:46:24 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 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 .... ] ] Trust this certificate? [no]: y
-
JVM 인수에 trustStore 파일을 첨부합니다.
-Djavax.net.ssl.trustStore=
path_to_file
/cassandra_truststore.jks -Djavax.net.ssl.trustStorePassword=my_password
서비스별 자격 증명을 사용하여 Apache Cassandra용 DataStax Java 드라이버를 사용하여 Amazon Keyspaces에 연결하는 방법에 대한 tep-by-step 자습서
다음 step-by-step 자습서는 서비스별 자격 증명을 사용하여 Cassandra용 Java 드라이버를 사용하여 Amazon Keyspace에 연결하는 방법을 안내합니다. 구체적으로 말하자면, 아파치 카산드라용 자바 드라이버 4.0 버전을 사용하게 될 것입니다. DataStax
1단계: 사전 조건
이 자습서를 따르려면 서비스별 자격 증명을 생성하고 Apache Cassandra용 DataStax Java 드라이버를 Java 프로젝트에 추가해야 합니다.
Amazon Keyspace에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 생성의 단계를 완료하여 Amazon Keyspaces IAM 사용자를 위한 서비스별 보안 인증 정보를 생성합니다. IAM 액세스 키를 인증에 사용하려면 아파치 카산드라용 4.x DataStax 자바 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 연결하는 방법에 대한 tep-by-step 자습서을 참조하세요.
아파치 카산드라용 DataStax 자바 드라이버를 자바 프로젝트에 추가합니다. Apache Cassandra 3.11.2를 지원하는 드라이버 버전을 사용하고 있는지 확인하세요. 자세한 내용은 Apache Cassandra용 DataStax Java 드라이버 설명서를
참조하십시오.
2단계: 드라이버 구성
애플리케이션의 구성 파일을 생성하여 DataStax Java Cassandra 드라이버의 설정을 지정할 수 있습니다. 이 구성 파일은 기본 설정을 재정의하고 포트 9142를 사용하여 Amazon Keyspaces 서비스 엔드포인트에 접속하도록 드라이버에 지시합니다. 사용 가능한 서비스 엔드포인트 목록은 Amazon Keyspaces의 서비스 엔드포인트 섹션을 참조하세요.
구성 파일을 생성하고 애플리케이션의 리소스 폴더에 파일을 저장합니다(예: src/main/resources/application.conf
). application.conf
을 열고 다음 구성 설정을 열고 추가합니다.
인증 제공자 -
PlainTextAuthProvider
클래스를 사용하여 인증 제공자를 생성합니다.ServiceUser이름은
의 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와ServicePassword
일치해야 합니다. Amazon Keyspace에 프로그래밍 방식으로 액세스하기 위한 서비스별 자격 증명 생성참고
드라이버 구성 파일에 자격 증명을 하드코딩하는 대신 Apache Cassandra용 DataStax Java 드라이버용 인증 플러그인을 사용하여 단기 자격 증명을 사용할 수 있습니다. 자세히 알아보려면 아파치 카산드라용 4.x DataStax 자바 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 연결하는 방법에 대한 tep-by-step 자습서에 대한 안내를 따르세요.
로컬 데이터 센터 -
local-datacenter
에 대한 값을 연결 대상 리전으로 설정합니다. 예를 들어 애플리케이션이cassandra.us-east-2.amazonaws.com
에 연결 중인 경우 로컬 데이터 센터를us-east-2
로 설정합니다. 사용 가능한 모든 AWS 리전에 대한 자세한 내용은 Amazon Keyspaces의 서비스 엔드포인트 섹션을 참조하세요. 더 적은 수의 노드에 대해 로드 밸런싱을 수행하도록slow-replica-avoidance = false
을 설정합니다.SSL/TLS — 클래스를 지정하는 한 줄로 구성 파일에 섹션을 EngineFactory 추가하여 SSL을 초기화합니다.
class = DefaultSslEngineFactory
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단계: 샘플 애플리케이션 실행
이 코드 예제는 앞서 만든 구성 파일을 사용하여 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
블록을 사용하지 않는 경우 리소스 유출을 방지하기 위해 연결을 닫아야 합니다.
아파치 카산드라용 4.x DataStax 자바 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 연결하는 방법에 대한 tep-by-step 자습서
다음 섹션에서는 Apache Cassandra용 오픈 소스 4.x DataStax Java 드라이버용 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces (Apache Cassandra용) 에 액세스하는 방법을 설명합니다. 플러그인은 리포지토리에서 GitHub사용할
SigV4 인증 플러그인을 사용하면 Amazon Keyspaces에 접속할 때 사용자 또는 역할에 대한 IAM 보안 인증 정보를 사용할 수 있습니다. 이 플러그인은 사용자 이름과 비밀번호를 요구하는 대신 액세스 키를 사용하여 API 요청에 서명합니다. 자세한 정보는 생성 및 구성 AWS Amazon Keyspace의 자격 증명을 참조하세요.
1단계: 사전 조건
이 튜토리얼을 따르려면 다음 작업을 수행해야 합니다.
아직 수행하지 않은 경우 생성 및 구성 AWS Amazon Keyspace의 자격 증명의 단계에 따라 IAM 사용자 또는 역할의 보안 인증 정보를 생성합니다. 이 튜토리얼에서는 액세스 키가 환경 변수로 저장된다고 가정합니다. 자세한 정보는 사용자의 액세스 키 저장 IAM을 참조하세요.
아파치 카산드라용 DataStax 자바 드라이버를 자바 프로젝트에 추가하세요. Apache Cassandra 3.11.2를 지원하는 드라이버 버전을 사용하고 있는지 확인하세요. 자세한 내용은 Apache Cassandra용 DataStax 자바 드라이버 설명서를
참조하십시오. 애플리케이션에 인증 플러그인을 추가합니다. 인증 플러그인은 아파치 카산드라용 DataStax Java 드라이버 버전 4.x를 지원합니다. Apache Maven이나 Maven 종속성을 사용할 수 있는 빌드 시스템을 사용하는 경우
pom.xml
파일에 다음 종속성을 추가합니다.<dependency> <groupId>software.aws.mcs</groupId> <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin</artifactId> <version>
4.0.9
</version> </dependency>
2단계: 드라이버 구성
애플리케이션에 대한 구성 파일을 생성하여 DataStax Java Cassandra 드라이버의 설정을 지정할 수 있습니다. 이 구성 파일은 기본 설정을 재정의하고 포트 9142를 사용하여 Amazon Keyspaces 서비스 엔드포인트에 접속하도록 드라이버에 지시합니다. 사용 가능한 서비스 엔드포인트 목록은 Amazon Keyspaces의 서비스 엔드포인트 섹션을 참조하세요.
구성 파일을 생성하고 애플리케이션의 리소스 폴더에 파일을 저장합니다(예: src/main/resources/application.conf
). application.conf
을 열고 다음 구성 설정을 열고 추가합니다.
인증 제공자 -
advanced.auth-provider.class
를software.aws.mcs.auth.SigV4AuthProvider
의 새 인스턴스로 설정합니다. AuthProvider SigV4는 SigV4 인증을 수행하기 위해 플러그인에서 제공하는 인증 핸들러입니다.로컬 데이터 센터 -
local-datacenter
에 대한 값을 연결 대상 리전으로 설정합니다. 예를 들어 애플리케이션이cassandra.us-east-2.amazonaws.com
에 연결 중인 경우 로컬 데이터 센터를us-east-2
로 설정합니다. 사용 가능한 모든 정보는 을 참조하십시오. AWS 리전Amazon Keyspaces의 서비스 엔드포인트 사용 가능한 모든 노드에 대해 로드 밸런싱을slow-replica-avoidance = false
수행하도록 설정합니다.Idempotence - 실패한
idempotence
읽기/쓰기/준비/실행 요청을 항상 재시도하도록true
드라이버를 구성하도록 응용 프로그램의 기본값을 설정합니다. 이는 실패한 요청을 재시도하여 일시적인 오류를 처리하는 데 도움이 되는 분산 응용 프로그램을 위한 모범 사례입니다.SSL/TLS — 클래스를 지정하는 한 줄로 구성 파일에 섹션을 EngineFactory 추가하여 SSL을 초기화합니다.
class = DefaultSslEngineFactory
trustStore 파일의 경로와 이전에 만든 암호를 입력합니다. Amazon Keyspaces는 피어의hostname-validation
를 지원하지 않으므로 이 옵션을 false로 설정합니다.연결 - 설정을 통해 엔드포인트당 최소 3개의 로컬 연결을 생성합니다.
local.size = 3
이는 애플리케이션이 오버헤드 및 트래픽 버스트를 처리하는 데 도움이 되는 모범 사례입니다. 예상 트래픽 패턴을 기반으로 애플리케이션에 필요한 엔드포인트당 로컬 연결 수를 계산하는 방법에 대한 자세한 내용은 을 참조하십시오. Amazon Keyspaces에서 연결을 구성하는 방법재시도 정책 — Amazon Keyspaces 재시도
AmazonKeyspacesExponentialRetryPolicy
정책은 Cassandra 드라이버와 함께 제공되는 정책 대신 사용할 수DefaultRetryPolicy
있습니다. 두 재시도 정책의 주요 차이점은 필요에 맞게 재시도 횟수를 구성할 수 있다는 것입니다.AmazonKeyspacesExponentialRetryPolicy
기본적으로 에 대한 재시도 횟수는 3으로AmazonKeyspacesExponentialRetryPolicy
설정됩니다. 또한 Amazon Keyspaces 재시도 정책은 제네릭을 반환하지 않습니다.NoHostAvailableException
대신 Amazon Keyspaces 재시도 정책은 서비스에서 반환한 원래 예외를 다시 전달합니다. 재시도 정책을 구현하는 추가 코드 예제는 Github의 Amazon Keyspaces 재시도정책을 참조하십시오. 준비된 명령문 — 네트워크 사용을
prepare-on-all-nodes
최적화하려면 false로 설정하십시오.
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단계: 애플리케이션 실행
이 코드 예제는 앞서 만든 구성 파일을 사용하여 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
블록을 사용하지 않는 경우 리소스 유출을 방지하기 위해 연결을 닫아야 합니다.
아파치 카산드라용 3.x DataStax 자바 드라이버와 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 연결합니다.
다음 섹션에서는 Apache Cassandra용 3.x 오픈 소스 DataStax Java 드라이버용 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces에 액세스하는 방법을 설명합니다. 플러그인은 리포지토리에서 GitHub 사용할
SigV4 인증 플러그인을 사용하면 Amazon Keyspaces에 접속할 때 사용자 및 역할에 대한 IAM 보안 인증 정보를 사용할 수 있습니다. 이 플러그인은 사용자 이름과 비밀번호를 요구하는 대신 액세스 키를 사용하여 API 요청에 서명합니다. 자세한 정보는 생성 및 구성 AWS Amazon Keyspace의 자격 증명을 참조하세요.
1단계: 사전 조건
이 코드 샘플을 실행하려면 먼저 다음 작업을 수행해야 합니다.
생성 및 구성 AWS Amazon Keyspace의 자격 증명의 단계에 따라 IAM 사용자 또는 역할의 보안 인증 정보를 생성합니다. 이 튜토리얼에서는 액세스 키가 환경 변수로 저장된다고 가정합니다. 자세한 정보는 사용자의 액세스 키 저장 IAM을 참조하세요.
시작하기 전 준비 사항의 단계에 따라 Starfield 디지털 인증서를 다운로드하고, trustStore 파일로 변환하고, JVM 인수의 trustStore 파일을 애플리케이션에 연결합니다.
아파치 카산드라용 DataStax 자바 드라이버를 자바 프로젝트에 추가하세요. Apache Cassandra 3.11.2를 지원하는 드라이버 버전을 사용하고 있는지 확인하세요. 자세한 내용은 Apache Cassandra용 DataStax 자바 드라이버 설명서를
참조하십시오. 애플리케이션에 인증 플러그인을 추가합니다. 인증 플러그인은 아파치 카산드라용 DataStax Java 드라이버 버전 3.x를 지원합니다. Apache Maven이나 Maven 종속성을 사용할 수 있는 빌드 시스템을 사용하는 경우
pom.xml
파일에 다음 종속성을 추가합니다. 저장소에 표시된 대로 플러그인 버전을 최신 버전으로 교체하십시오. GitHub<dependency> <groupId>software.aws.mcs</groupId> <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin_3</artifactId> <version>
3.0.3
</version> </dependency>
2단계: 애플리케이션 실행
이 코드 예제는 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의 서비스 엔드포인트 섹션을 참조하세요.
Amazon Keyspace와 함께 Java Driver를 사용할 때 유용한 Java 드라이버 정책, 예제, 모범 사례는 https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers