

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Neptune 串流資料平面 API
<a name="data-api-dp-streams"></a>

**串流存取動作：**
+ [GetPropertygraphStream (動作)](#GetPropertygraphStream)

**串流資料結構：**
+ [PropertygraphRecord (結構)](#PropertygraphRecord)
+ [PropertygraphData (結構)](#PropertygraphData)

## GetPropertygraphStream (動作)
<a name="GetPropertygraphStream"></a>

         此 API 的 AWS CLI 名稱為：`get-propertygraph-stream`。

取得屬性圖的串流。

使用 Neptune 串流功能，您可以產生一系列完整的變更日誌項目，記錄對圖形資料所做的每項變更。`GetPropertygraphStream` 可讓您為屬性圖收集這些變更日誌項目。

必須在您的 Neptune 資料庫叢集上啟用 Neptune 串流功能。若要啟用串流，請將 [neptune\_streams](https://docs.aws.amazon.com/neptune/latest/userguide/parameters.html#parameters-db-cluster-parameters-neptune_streams) 資料庫叢集參數設定為 `1`。

請參閱[使用 Neptune 串流即時擷取圖形變更](https://docs.aws.amazon.com/neptune/latest/userguide/streams.html)。

在已啟用 IAM 身分驗證的 Neptune 叢集中調用此操作時，發出請求的 IAM 使用者或角色必須附加一個政策，在該叢集中允許 [neptune-db:GetStreamRecords](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getstreamrecords) IAM 動作。

在已啟用 IAM 身分驗證的 Neptune 叢集中調用此操作時，發出請求的 IAM 使用者或角色必須附加一個政策，啟用下列其中一個 IAM 動作，取決於查詢：

請注意，您可以使用下列 IAM 內容金鑰來限制屬性圖查詢：
+ [neptune-db:QueryLanguage:Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys)
+ [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys)

請參閱 [Neptune IAM 資料存取政策陳述式中可用的條件金鑰](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)。

**請求**
+ **commitNum** (在 CLI 中：`--commit-num`) – Long 整數，類型為：`long` (帶正負號的 64 位元整數)。

  要從 change-log 串流讀取之開始記錄的遞交編號。當 `iteratorType` 是 `AT_SEQUENCE_NUMBER` 或 `AFTER_SEQUENCE_NUMBER` 時，需要此參數，當 `iteratorType` 是 `TRIM_HORIZON` 或 `LATEST` 時，會忽略此參數。
+ **encoding** (在 CLI 中：`--encoding`) – 一種編碼，類型為：`string` (UTF-8 編碼的字串)。

  如果設定為 TRUE，Neptune 會使用 gzip 編碼壓縮回應。
+ **iteratorType** (在 CLI 中：`--iterator-type`) – 一種 IteratorType，類型為：`string` (UTF-8 編碼的字串)。

  可為下列其中一個：
  + `AT_SEQUENCE_NUMBER` – 指出讀取應該從 `commitNum` 和 `opNum` 參數共同指定的事件序號開始。
  + `AFTER_SEQUENCE_NUMBER` – 指出讀取應該在 `commitNum` 和 `opNum` 參數共同指定的事件序號之後立即開始。
  + `TRIM_HORIZON` – 指出讀取應該從系統中的最後一個未修整記錄開始，這是變更日誌串流中最舊的未過期 (尚未刪除) 記錄。
  + `LATEST` – 指出讀取應該從系統中的最新記錄開始，這是變更日誌串流中最新的未過期 (尚未刪除) 記錄。
+ **limit** (在 CLI 中：`--limit`) – GetPropertygraphStreamInputLimitLong，類型為：`long` (帶正負號的 64 位元整數)，不小於 1 或大於 100000 ?st?s。

  指定要傳回的記錄數上限。回應也有無法修改的 10 MB 大小限制，而且會優先於 `limit` 參數中指定的記錄數量。如果達到 10 MB 限制，回應會包含違反閾值的記錄。

  `limit` 的範圍是 1 到 100,000，預設值為 10。
+ **opNum** (在 CLI 中：`--op-num`) – Long 整數，類型為：`long` (帶正負號的 64 位元整數)。

  所指定遞交內的操作序號，即在變更日誌串流資料中開始讀取之處。預設值為 `1`。

**回應**
+ **format** – *必要：*字串，類型為：`string` (UTF-8 編碼的字串)。

   要傳回之變更記錄的序列化格式。目前，僅支援的值為 `PG_JSON`。
+ **lastEventId** – *必要：*它是金鑰值對的對應陣列，其中：

      每個金鑰都是字串，類型為：`string` (UTF-8 編碼的字串)。

      每個值都是字串，類型為：`string` (UTF-8 編碼的字串)。

   串流回應中上次變更的序列識別符。

  事件 ID 由兩個欄位組成：`commitNum` (識別已變更圖形的交易)，以及 `opNum` (識別該交易內的特定操作)。  
**Example**  

  ```
  "eventId": {
            "commitNum": 12,
            "opNum": 1
          }
  ```
+ **lastTrxTimestampInMillis** – *必要：*Long 整數，類型為：`long` (帶有正負號的 64 位元整數)。

  已請求遞交交易的時間，以毫秒為單位，從 Unix epoch 開始。
+ **records** – *必要：*一個 [PropertygraphRecord](#PropertygraphRecord) 物件。

   回應中包含之序列化變更日誌串流記錄的陣列。
+ **totalRecords** – *必要：*整數，類型為：`integer` (帶正負號的 32 位元整數)。

  回應中的記錄總數。

**錯誤**
+ [UnsupportedOperationException](data-api-dp-errors.md#UnsupportedOperationException)
+ [ExpiredStreamException](data-api-dp-errors.md#ExpiredStreamException)
+ [InvalidParameterException](data-api-dp-errors.md#InvalidParameterException)
+ [MemoryLimitExceededException](data-api-dp-errors.md#MemoryLimitExceededException)
+ [StreamRecordsNotFoundException](data-api-dp-errors.md#StreamRecordsNotFoundException)
+ [ClientTimeoutException](data-api-dp-errors.md#ClientTimeoutException)
+ [PreconditionsFailedException](data-api-dp-errors.md#PreconditionsFailedException)
+ [ThrottlingException](data-api-dp-errors.md#ThrottlingException)
+ [ConstraintViolationException](data-api-dp-errors.md#ConstraintViolationException)
+ [InvalidArgumentException](data-api-dp-errors.md#InvalidArgumentException)
+ [IllegalArgumentException](data-api-dp-errors.md#IllegalArgumentException)
+ [TooManyRequestsException](data-api-dp-errors.md#TooManyRequestsException)

## *串流資料結構：*
<a name="data-api-dp-streams-stream-data-structures-spacer"></a>

## PropertygraphRecord (結構)
<a name="PropertygraphRecord"></a>

屬性圖記錄的結構。

**欄位**
+ **commitTimestampInMillis** - 這是*必要：*Long 整數，類型為：`long` (帶有正負號的 64 位元整數)。

  已請求遞交交易的時間，以毫秒為單位，從 Unix epoch 開始。
+ **data** - 這是*必要：*[PropertygraphData](#PropertygraphData) 物件。

  序列化的 Gremlin 或 openCypher 變更記錄。
+ **eventId** - 這是*必要：*它是金鑰值對的對應陣列，其中：

      每個金鑰都是字串，類型為：`string` (UTF-8 編碼的字串)。

      每個值都是字串，類型為：`string` (UTF-8 編碼的字串)。

  串流變更記錄中的序列識別符。
+ **isLastOp** - 這是布林值，類型為：`boolean` (布林值 (true 或 false))。

  僅當此操作是其交易中的最後一個操作時才存在。如果存在，其會設定為 true。這對於確保整個交易被耗用非常有用。
+ **op** - 這是*必要：*字串，類型為：`string` (UTF-8 編碼的字串)。

  已建立變更的操作。

## PropertygraphData (結構)
<a name="PropertygraphData"></a>

Gremlin 或 openCypher 變更記錄。

**欄位**
+ **from** - 這是字串，類型為：`string` (UTF-8 編碼的字串)。

  如果這是邊緣 (type= `e`)，則為對應 `from` 頂點或來源節點的 ID。
+ **id** - 這是*必要：*字串，類型為：`string` (UTF-8 編碼的字串)。

  Gremlin 或 openCypher 元素的 ID。
+ **key** - 這是*必要：*字串，類型為：`string` (UTF-8 編碼的字串)。

  屬性名稱 對於元素標籤，這是 `label`。
+ **to** - 這是字串，類型為：`string` (UTF-8 編碼的字串)。

  如果這是邊緣 (type= `e`)，則為對應 `to` 頂點或目標節點的 ID。
+ **type** - 這是*必要：*字串，類型為：`string` (UTF-8 編碼的字串)。

  此 Gremlin 或 openCypher 元素的類型。必須是下列其中一個：
  + **`v1`** - Gremlin 的頂點標籤，或 openCypher 的節點標籤。
  + **`vp`** - Gremlin 的頂點屬性，或 openCypher 的節點屬性。
  + **`e`** - Gremlin 的邊緣和邊緣標籤，或 OpenCypher 的關係和關係類型。
  + **`ep`** - Gremlin 的邊緣屬性，或 openCypher 的關係屬性。
+ **value** - 這是*必要：*文件，類型為：`document` (與通訊協定無關的開放內容，由類似 JSON 的資料模型表示)。

  這是 JSON 物件，其中包含值本身的 value 欄位，以及該值之 JSON 資料類型的 datatype 欄位。  
**Example**  

  ```
  "value": {
            "value": "(the new value"),
            "dataType": "(the JSON datatypenew value")
          }
  ```