

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

# 重複訊息處理
<a name="sms-streaming-impotency"></a>

對於即時傳送的資料物件，Ground Truth 透過確保每個唯一物件僅傳送並加以標籤一次來保證等冪性，即使多次接收參考該物件的輸入訊息 (重複訊息) 也是如此。為此，傳送至串流標籤工作的每個資料物件都會指派*重複刪除 ID*，並以*重複刪除金鑰*識別。如果您使用 Amazon SNS 訊息透過 Amazon SNS 輸入主題直接傳送請求以標籤資料物件，您可以選擇性為物件選擇自訂重複刪除金鑰與重複刪除 ID。如需更多資訊，請參閱[在 Amazon SNS 訊息指定重複刪除金鑰與 ID](sms-streaming-impotency-create.md)。

如果您未提供自己的重複刪除金鑰，或是如果您使用 Amazon S3 組態傳送資料物件至標籤工作，Ground Truth 會使用下列其中一項來作為重複刪除 ID：
+ 對於直接傳送至 Amazon SNS 輸入主題的訊息，Ground Truth 會使用 SNS 訊息 ID。
+ 對於來自 Amazon S3 組態的訊息，Ground Truth 會結合物件的 Amazon S3 URI 與訊息的[序列器權杖](https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html)，以便建立重複刪除 ID。

# 在 Amazon SNS 訊息指定重複刪除金鑰與 ID
<a name="sms-streaming-impotency-create"></a>

當您使用 Amazon SNS 訊息傳送資料物件至串流標籤工作時，您可以選擇以下列其中一種方式指定重複刪除金鑰與重複刪除 ID。在所有這些情況，請使用 `dataset-objectid-attribute-name` 識別您的重複刪除金鑰。

**使用自有重複刪除金鑰與 ID**

透過設定 Amazon SNS 訊息來建立自有重複刪除金鑰與重複刪除 ID，如下所示。請以您的金鑰取代 `byo-key`，並以該資料物件的重複刪除 ID 取代 `UniqueId`。

```
{
    "source-ref":"s3://amzn-s3-demo-bucket/prefix/object1", 
    "dataset-objectid-attribute-name":"byo-key",
    "byo-key":"UniqueId" 
}
```

您的重複刪除金鑰長度上限為 140 個字元。支援的模式包含：`"^[$a-zA-Z0-9](-*[a-zA-Z0-9])*"`。

您的重複刪除 ID 長度上限為 1,024 個字元。支援的模式包含：`^(https|s3)://([^/]+)/?(.*)$`。

**使用現有金鑰作為重複刪除金鑰**

您可以使用訊息的現有金鑰做為重複刪除金鑰。在執行此操作時，關聯該金鑰的值會用作重複刪除 ID。

例如，您可以將訊息格式化，指定使用 `source-ref` 金鑰作為重複刪除金鑰，如下所示：

```
{
    "source-ref":"s3://amzn-s3-demo-bucket/prefix/object1",
    "dataset-objectid-attribute-name":"source-ref" 
}
```

在此範例，Ground Truth 採用 `"s3://amzn-s3-demo-bucket/prefix/object1"` 作為重複刪除 ID。

# 在輸出資料尋找重複刪除金鑰與 ID
<a name="sms-streaming-impotency-output"></a>

您可以在輸出資料看到重複刪除金鑰與 ID。重複刪除金鑰的識別條件為 `dataset-objectid-attribute-name`。當您使用自有自訂重複刪除金鑰時，您的輸出內容包含類似下列內容：

```
"dataset-objectid-attribute-name": "byo-key",
"byo-key": "UniqueId",
```

當您未指定金鑰時，您可以找到 Ground Truth 指派給資料物件的重複刪除 ID，如下所示。此 `$label-attribute-name-object-id` 參數可識別您的重複刪除 ID。

```
{
    "source-ref":"s3://bucket/prefix/object1", 
    "dataset-objectid-attribute-name":"$label-attribute-name-object-id"
    "label-attribute-name" :0,
    "label-attribute-name-metadata": {...},
    "$label-attribute-name-object-id":"<service-generated-key>"
}
```

對於 `<service-generated-key>`，如果資料物件透過 Amazon S3 組態提供，則 Ground Truth 會新增服務所使用的唯一值，並發出由 `$sequencer` 鍵入的新欄位，其中顯示使用的 Amazon S3 序列器。如果將物件直接送入 SNS，則 Ground Truth 會使用 SNS 訊息 ID。

**注意**  
請勿在標籤屬性名稱使用 `$` 字元。