使用现有 IAM 角色来履行 Amazon DataZone 订阅
在当前版本中,Amazon DataZone 支持您使用现有的 IAM 角色来访问数据。为此,您可以在用于履行订阅的 Amazon DataZone 环境中创建订阅目标。要在某个关联的 AWS 账户中为环境创建订阅目标,可以使用以下步骤:
步骤 1:确保 Amazon DataZone 域使用的是版本 2 或更高版本的 RAM 策略
-
在 AWS RAM 控制台中导航到由我共享: 资源共享页面。
-
由于 AWS RAM 资源共享存在于特定 AWS 区域,因此,请从控制台右上角的下拉列表中选择相应的 AWS 区域。
-
选择与您的 Amazon DataZone 域对应的资源共享,然后选择修改。可以使用 Amazon DataZone 域的名称或 ID 来为该域标识 RAM 共享,因为该 RAM 共享是使用名称
DataZone-<domain-name>-<domain-id>创建的。 -
选择下一步以继续执行下一步骤,以便检查 RAM 策略的版本并进行修改。
-
确保 RAM 策略的版本为版本 2 或更高版本。如果不是这样,请使用下拉列表选择版本 2 或更高版本。
-
选择跳至步骤 4: 审核和更新。
-
选择更新资源共享。
步骤 2:从关联账户创建订阅目标
-
在当前版本中,Amazon DataZone 仅支持使用 API 创建订阅目标。以下是一些有效载荷示例,它们可用来创建订阅目标以履行 AWS Glue 表和 Amazon Redshift 表或视图的订阅。有关更多信息,请参阅 CreateSubscriptionTarget。
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 是一个角色,在将订阅的资产添加到订阅目标后,Amazon DataZone 将向该角色授予访问权限。这些授权主体必须与在其中创建订阅目标的环境属于同一账户。
-
提供者字段的值必须为“Amazon DataZone”,这样 Amazon DataZone 才能完成订阅履行。
-
subscriptionTargetConfig 中提供的数据库名称应已存在于用于创建目标的账户中。Amazon DataZone 将不会创建此数据库。此外,请确保管理访问角色具有此数据库的 CREATE TABLE 权限。
-
此外,请确保作为授权主体提供的角色(AWS Glue 的 IAM 角色和 Amazon Redshift 的数据库角色)已存在于环境账户中。对于 Amazon Redshift 订阅目标,在连接到集群时需要对所代入的角色进行额外更新。此角色必须附加了 RedshiftDbRoles 标签。此标签的值可以是逗号分隔的列表。该值应是创建订阅目标时作为授权主体提供的数据库角色。
-
步骤 3:订阅新表并履行新目标的订阅
-
创建订阅目标后,您可以订阅新表,Amazon DataZone 将履行上述目标的订阅。