View a markdown version of this page

Neptune에서 AWS CLI 및 SDKs를 사용하는 모범 사례 - Amazon Neptune

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

Neptune에서 AWS CLI 및 SDKs를 사용하는 모범 사례

기본적으로 AWS CLI 및 AWS SDKs 60초 후에 시간 초과되고 실패한 요청을 자동으로 재시도합니다. 완료하는 데 60초 이상 걸리는 쿼리의 경우이 기본 동작으로 인해 쿼리 실행이 중복됩니다. 재시도는 원래 쿼리가 서버에서 계속 실행되는 동안 새 요청을 실행합니다.

중요

Neptune 데이터 영역 API(예: execute-open-cypher-query)를 통해 장기 실행 쿼리를 실행하는 경우 자동 재시도를 비활성화합니다. 또한 읽기 제한 시간을 늘리거나 제거합니다. 그렇지 않으면 클라이언트는 원본이 실행 중인 동안 쿼리를 재시도하여 Neptune 클러스터의 부하를 두 배로 늘립니다.

다음 권장 사항은 기본 60초 제한 시간보다 오래 실행될 수 있는 모든 Neptune 데이터 영역 작업에 적용됩니다.

  • 읽기 제한 시간을 0(무한) 또는 가장 긴 예상 쿼리 기간보다 큰 값으로 설정합니다.

  • 총 최대 시도 횟수를 1(1회 시도, 0회 시도)로 설정합니다. 이렇게 하면 클라이언트가 서버가 아직 처리 중인 요청을 다시 시도하지 못합니다.

다음 예제에서는 AWS CLI 및 널리 사용되는 SDKs에 대해 이러한 설정을 구성하는 방법을 보여줍니다.

AWS CLI
export AWS_MAX_ATTEMPTS=1 aws neptunedata execute-open-cypher-query \ --endpoint-url https://your-cluster-endpoint:port \ --open-cypher-query "RETURN 1" \ --cli-read-timeout 0

--cli-read-timeout 0 파라미터는 읽기 제한 시간을 비활성화하여가 응답을 무기한 대기 AWS CLI 할 수 있도록 합니다. AWS_MAX_ATTEMPTS=1 환경 변수는 총 최대 시도 횟수를 1로 설정합니다. 즉, 요청은 재시도 없이 정확히 한 번 시도됩니다.

Python (boto3)
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', endpoint_url='https://your-cluster-endpoint:port', region_name='us-east-1', config=Config( retries={'total_max_attempts': 1, 'mode': 'standard'}, read_timeout=None ) )

를 설정하면 읽기 제한 시간이 read_timeout=None 비활성화됩니다. total_max_attempts 로 설정1하면 요청이 재시도 없이 정확히 한 번 시도됩니다.

Java V2 SDK
import software.amazon.awssdk.services.neptunedata.NeptunedataClient; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.retry.RetryPolicy; import software.amazon.awssdk.regions.Region; import java.time.Duration; import java.net.URI; // Build the Neptune dataplane client with no retries and infinite timeout NeptunedataClient neptunedataClient = NeptunedataClient.builder() .endpointOverride(URI.create("https://your-cluster-endpoint:port")) .region(Region.of("us-east-1")) .overrideConfiguration(ClientOverrideConfiguration.builder() .apiCallTimeout(Duration.ZERO) .retryPolicy(RetryPolicy.none()) .build()) .build();

apiCallTimeout를 로 설정하면 API 호출에 대한 무한 제한 시간이 Duration.ZERO 구성됩니다. 를 사용하면 모든 자동 재시도가 RetryPolicy.none() 비활성화됩니다.