기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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() 비활성화됩니다.