翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
RDF データのネイティブエクスポート
Neptune エクスポート API を使用すると、Neptune データベースから Amazon S3 にデータをエクスポートできます。RDF データは N-Triples 形式または N-Quads 形式でエクスポートできます。
ネイティブエクスポートの仕組み
ネイティブエクスポートは Neptune クラスターのライターインスタンスで実行され、マルチパートアップロードを使用してエクスポートされたデータを Amazon S3 に書き込みます。エクスポートはライターインスタンスのコンピューティングリソースを使用するため、本番環境のワークロードに影響を与えないように、クローンされたクラスターに対してエクスポートを実行することを強くお勧めします。詳細については、「推奨事項」を参照してください。
エクスポートスループット
エクスポートスループットは、 までのインスタンスサイズに合わせてほぼ直線的にスケーリングされますr7i.16xlarge。保守的な計画の見積もりとして、vCPU あたり 1 秒あたり約 50,000 個のステートメントを想定します。
エクスポート期間を見積もるには、次の式を使用します。
export_seconds = total_statements / (vCPUs × 50,000)
実際のスループットは、述語基数、ステートメントの複雑さ、クラスターサイズなどのデータセットの特性によって異なります。
前提条件
エクスポート API を使用する前に、以下を行う必要があります。
バージョン 1.4.6.0 以降 (
exportFilterサポート対象はバージョン 1.4.8.0 以降) を実行している Neptune データベースクラスターがある
推奨事項
本番環境のパフォーマンスへの影響を避けるため、読み取り/書き込みワークロードなしでクローンされたクラスターでエクスポートオペレーションを実行することを強くお勧めします。
最適なprice-to-performanceの比率を得るには、エクスポートオペレーションに 16xlarge インスタンスを使用することをお勧めします。このインスタンスタイプは以下を提供します。
パフォーマンスを低下させることなく大規模なデータセットを処理するのに十分なメモリ
同時エクスポート処理に最適な CPU リソース
ワークロードのエクスポートに最適なコスト効率
IAM アクセス許可
エクスポート機能には、2 つの個別の IAM ロールが含まれます。
発信者の IAM ロール – エクスポート API エンドポイントにリクエストを送信する IAM プリンシパル (ユーザーまたはロール)。このロールには Neptune データアクセス許可が必要です。
S3 アクセス IAM ロール – エクスポートされたデータを Amazon S3 に書き込むために Neptune が引き受けるロール。このロールの ARN をエクスポートリクエストの
iamRoleArnパラメータに渡すと、Neptune クラスターに関連付ける必要があります。
発信者のアクセス許可 (Neptune データアクセスアクション)
エクスポート API を呼び出す IAM プリンシパルには、IAM ポリシーに次の Neptune データアクセスアクションが必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowNeptuneExportActions", "Effect": "Allow", "Action": [ "neptune-db:StartExportJob", "neptune-db:GetExportJobStatus", "neptune-db:ListExportJobs", "neptune-db:CancelExportJob" ], "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-resource-id/*" } ] }
詳細については、「IAM データアクセスポリシーステートメントの使用」を参照してください。
S3 アクセスロールのアクセス許可
iamRoleArn リクエストパラメータに渡される IAM ロールは、Neptune クラスターに関連付けられ、ターゲット S3 バケットに書き込むアクセス許可を Neptune に付与する必要があります。IAM ロールを作成してクラスターに関連付ける手順については、「Create an IAM role to allow Neptune to access Amazon S3」を参照してください。
注記
エクスポート API には、読み取りアクセスのみを必要とするバルクローダーとは異なり、S3 への書き込みアクセス許可が必要です。そのページで説明されているAmazonS3ReadOnlyAccess管理ポリシーの代わりに、次のアクセス許可ポリシーを使用します。
次のアクセス許可ポリシーを S3 アクセスロールにアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3WriteForNeptuneExport", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:GetBucketPublicAccessBlock" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }
オプションの KMS アクセス許可
エクスポートリクエストkmsKeyIdentifierで を指定する場合は、S3 アクセスロールに次のアクセス許可を追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSForNeptuneExport", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id" } ] }
エンドポイントのエクスポート
データをエクスポートするには、https://your-neptune-endpoint:port/exportエンドポイントに HTTP リクエストを送信します。
エクスポートリクエスト構文
POST https://your-neptune-endpoint:port/export
リクエストヘッダー
Content-Type: application/json
リクエストボディ
{ "destination": "string", "format": "string", "iamRoleArn": "string", "region": "string", "compression": "string", "kmsKeyIdentifier": "string", "exportFilter": { "namedGraphUris": ["string"] } }
リクエストパラメータ
- destination (文字列)
必須。エクスポートされたデータを保存する S3 URI。
s3://bucket-name/optional-prefix/の形式である必要があります。- 形式 (文字列)
-
必須。エクスポートされたデータの形式。有効な値:
ntriples– N-Triples 形式でデータをエクスポートするnquads– N-Quads 形式でデータをエクスポートする
- iamRoleArn (文字列)
必須。Neptune が S3 バケットにアクセスするために引き受ける IAM ロールの Amazon リソースネーム (ARN)。
- region (文字列)
必須。S3 バケット AWS リージョン の 。Neptune クラスターと同じリージョンである必要があります。
- 圧縮 (文字列)
-
オプション。エクスポートされたファイルの圧縮形式。有効な値:
gz- ファイルを .gz 形式で圧縮する
- kmsKeyIdentifier (文字列)
オプション。エクスポートされたデータの暗号化に使用する AWS KMS キーの ARN。
- exportFilter (オブジェクト)
オプション。RDF データのサブセットを選択的にエクスポートするためのフィルタ。エンジンバージョン 1.4.8.0 以降で使用できます。
- namedGraphUris (文字列の配列)
エクスポートする名前付きグラフ URIs (最大 100)。指定されたグラフのデータのみがエクスポートされます。指定されたグラフが空の場合、エクスポートは空の結果で成功します。無効な URIs で失敗します
InvalidParameterException。
レスポンスの構文
{ "status": "string", "payload": { "exportId": "string" } }
- status (文字列)
リクエストの HTTP ステータス。
- exportId (文字列)
エクスポートタスクの一意の識別子。
エクスポートステータスエンドポイント
エクスポートタスクのステータスを確認するには、エクスポート ID を使用して HTTP GET リクエストをエクスポートエンドポイントに送信します。
GET https://your-neptune-endpoint:port/export?exportId=export-id
リクエストパラメータ
- exportId (文字列)
必須。エクスポートタスクの一意の識別子。
レスポンスの構文
{ "status": "string", "payload": { "exportId": "string", "destination": "string", "status": "string", "statusReason": "string", "format": "string", "iamRoleArn": "string", "kmsKeyIdentifier": "string", "exportFilter": { "namedGraphUris": ["string"] }, "exportTaskDetails": { "timeElapsedSeconds": number, "startTime": number, "numRecordsWritten": number, "progressPercentage": number } } }
- exportId (文字列)
エクスポートタスクの一意の識別子。
- destination (文字列)
データがエクスポートされる S3 URI。
- status (文字列)
-
エクスポートタスクの現在のステータス。有効な値:
EXPORT_NOT_STARTED– エクスポートはキューに入れられていますが、開始されていませんEXPORT_IN_PROGRESS— エクスポートは現在実行中ですEXPORT_COMPLETED– エクスポートが正常に完了しましたEXPORT_CANCELLING– エクスポートはキャンセルされていますEXPORT_CANCELLED_BY_USER– エクスポートはユーザーによってキャンセルされましたEXPORT_S3_ERROR– S3 アクセスエラーのためエクスポートに失敗しましたEXPORT_FAILED– 他のエラーによりエクスポートに失敗しました
- statusReason (文字列)
エクスポートステータスに関する追加情報。
- 形式 (文字列)
エクスポートするデータの形式。
- iamRoleArn (文字列)
S3 アクセスに使用される IAM ロールの ARN。
- kmsKeyIdentifier (文字列)
指定した場合、暗号化に使用される KMS キーの ARN。
- exportFilter (オブジェクト)
リクエストで指定された場合に適用されたエクスポートフィルター。
namedGraphUris (文字列の配列) – エクスポートのフィルタリングに使用される名前付きグラフ URIs。
- exportTaskDetails (オブジェクト)
-
エクスポートタスクの進行状況の詳細:
timeElapsedSeconds (数値) – エクスポート開始からの経過時間
startTime (数値) – エクスポート開始時のエポック時間
numRecordsWritten (数値) – S3 に書き込まれたレコードの数
progressPercentage (数値) – 完了したエクスポートの割合
エクスポートエンドポイントを一覧表示する
すべてのエクスポートタスクを一覧表示するには、HTTP GET リクエストをエクスポートエンドポイントに送信します。
GET https://your-neptune-endpoint:port/export
レスポンスの構文
{ "status": "string", "payload": [ "string" ] }
- ペイロード (配列)
すべてのエクスポートタスクIDs の配列。
エクスポートエンドポイントをキャンセルする
エクスポートタスクをキャンセルするには、エクスポート ID を使用してエクスポートエンドポイントに HTTP DELETE リクエストを送信します。
DELETE https://your-neptune-endpoint:port/export?exportId=export-id
リクエストパラメータ
- exportId (文字列)
必須。キャンセルするエクスポートタスクの一意の識別子。
レスポンスの構文
{ "status": "string", "payload": { "message": "string" } }
出力形式をエクスポートする
S3 ディレクトリ構造
エクスポートされたデータは、次のように S3 バケットに整理されます。
s3://your-bucket/export-id/ ├── data/ │ ├── part-00000.nt │ ├── part-00001.nt │ └── ... └── export_status.json
- データ/ディレクトリ
指定された形式でエクスポートされたグラフデータファイルが含まれます。
- export_status.json ファイル
エクスポートオペレーションに関するメタデータが含まれます。
エラーレスポンス
一般的なエラーコード
- BadRequestException
リクエストに無効なパラメータが含まれているか、エクスポートがすでに進行中です。
- AccessDeniedException
IAM ロールには、S3 または KMS アクセスに必要なアクセス許可がありません。
エラーレスポンスの例
{ "code": "BadRequestException", "requestId": "request-id", "message": "Export already in progress with ID 'existing-id'. Please wait or cancel it first.", "detailedMessage": "Detailed error description" }
例
エクスポートを開始する
curl -X POST https://your-cluster-endpoint:8182/export \ -H "Content-Type: application/json" \ -d '{ "destination": "s3://my-bucket/exports/", "format": "ntriples", "iamRoleArn": "arn:aws:iam::123456789012:role/neptune-export-role", "region": "us-west-2" }'
フィルタリングされたエクスポートを開始する (名前付きグラフ)
curl -X POST https://your-cluster-endpoint:8182/export \ -H "Content-Type: application/json" \ -d '{ "destination": "s3://my-bucket/exports/", "format": "nquads", "iamRoleArn": "arn:aws:iam::123456789012:role/neptune-export-role", "region": "us-west-2", "exportFilter": { "namedGraphUris": [ "http://example.com/graph1", "http://example.com/graph2" ] } }'
エクスポートステータスを確認する
curl -X GET "https://your-cluster-endpoint:8182/export?exportId=<id>"
エクスポートをキャンセルする
curl -X DELETE "https://your-cluster-endpoint:8182/export?exportId=<id>"
制限事項
ネイティブエクスポートには以下の制限があります。
インスタンスのサポート – ネイティブエクスポートは、Neptune Serverless インスタンスまたはリードレプリカではサポートされていません。エクスポートは常に、プロビジョニングされたクラスターのライターインスタンスで実行されます。
クラスターごとに 1 つのエクスポート – クラスターで一度にアクティブにできるエクスポートは 1 つだけです。別のエクスポートの進行中に新しいエクスポートリクエストを送信すると、リクエストは失敗します。
自動再開なし – エクスポート中にエンジンが再起動した場合、エクスポートは失敗し、最初から再起動する必要があります。エクスポートの進行状況は、エンジンの再起動後も保持されません。
エンジンイベント後のステータスの可用性 – エンジンがクラッシュした場合、ステータス API を使用してエクスポートステータスを取得することはできません。
書き込み中の整合性 – クラスターがエクスポート中に書き込みトラフィックを処理している場合、エクスポートされたデータはグラフの一部または整合性のないビューを反映している可能性があります。一貫したエクスポートを保証するには、クローンされたクラスターに対してエクスポートを実行します。