

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

# 使用现有 IAM 角色完成亚马逊 DataZone 订阅
<a name="use-your-own-role"></a>

在当前版本中，Amazon DataZone 支持您使用现有的 IAM 角色来访问数据。为此，您可以在 Amazon DataZone 环境中创建用于完成订阅的订阅目标。要在其中一个关联 AWS 账户中为环境创建订阅目标，可以使用以下步骤：

**第 1 步：确保您的 Amazon DataZone 域名使用的是 RAM 策略的版本 2 或更高版本**

1. 在 AWS RAM 控制台中导航到 “**我共享：资源**共享” 页面。

1. 由于 AWS RAM 资源共享存在于特定 AWS 区域中，因此请从控制台右上角的下拉列表中选择相应的 AWS 区域。

1. 选择与您的 Amazon DataZone 域名对应的资源共享，然后选择**修改**。您可以使用域名的名称或 ID 来识别 Amazon DataZone 域的 RAM 共享，因为创建的 RAM 共享名为:`DataZone-<domain-name>-<domain-id>`。

1. 选择**下一步**以继续执行下一步骤，以便检查 RAM 策略的版本并进行修改。

1. 确保 RAM 策略的版本为版本 2 或更高版本。如果不是这样，请使用下拉列表选择版本 2 或更高版本。

1. 选择**跳至步骤 4: 审核和更新**。

1. 选择**更新资源共享**。

**步骤 2：从关联账户创建订阅目标**
+ 在当前版本中，Amazon APIs 仅 DataZone 支持使用创建订阅目标。以下是一些有效负载示例，您可以用来创建订阅目标，以满足您的 AWS Glue 表格和 Amazon Redshift 表或视图的订阅。有关更多信息，请参阅 [CreateSubscriptionTarget](https://docs.aws.amazon.com/datazone/latest/APIReference/API_CreateSubscriptionTarget.html)。

   AWS Glue 的订阅目标示例

  ```
  {
          "domainIdentifier": "<DOMAIN_ID>",
          "environmentIdentifier": "<ENVIRONMENT_ID>",
          "name": "<SUBSCRIPTION_TARGET_NAME>",
          "type": "GlueSubscriptionTargetType",
          "authorizedPrincipals" : ["IAM_ROLE_ARN"],
          "subscriptionTargetConfig" : [{"content": "{\"databaseName\": \"<DATABASE_NAME>\"}", "formName": "GlueSubscriptionTargetConfigForm"}],
          "manageAccessRole": "<GLUE_DATA_ACCESS_ROLE_IN_ASSOCIATED_ACCOUNT_ARN>",
          "applicableAssetTypes" : ["GlueTableAssetType"],
          "provider": "Amazon DataZone"
  }
  ```

  Amazon Redshift 的订阅目标示例：

  ```
  {
          "domainIdentifier": "<DOMAIN_ID>",
          "environmentIdentifier": "<ENVIRONMENT_ID>",
          "name": "<SUBSCRIPTION_TARGET_NAME>",
          "type": "RedshiftSubscriptionTargetType",
          "authorizedPrincipals" : ["REDSHIFT_DATABASE_ROLE_NAME"],
          "subscriptionTargetConfig" : [{"content": "{\"databaseName\": \"<DATABASE_NAME>\", \"secretManagerArn\": \"<SECRET_MANAGER_ARN>\",\"clusterIdentifier\": \"<CLUSTER_IDENTIFIER>\"}", "formName": "RedshiftSubscriptionTargetConfigForm"}],
          "manageAccessRole": "<REDSHIFT_DATA_ACCESS_ROLE_IN_ASSOCIATED_ACCOUNT_ARN>",
          "applicableAssetTypes" : ["RedshiftViewAssetType", "RedshiftTableAssetType"],
          "provider": "Amazon DataZone"
  }
  ```
**重要**  
您在上述 API 调用中使用的 environmentIdentifier 应存在于您从中发出 API 调用的同一关联账户中。否则，API 调用将失败。
您在 “AuthorizedPrincipals” 中使用的 IAM 角色 ARN 是在订阅资产添加到订阅目标后，亚马逊 DataZone 将向其授予访问权限的角色。这些授权主体必须与在其中创建订阅目标的环境属于同一账户。
供应商字段的值必须为 “Amazon DataZone” DataZone ，亚马逊才能完成订阅配送。
中提供的数据库名称 subscriptionTargetConfig 应该已经存在于创建目标的账户中。亚马逊 DataZone 不会创建此数据库。此外，请确保管理访问角色具有此数据库的 CREATE TABLE 权限。
此外，请确保作为授权委托人提供的角色（ AWS Glue 的 IAM 角色和 Amazon Redshift 的数据库角色）已存在于环境账户中。对于 Amazon Redshift 订阅目标，在连接到集群时需要对所代入的角色进行额外更新。此角色必须为该角色附加 RedshiftDbRoles 标签。此标签的值可以是逗号分隔的列表。该值应是创建订阅目标时作为授权主体提供的数据库角色。

**步骤 3：订阅新表并履行新目标的订阅**
+ 创建订阅目标后，您可以订阅新表，Amazon DataZone 会将其实现上述目标。