

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据输入 AWS Data Exchange
<a name="data-sets"></a>

数据 AWS Data Exchange 使用三个构件进行组织：
+ **[资产](#assets)** – 一段数据 
+ **[修订](#revisions)** – 一个或多个资产的容器
+ **[数据集](#data-sets-concept)** – 由一个或多个修订组成的一系列数据

这三个构造块构成了您使用 AWS Data Exchange 控制台或 AWS Data Exchange API 管理的产品的基础。

要创建、查看、更新或删除数据集，您可以使用 AWS Data Exchange 控制台、 AWS Command Line Interface (AWS CLI)、您自己的 REST 客户端或其中一个 AWS SDK。有关以编程方式管理 AWS Data Exchange 数据集的更多信息，请参阅 [AWS Data Exchange API 参考](https://docs.aws.amazon.com/data-exchange/latest/apireference)。

## 资产
<a name="assets"></a>

资产是其中的*数据* AWS Data Exchange。

资产类型定义了如何通过包含数据的数据集、数据授权或产品将该数据交付给接收方或订阅用户。

资产可以是以下任一种：
+ 本地计算机上存储的文件
+ 作为对象存储在 Amazon Simple Storage Service (Amazon S3) 中的文件
+ 在 Amazon API Gateway 中创建的 REST API
+ Amazon Redshift 数据集
+  AWS Lake Formation 数据权限（预览）
+ Amazon S3 数据访问数据集

### 资产结构
<a name="assets-structure"></a>

资产具有以下参数：
+ `DataSetId` – 包含此资产的数据集的 ID。
+ `RevisionId` – 包含此资产的修订的 ID。
+ `Id` – 创建资产时生成的唯一 ID。
+ `Arn`— AWS 资源名称的唯一标识符。
+ `CreatedAt` 和 `UpdatedAt` – 资产创建和最近更新的日期和时间戳。
+ `AssetDetails` – 有关该资产的信息。
+ `AssetType` – Amazon S3 对象、Amazon API Gateway API、Amazon Redshift 数据集或 Amazon S3 数据集的快照。

**Example 资产资源**  

```
{
    "Name": "{{automation/cloudformation.yaml}}",
    "Arn": "arn:aws:dataexchange:us-east-1::data-sets/{{29EXAMPLE24b82c6858af3cEXAMPLEcf}}/revisions/{{bbEXAMPLE74c02f4745c660EXAMPLE20}}/assets/{{baEXAMPLE660c9fe7267966EXAMPLEf5}}",
    "Id": "{{baEXAMPLE660c9fe7267966EXAMPLEf5}}",
    "CreatedAt": "2019-10-17T21:31:29.833Z",
    "UpdatedAt": "2019-10-17T21:31:29.833Z",
    "AssetType": "S3_SNAPSHOT",
    "RevisionId": "{{bbEXAMPLE74c02f4745c660EXAMPLE20}}",
    "DataSetId": "{{29EXAMPLE24b82c6858af3cEXAMPLEcf}}",
    "AssetDetails": {
        "S3SnapshotAsset": {
            "Size": 9423
        }
    }
}
```

### 资产类型
<a name="asset-types"></a>

**Topics**
+ [文件数据集](#s3-asset-type)
+ [API 资产](#API-asset-type)
+ [Amazon Redshift 数据共享资产](#RS-asset-type)
+ [AWS Lake Formation 数据权限（预览）](#LF-asset-type)
+ [Amazon S3 数据访问](#S3-access-asset-type)

#### 文件数据集
<a name="s3-asset-type"></a>

通过文件，订阅者可以访问作为授权数据集的数据集副本并导出相应资产。

数据集所有者可以使用 AWS Data Exchange 控制台、通过自己的 REST 应用程序或其中一个 AWS SDK 以编程方式导入和导出文件。 AWS CLI有关导入 Amazon S3 资产的更多信息，请参阅[从 S3 存储桶导入 AWS Data Exchange 资产](importing-from-s3.md)。有关导出资产的更多信息，请参阅[将 AWS Data Exchange 资产导出到 S3 存储桶](exporting-from-s3.md)。

#### API 资产
<a name="API-asset-type"></a>

通过 API 资产，数据接收者或订阅者可以查看 API，并将 API 规范作为已授权数据集进行下载。您还可以对 AWS Data Exchange托管的端点进行 API 调用，然后将其代理到端点。 API-owner 

拥有现有 Amazon API Gateway API 的数据集所有者可以使用 AWS Data Exchange 控制台、通过或其中一个软件 AWS 开发工具包以编程方式添加 API 资产。 AWS CLI有关导入 API 资产的更多信息，请参阅[从 Amazon API Gateway API 导入 AWS Data Exchange 资产](import-API-asset.md)。

**注意**  
目前，以下 SDK 不支持该 `SendApiAsset` 操作：  
适用于 .NET 的 SDK
适用于 C\+\+ 的 AWS SDK
适用于 Java 的 SDK 2.x

如果当前没有 Amazon API Gateway API，数据集所有者必须先创建一个，然后才能向其产品添加 API 资产。有关更多信息，请参阅《Amazon API Gateway 开发人员指南》**中的[在 API Gateway 中开发 REST API](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-develop.html)。

#### Amazon Redshift 数据共享资产
<a name="RS-asset-type"></a>

 通过 Amazon Redshift 数据共享资产，接收者可以以只读方式查询 Amazon Redshift 中的数据，而无需提取、转换和加载数据。

 有关导入 Amazon Redshift 数据共享资产的更多信息，请参阅[从 AWS Data Exchange 数据共享中为亚马逊 Redshift 导入 AWS Data Exchange 资产](import-RS-asset.md)。

#### AWS Lake Formation 数据权限（预览）
<a name="LF-asset-type"></a>

使用 AWS Lake Formation 数据权限资产，收件人或订阅者可以访问和查询与指定标签关联的所有数据库、表或列。

数据集所有者必须先创建和标记其数据，然后才能将标签作为 AWS Data Exchange 资产的一部分进行导入。有关导入 Lake Formation 数据权限资产的更多信息，请参阅[从 AWS Lake Formation （预览）导入 AWS Data Exchange 资源](import-LF-asset.md)。

#### Amazon S3 数据访问
<a name="S3-access-asset-type"></a>

借助 Amazon S3 数据访问资产，接收者或订阅者无需创建或管理数据副本即可直接访问和使用提供商的数据。数据集所有者可以基于其现有的 Amazon S3 存储桶设置 AWS Data Exchange for Amazon S3，以共享对整个 S3 存储桶或特定前缀和 Amazon S3 对象的直接访问权限。

## 修订
<a name="revisions"></a>

修订是一个或多个资产的*容器*。

您可以使用修订更新 Amazon S3 中的数据。例如，您可以将一组.csv 文件或单个.csv 文件和字典分组以创建修订版。当有新数据可用时，您可以创建修订并添加资产。使用 AWS Data Exchange 控制台创建并定版修订后，该修订将立即可供订阅者使用。有关更多信息，请参阅 [在中发布新产品 AWS Data Exchange](publishing-products.md)。

记住以下内容：
+ 修订中必须包含至少一个资产才能定版。
+ 在定版修订之前，您有责任确保资产正确无误。
+ 定版修订在发布到至少一个数据授权或产品后，不能以任何方式取消定版或更改。（通过撤销修订流程除外）
+ 修订完成后，它会自动发布到您的数据赠款或产品中。

### 修订结构
<a name="revisions-structure"></a>

修订具有以下参数：
+ `DataSetId` – 包含此修订的数据集的 ID。
+ `Comment` – 有关修订的注释。此字段最多可包含 128 个字符。
+ `Finalized` – 要么为 true，要么为 false。用于指示修订是否已定版。
+ `Id` – 创建修订时生成的唯一标识符。
+ `Arn`— AWS 资源名称的唯一标识符。
+ `CreatedAt` – 创建修订的日期和时间戳。授权修订是在发布时创建的。
+ `UpdatedAt` – 修订最近更新的日期和时间戳。
+ `Revoked` – 一种状态，表示订阅者对修订的访问权限已被撤销。
+ `RevokedAt` – 表示撤销订阅者对修订的访问权限的日期和时间戳。
+ `RevocationComment` – 必填注释，以告知订阅者他们对修订的访问权限被撤销的原因。最小字符长度是 10 个字符。该字段的长度介于 10 至 512 个字符之间。
+ `SourceID` – 与正在查看的授权修订对应的所拥有修订的修订 ID。当修订所有者查看其拥有的修订的授权副本时，将返回此参数。

**Example 修订资源**  

```
        {
            "UpdatedAt": "2019-10-11T14:13:31.749Z",
            "DataSetId": "{{1EXAMPLE404460dc9b005a0d9EXAMPLE2f}}",
            "Comment": "{{initial data revision}}",
            "Finalized": true,
            "Id": "{{e5EXAMPLE224f879066f9999EXAMPLE42}}",
            "Arn": "arn:aws:dataexchange:us-east-1:{{123456789012}}:data-sets/{{1EXAMPLE404460dc9b005a0d9EXAMPLE2f}}/revisions/{{e5EXAMPLE224f879066f9999EXAMPLE42}}",
            "CreatedAt": "2019-10-11T14:11:58.064Z"
        }
```

## 数据集
<a name="data-sets-concept"></a>

中的数据*集 AWS Data Exchange *是可以随时间变化的数据集合。

当收件人或订阅者访问文件数据集时，他们访问的是数据集中的特定版本。这种结构使提供商能够更改数据集中的可用数据，而不必担心会更改历史数据。

当收件人或订阅者访问 API 数据集时，他们访问的是包含 API 资产的数据集，这使订阅者能够向 AWS Data Exchange托管端点发出 API 调用，然后将其代理到提供商端点。

当接收者或订阅者访问 Amazon Redshift 数据集时，他们访问的是适用于 Amazon Redshift 的 AWS Data Exchange 数据共享。此数据共享为订阅者提供了对数据所有者添加到数据共享中的架构、表、视图和用户定义的函数的只读访问权限。

当收件人或订阅者访问 AWS Lake Formation 数据权限数据集时，他们访问的是用数据集所有者 LF-tag 指定的标记的数据库、表和 and/or 列。

当接收者或订阅者访问 Amazon S3 数据访问数据集时，他们将获得对托管在提供商 Amazon S3 存储桶中的共享 Amazon S3 对象的只读访问权限。接收者或订阅者可以直接将这些数据与其他 AWS 服务一起使用。

要创建、查看、更新或删除数据集，提供者可以使用 AWS Data Exchange 控制台、 AWS CLI、您自己的 REST 客户端或其中一个 AWS SDK。有关以编程方式管理 AWS Data Exchange 数据集的更多信息，请参阅 [AWS Data Exchange API 参考](https://docs.aws.amazon.com/data-exchange/latest/apireference/welcome.html)。

**Topics**
+ [自有数据集](#owned-data-sets)
+ [授权数据集](#entitled-data-sets)
+ [数据集类型](#data-set-types)
+ [Amazon S3 数据访问数据集](#s3-data-set-type)
+ [AWS Lake Formation 数据集（预览）](#LF-data-set-type)
+ [AWS 区域 和数据集](#data-set-regions)
+ [数据集结构](#data-set-structure)
+ [数据集最佳实践](#data-set-best-practices)

### 自有数据集
<a name="owned-data-sets"></a>

存储桶归创建它的账户所有。使用设置为 `OWNED` 的 `origin` 参数可识别拥有的数据集。

### 授权数据集
<a name="entitled-data-sets"></a>

已授权数据集是发件人拥有的数据集的只读视图。已授权数据集是在创建数据授权或产品发布时创建的，可供具有活跃数据授权或该产品活跃订阅的接收者或订阅者使用。使用设置为 `ENTITLED` 的 `origin` 参数可识别授权数据集。

作为接收者，您可以使用 AWS Data Exchange API 或在 AWS Data Exchange 控制台中查看授权的数据集并与之交互。

作为数据集所有者，您还可以访问接收者或订阅者看到的已授权数据集视图。您可以使用 AWS Data Exchange API 或在 AWS Data Exchange 控制台的数据授权或产品页面中选择数据集名称来执行此操作。

### 数据集类型
<a name="data-set-types"></a>

中支持以下数据集类型 AWS Data Exchange：
+ [文件数据集](#S3-object-data-set-type)
+ [API 数据集](#api-data-set-type)
+ [Amazon Redshift 数据集](#RS-data-set-type)
+ [Amazon S3 数据访问数据集](#s3-data-set-type)
+ [AWS Lake Formation 数据集（预览）](#LF-data-set-type)

#### 文件数据集
<a name="S3-object-data-set-type"></a>

文件数据集是包含 Amazon S3 允许的平面文件的数据集。

作为接收者或订阅者，您可以将数据导出到本地（下载到您的计算机），也可以导出到您的 Amazon S3 存储桶。

作为数据集所有者，您可以从 Amazon S3 存储桶中导入任何类型的平面文件，并将其添加到数据集。

#### API 数据集
<a name="api-data-set-type"></a>

API 数据集是一个包含 API 资产的数据集。API 资产允许接收者或订阅者向 AWS Data Exchange托管端点发出 API 调用，然后将其代理到数据集所有者端点。

作为数据集所有者，您可以在 Amazon API Gateway 中创建一个 API，然后将其添加到数据集，以便在数据授权创建或订阅后获得对您的 API 的访问许可。

#### Amazon Redshift 数据集
<a name="RS-data-set-type"></a>

亚马逊 Redshift 数据集包括亚马逊 Reds AWS Data Exchange hift 的数据共享。订阅包含数据共享的数据集时，您将被添加为该数据共享的使用者。这使您能够获得对数据集所有者添加到数据共享中的架构、表、视图和用户定义的函数的只读访问权限。

作为数据集所有者，您可以通过 Amazon Redshift 中的数据共享创建数据库，然后无需提取、转换和加载文件即可查询实时数据。激活您的数据授权或订阅后，您将自动获得该数据共享的访问权限，并且在其中任何一项到期后将失去相关访问权限。

作为数据集所有者，您可以在 Amazon Redshift 中创建一个数据共享，并将其添加到数据集，以便在数据授权创建或订阅后获得对您的数据共享的访问许可。

### Amazon S3 数据访问数据集
<a name="s3-data-set-type"></a>

通过 Amazon S3 数据访问功能，数据接收者或订阅者可以直接从数据集所有者的 Amazon S3 存储桶访问第三方数据文件。 AWS Data Exchange 

当您订阅 AWS Data Exchange 适用于 Amazon S3 的数据访问产品时， AWS Data Exchange 会自动执行以下操作：
+ 预置 Amazon S3 接入点。Amazon S3 接入点是 Amazon S3 的一项特征，可简化对 Amazon S3 存储桶的数据共享。
+ 更新 S3 接入点资源策略，以授予您只读访问权限。

借助 AWS Data Exchange 适用于 Amazon S3，数据集所有者可以共享对整个 Amazon S3 存储桶或特定前缀和 Amazon S3 对象的直接访问权限。此外，还 AWS Data Exchange 可用于自动管理数据授权、订阅、授权、账单和付款。

### AWS Lake Formation 数据集（预览）
<a name="LF-data-set-type"></a>

 AWS Lake Formation 数据集是包含数据权限资产 AWS Lake Formation 的数据集。

作为数据接收者或订阅者，您可以在 AWS Lake Formation中管理提供给您的数据。在中创建资源链接后 AWS Lake Formation，您可以使用 Amazon Athena 等分析服务查询数据。

作为数据集所有者， LF-tags 在创建数据集时，您可以使用来标记数据， AWS Lake Formation 并将这些标签作为资产导入。

### AWS 区域 和数据集
<a name="data-set-regions"></a>

您的数据集可以是任何受支持的数据集 AWS 区域，但是单个数据授权或产品中的所有数据集都必须相同 AWS 区域。

### 数据集结构
<a name="data-set-structure"></a>

数据集具有以下参数：
+ `Name` – 数据集的名称。此值最多可包含 256 个字符。
+ `Description` – 数据集的描述。此值最多可包含 16348 个字符。
+ `AssetType` – 定义数据集包含的资产类型。
+ `Origin` – 一个属性，用于将数据集定义为是由账户 `Owned`（对于提供商）还是对账户 `Entitled`（对于订阅者）。
+ `Id` – 用于唯一标识数据集的 ID。数据集 ID 是在创建数据集时生成的。授权数据集与原始拥有的数据集具有不同的 ID。
+ `Arn`— AWS 资源名称的唯一标识符。
+ `CreatedAt` 和 `UpdatedAt` – 数据集创建和最近更新的日期和时间戳。

**注意**  
作为数据集所有者，您可以更改拥有的数据集的某些属性，例如**名称**或**描述**。更新拥有的数据集中的属性不会更新相应授权数据集中的属性。

**Example 数据集资源**  

```
{
    "Origin": "OWNED", 
    "AssetType": "S3_SNAPSHOT", 
    "Name": "{{MyDataSetName}}", 
    "CreatedAt": "2019-09-09T19:31:49.704Z", 
    "UpdatedAt": "2019-09-09T19:31:49.704Z", 
    "Id": "{{fEXAMPLE1fd9a5c8b0d2e6fEXAMPLEe1}}", 
    "Arn": "arn:aws:dataexchange:us-east-2:{{123456789109}}:data-sets/{{fEXAMPLE1fd9a5c8b0d2e6fEXAMPLEe1}}", 
    "Description": "{{This is my data set's description that describes the contents of the data set.}}"
}
```

### 数据集最佳实践
<a name="data-set-best-practices"></a>

作为数据集所有者，在创建和更新数据集时，请记住以下最佳实践：
+ 数据集的名称可在目录中的数据授权或产品详细信息中找到。我们建议您选择一个简洁的描述性名称，以便客户轻松了解该数据集的内容。
+ 该描述对拥有活跃数据授权或该产品活跃订阅的接收者或订阅者可见。我们建议您包含覆盖范围信息以及该数据集的特征和优点。

## 标签
<a name="data-set-tags"></a>

您可以为自己拥有的数据集及其修订添加标签。使用标记时，您还可以在 AWS Identity and Access Management (IAM) 策略中使用基于标签的访问控制来控制对这些数据集和修订的访问权限。

无法对授权数据集进行标记。拥有的数据集及其修订的标签不会传播到其相应的授权版本中。具体而言，对已授权数据集和修订具有只读访问权限的接收者或订阅者将看不到原始拥有的数据集的标签。

**注意**  
目前，资产和作业不支持标记功能。