

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

# AWS Data Exchange 搭配 AWS Marketplace 目錄 API 使用
<a name="appendices"></a>

本章包含使用 AWS Data Exchange 和 AWS Marketplace Catalog API 的補充資訊。 AWS Marketplace Catalog API 服務提供您做為提供者的 API 界面，以程式設計方式存取 AWS Marketplace 自助發佈功能。

API 支援各種操作，可讓您檢視和管理產品。您可以透過 AWS Marketplace API 整合將內部建置或部署管道擴展至 ，以自動化產品更新程序。您也可以在 API 上建立自己的內部使用者介面，以在 上管理您的產品 AWS Marketplace。

您可以使用 AWS Marketplace 目錄 API 來更新您的 AWS Data Exchange 產品。若要檢視您的產品，您可以使用 `ListEntities`和 `DescribeEntity` API 操作。若要更新您的 AWS Data Exchange 產品，您需要建立新的變更集，這是目錄 API 資源，代表用於管理產品的非同步操作。如需詳細資訊，請參閱[AWS Marketplace 目錄 API 參考](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Catalog_Service.html)。

使用目錄 API 時，請記住下列事項：
+ 每個 AWS Data Exchange 產品在目錄 API 中表示為[實體](https://docs.aws.amazon.com//marketplace-catalog/latest/api-reference/API_Entity.html)。
+ AWS Data Exchange 產品具有 `DataProduct`做為 `EntityType`。
+ 每個產品一次只能有一個同時執行的變更集。這表示在第一個變更集完成執行之前，您無法建立第二個變更集。

**Topics**
+ [將資料集新增至 AWS Data Exchange](add-data-sets.md)

# 將資料集新增至 AWS Data Exchange
<a name="add-data-sets"></a>

**注意**  
透過目錄 API 變更集新增的資料集類型`AddDataSets`預設為產品的發佈方法。

若要將資料集新增至您的 AWS Data Exchange 產品，請啟動類型 的變更集`AddDataSets`。若要這樣做，您可以使用 `StartChangeSet` API 操作並指定變更類型、產品識別符、產品類型和詳細資訊，包括資料集 Amazon Resource Name (ARN)。

## 教學課程：將新資料集新增至已發佈的資料產品
<a name="add-data-sets-tutorial"></a>

本教學課程會逐步解說將新 AWS Data Exchange 資料集新增至已發佈產品的詳細步驟。本教學課程包含下列高階步驟。

**Topics**
+ [設定 IAM 許可](#data-set-catalog-iam-permissions)
+ [存取 AWS Marketplace 目錄 API](#data-set-access-catalog-api)
+ [從 AWS Data Exchange 主控台取得您的產品 ID](#get-data-set-exchange-product-id)
+ [啟動變更請求](#start-data-set-change-request)
+ [檢查變更集的狀態](#check-data-set-change-status)

### 設定 IAM 許可
<a name="data-set-catalog-iam-permissions"></a>

開始之前，您需要 AWS Identity and Access Management (IAM) 許可才能使用 AWS Marketplace 目錄 API。這些許可是除了您使用 所需的許可之外 AWS Data Exchange。

1. 將您的瀏覽器導覽至 IAM 主控台，並使用可管理 IAM 許可 AWS 帳戶 的 登入。

1. 從左側導覽窗格中，選擇**政策**。

1. 選擇**建立政策**。

1. 選擇 **JSON** 索引標籤，並提供下列許可。這可提供 AWS Marketplace 目錄 API 的完整存取權。您可以根據您的使用案例適當限制存取。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "aws-marketplace:CancelChangeSet",
           "aws-marketplace:ListChangeSets",
           "aws-marketplace:DescribeEntity",
           "aws-marketplace:StartChangeSet",
           "aws-marketplace:ListEntities",
           "aws-marketplace:DescribeChangeSet",
           "dataexchange:PublishDataSet"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

1. 選擇下**一步：檢閱**。

1. 提供政策的名稱 （例如，**CatalogAPIFullAccess**)，然後選擇**建立政策**。

1. 使用 IAM 主控台，選擇要連接政策的使用者、群組或角色。

### 存取 AWS Marketplace 目錄 API
<a name="data-set-access-catalog-api"></a>

若要存取 AWS Marketplace 目錄 API，請使用下列 HTTP 用戶端端點。

```
catalog.marketplace.us-east-1.amazonaws.com
```

### 從 AWS Data Exchange 主控台取得您的產品 ID
<a name="get-data-set-exchange-product-id"></a>

在您可以使用 AWS Marketplace 目錄 API 發佈新資料集之前，請從 AWS Data Exchange 主控台取得您的產品 ID。導覽至**產品儀表板**，然後複製您要發佈資料集的產品 ID。您也可以使用 [AWS Marketplace Catalog API](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/welcome.html) 來尋找您的產品 ID，並使用 `ListEntities`動作搭配 **DataProduct@1.0** 實體類型。

### 啟動變更請求
<a name="start-data-set-change-request"></a>

**若要開始變更請求，以在測試產品中新增資料集**

1. 遵循 中的指示，複製您取得的實體 ID[從 AWS Data Exchange 主控台取得您的產品 ID](#get-data-set-exchange-product-id)。

1. 使用 `AddDataSets` 變更類型提出`StartChangeSet`請求。

**注意**  
如需在 AWS Marketplace 目錄 API 中使用變更集的資訊，請參閱[使用變更集](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/welcome.html#working-with-change-sets)。如需使用實體識別符的詳細資訊，請參閱[識別符](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/welcome.html#identifier)。

**範例請求**

```
https://catalog.marketplace.us-east-1.amazonaws.com/StartChangeSet
```

**請求內文範例**

```
{
    "Catalog": "AWSMarketplace",
    "ChangeSetName": "Adding Data Set to my test Data Product",
    "ChangeSet": [
        {
            "ChangeType": "AddDataSets",
            "Entity": {
                "Identifier": "entity-id@1",
                "Type": "DataProduct@1.0"
            },
            "Details": "{ \"DataSets\": [ { \"Arn\": \"data-set-arn\" } ] }"
        }
    ]
}
```

**回應範例**

```
{
  "ChangeSetId": "cs-bnEXAMPLE4mkz9oh",
  "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:account-id:AWSMarketplace/ChangeSet/cs-bnEXAMPLE4mkz9oh"
}
```

### 檢查變更集的狀態
<a name="check-data-set-change-status"></a>

使用 `StartChangeSet` API 操作啟動變更請求後，您可以使用 `DescribeChangeSet`操作來檢查其狀態。提供 `StartChangeSet` API 回應中傳回的變更集 ID。

**範例請求**

```
https://catalog.marketplace.us-east-1.amazonaws.com/DescribeChangeSet?catalog=AWSMarketplace&changeSetId=cs-bnEXAMPLE4mkz9oh
```

**請求內文範例**

```
{
"changeSetId":"cs-bnEXAMPLE4mkz9oh"
}
```

**回應範例**

```
{
    "ChangeSetId": "cs-bnEXAMPLE4mkz9oh",
    "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:account-id:AWSMarketplace/ChangeSet/cs-bnEXAMPLE4mkz9oh",
    "ChangeSetName": "Adding Data Set to my test Data Product",
    "StartTime": "2018-09-20T19:45:03.115+0000",
    "EndTime": "2018-09-20T19:48:12.517+0000",
    "Status": "SUCCEEDED",
    "FailureDescription": null,
    "ChangeSet": [
        {
            "ChangeType": "AddDataSets",
            "Entity": {
                "Type": "DataProduct@1.0",
                "Identifier": "entity-id@1"
            },
            "ErrorList": []
        }
    ]
}
```

## AddDataSets 例外狀況
<a name="catalog-exceptions-data-sets"></a>

當您搭配 使用 AWS Marketplace 目錄 API 時，可能會發生下列例外狀況 AWS Data Exchange：

**DATA\$1SET\$1NOT\$1FOUND**  
當找不到請求的資料集時，就會發生這種情況。若要解決此問題，請確定資料集 ARN 中沒有錯別字，而且您的 AWS 帳戶 擁有該資料集，然後再試一次。

**INVALID\$1INPUT**  
由於輸入無效，無法處理請求。若要解決此問題，請確保請求中沒有錯別字，且產品不超過允許的資料集數量上限。

**DATA\$1SET\$1ALREADY\$1PUBLISHED**  
當資料集先前已新增至產品時，就會發生這種情況。

**DATA\$1SET\$1DUPLICATE\$1PROVIDED**  
 當在請求中提供相同的資料集多次時，就會發生這種情況。