기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
2단계: 원장과의 연결을 테스트
중요
지원 종료 알림: 기존 고객은 2025년 7월 31일 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 아마존 QLDB 원장을 Amazon Aurora SQL Postgre로 마이그레이션을
이 단계에서는 거래 데이터 엔드포인트를 QLDB 사용하여 Amazon의 vehicle-registration
원장에 연결할 수 있는지 확인합니다. API
원장과의 연결을 테스트하려면
-
vehicle-registration
원장에 대한 데이터 세션 연결을 생성하는 다음 프로그램(ConnectToLedger.java
)을 검토합니다.- 2.x
-
/* * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: MIT-0 * * Permission is hereby granted, free of charge, to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal in the Software * without restriction, including without limitation the rights to use, copy, modify, * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package software.amazon.qldb.tutorial; import java.net.URI; import java.net.URISyntaxException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.services.qldbsession.QldbSessionClient; import software.amazon.awssdk.services.qldbsession.QldbSessionClientBuilder; import software.amazon.qldb.QldbDriver; import software.amazon.qldb.RetryPolicy; /** * Connect to a session for a given ledger using default settings. * <p> * This code expects that you have AWS credentials setup per: * http://docs.aws.amazon.com/java-sdk/latest/developer-guide/setup-credentials.html */ public final class ConnectToLedger { public static final Logger log = LoggerFactory.getLogger(ConnectToLedger.class); public static AwsCredentialsProvider credentialsProvider; public static String endpoint = null; public static String ledgerName = Constants.LEDGER_NAME; public static String region = null; public static QldbDriver driver; private ConnectToLedger() { } /** * Create a pooled driver for creating sessions. * * @param retryAttempts How many times the transaction will be retried in * case of a retryable issue happens like Optimistic Concurrency Control exception, * server side failures or network issues. * @return The pooled driver for creating sessions. */ public static QldbDriver createQldbDriver(int retryAttempts) { QldbSessionClientBuilder builder = getAmazonQldbSessionClientBuilder(); return QldbDriver.builder() .ledger(ledgerName) .transactionRetryPolicy(RetryPolicy .builder() .maxRetries(retryAttempts) .build()) .sessionClientBuilder(builder) .build(); } /** * Create a pooled driver for creating sessions. * * @return The pooled driver for creating sessions. */ public static QldbDriver createQldbDriver() { QldbSessionClientBuilder builder = getAmazonQldbSessionClientBuilder(); return QldbDriver.builder() .ledger(ledgerName) .transactionRetryPolicy(RetryPolicy.builder() .maxRetries(Constants.RETRY_LIMIT).build()) .sessionClientBuilder(builder) .build(); } /** * Creates a QldbSession builder that is passed to the QldbDriver to connect to the Ledger. * * @return An instance of the AmazonQLDBSessionClientBuilder */ public static QldbSessionClientBuilder getAmazonQldbSessionClientBuilder() { QldbSessionClientBuilder builder = QldbSessionClient.builder(); if (null != endpoint && null != region) { try { builder.endpointOverride(new URI(endpoint)); } catch (URISyntaxException e) { throw new IllegalArgumentException(e); } } if (null != credentialsProvider) { builder.credentialsProvider(credentialsProvider); } return builder; } /** * Create a pooled driver for creating sessions. * * @return The pooled driver for creating sessions. */ public static QldbDriver getDriver() { if (driver == null) { driver = createQldbDriver(); } return driver; } public static void main(final String... args) { Iterable<String> tables = ConnectToLedger.getDriver().getTableNames(); log.info("Existing tables in the ledger:"); for (String table : tables) { log.info("- {} ", table); } } }
참고
-
원장에서 데이터 작업을 실행하려면 특정 원장에 연결할
QldbDriver
클래스 인스턴스를 생성해야 합니다. 이는 이전 단계에서 원장을 생성할 때 사용한AmazonQLDB
클라이언트와는 다른 클라이언트 객체입니다. 이전 클라이언트는 에 나열된 관리 API 작업을 실행하는 데만 사용됩니다. 아마존 QLDB API 레퍼런스 -
먼저
QldbDriver
객체를 생성해야 합니다. 이 드라이버를 생성할 때 원장 이름을 지정해야 합니다.그런 다음 이 드라이버의
execute
메서드를 사용하여 PartiQL 명령문을 실행할 수 있습니다. -
선택적으로 트랜잭션 예외에 대한 최대 재시도 횟수를 지정할 수 있습니다. 이
execute
메서드는 낙관적 동시성 제어 (OCC) 충돌 및 기타 일반적인 일시적 예외를 이 구성 가능한 한도까지 자동으로 재시도합니다. 기본값은4
입니다.한도에 도달한 후에도 트랜잭션이 여전히 실패하면 드라이버에서 예외가 발생합니다. 자세한 내용은 Amazon 드라이버에 대한 재시도 정책 이해 QLDB을 참조하십시오.
-
- 1.x
-
/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: MIT-0 * * Permission is hereby granted, free of charge, to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal in the Software * without restriction, including without limitation the rights to use, copy, modify, * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package software.amazon.qldb.tutorial; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.qldbsession.AmazonQLDBSessionClientBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.qldb.PooledQldbDriver; import software.amazon.qldb.QldbDriver; import software.amazon.qldb.QldbSession; import software.amazon.qldb.exceptions.QldbClientException; /** * Connect to a session for a given ledger using default settings. * <p> * This code expects that you have AWS credentials setup per: * http://docs.aws.amazon.com/java-sdk/latest/developer-guide/setup-credentials.html */ public final class ConnectToLedger { public static final Logger log = LoggerFactory.getLogger(ConnectToLedger.class); public static AWSCredentialsProvider credentialsProvider; public static String endpoint = null; public static String ledgerName = Constants.LEDGER_NAME; public static String region = null; private static PooledQldbDriver driver; private ConnectToLedger() { } /** * Create a pooled driver for creating sessions. * * @return The pooled driver for creating sessions. */ public static PooledQldbDriver createQldbDriver() { AmazonQLDBSessionClientBuilder builder = AmazonQLDBSessionClientBuilder.standard(); if (null != endpoint && null != region) { builder.setEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, region)); } if (null != credentialsProvider) { builder.setCredentials(credentialsProvider); } return PooledQldbDriver.builder() .withLedger(ledgerName) .withRetryLimit(Constants.RETRY_LIMIT) .withSessionClientBuilder(builder) .build(); } /** * Create a pooled driver for creating sessions. * * @return The pooled driver for creating sessions. */ public static PooledQldbDriver getDriver() { if (driver == null) { driver = createQldbDriver(); } return driver; } /** * Connect to a ledger through a {@link QldbDriver}. * * @return {@link QldbSession}. */ public static QldbSession createQldbSession() { return getDriver().getSession(); } public static void main(final String... args) { try (QldbSession qldbSession = createQldbSession()) { log.info("Listing table names "); for (String tableName : qldbSession.getTableNames()) { log.info(tableName); } } catch (QldbClientException e) { log.error("Unable to create session.", e); } } }
참고
-
원장에서 데이터 작업을 실행하려면 특정 원장에 연결할
PooledQldbDriver
또는QldbDriver
클래스 인스턴스를 생성해야 합니다. 이는 이전 단계에서 원장을 생성할 때 사용한AmazonQLDB
클라이언트와는 다른 클라이언트 객체입니다. 이전 클라이언트는 에 나열된 관리 API 작업을 실행하는 데만 사용됩니다. 아마존 QLDB API 레퍼런스QldbDriver
로 사용자 지정 세션 풀을 구현해야 하는 경우가 아니라면PooledQldbDriver
를 사용하는 것이 좋습니다. 의 기본 풀 크기는 세션 클라이언트가 허용하는 최대 열린 HTTP 연결 수입니다.PooledQldbDriver
-
먼저
PooledQldbDriver
객체를 생성해야 합니다. 이 드라이버를 생성할 때 원장 이름을 지정해야 합니다.그런 다음 이 드라이버의
execute
메서드를 사용하여 PartiQL 명령문을 실행할 수 있습니다. 또는 이 풀링된 드라이버 객체에서 세션을 수동으로 만들고 세션의execute
메서드를 사용할 수 있습니다. 세션은 원장과의 단일 연결을 나타냅니다. -
선택적으로 트랜잭션 예외에 대한 최대 재시도 횟수를 지정할 수 있습니다. 이
execute
메서드는 낙관적 동시성 제어 (OCC) 충돌 및 기타 일반적인 일시적 예외를 이 구성 가능한 한도까지 자동으로 재시도합니다. 기본값은4
입니다.한도에 도달한 후에도 트랜잭션이 여전히 실패하면 드라이버에서 예외가 발생합니다. 자세한 내용은 Amazon 드라이버에 대한 재시도 정책 이해 QLDB을 참조하십시오.
-
-
ConnectToLedger.java
프로그램을 컴파일하고 실행하여vehicle-registration
원장에 대한 데이터 세션 연결을 테스트하세요.
재정의 AWS 리전
샘플 애플리케이션은 기본값으로 QLDB 연결되며 AWS 리전, 사전 요구 사항 단계에서 설명한 대로 설정할 수 있습니다. 기본 AWS 보안 인증 정보 및 리전 설정 QLDB세션 클라이언트 빌더 속성을 수정하여 지역을 변경할 수도 있습니다.
- 2.x
-
다음 코드 예제에서는 새
QldbSessionClientBuilder
객체를 인스턴스화합니다.import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.qldbsession.QldbSessionClientBuilder; // This client builder will default to US East (Ohio) QldbSessionClientBuilder builder = QldbSessionClient.builder() .region(Region.US_EAST_2);
region
메서드를 사용하여 사용 가능한 모든 QLDB 지역에서 코드를 실행할 수 있습니다. 전체 목록은 의 Amazon QLDB 엔드포인트 및 할당량을 참조하십시오. AWS 일반 참조 - 1.x
-
다음 코드 예제에서는 새
AmazonQLDBSessionClientBuilder
객체를 인스턴스화합니다.import com.amazonaws.regions.Regions; import com.amazonaws.services.qldbsession.AmazonQLDBSessionClientBuilder; // This client builder will default to US East (Ohio) AmazonQLDBSessionClientBuilder builder = AmazonQLDBSessionClientBuilder.standard() .withRegion(Regions.US_EAST_2);
withRegion
메서드를 사용하여 사용 가능한 모든 QLDB 지역에서 코드를 실행할 수 있습니다. 전체 목록은 의 Amazon QLDB 엔드포인트 및 할당량을 참조하십시오. AWS 일반 참조
vehicle-registration
원장에 테이블을 생성하려면 3단계: 테이블, 인덱스 및 샘플 데이터 생성로 진행하세요.