翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Neptune で AWS CLI および SDKsを使用するためのベストプラクティス
デフォルトでは、 AWS CLI と AWS SDKs 60 秒後にタイムアウトし、失敗したリクエストを自動的に再試行します。完了までに 60 秒以上かかるクエリの場合、このデフォルトの動作によりクエリ実行が重複します。元のクエリがサーバーで実行されている間に、再試行によって新しいリクエストが実行されます。
Neptune データプレーン API ( などexecute-open-cypher-query) を使用して長時間実行されるクエリを実行する場合は、自動再試行を無効にします。また、読み取りタイムアウトを増減します。それ以外の場合、クライアントは元の がまだ実行中にクエリを再試行するため、Neptune クラスターの負荷が 2 倍になります。
次の推奨事項は、デフォルトの 60 秒タイムアウトよりも長く実行できる Neptune データプレーンオペレーションに適用されます。
次の例は、 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 に設定します。つまり、リクエストは再試行なしで 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と、リクエストは再試行なしで 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()が無効になります。