

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 既存の IAM ロールを使用して Amazon DataZone サブスクリプションを実現する
<a name="use-your-own-role"></a>

現在のリリースでは、Amazon DataZone は、既存の IAM ロールを使用してデータにアクセスできるようにサポートしています。これを達成するには、サブスクリプションを実現するために使用している Amazon DataZone 環境でサブスクリプションターゲットを作成できます。関連付けられた AWS アカウントの 1 つで環境のサブスクリプションターゲットを作成するには、次のステップを使用します。

**ステップ 1: Amazon DataZone ドメインが RAM ポリシーのバージョン 2 以降を使用していることを確認する**

1. RAM コンソールの**「共有元: リソース共有**」ページに移動します。 AWS 

1. RAM AWS リソース共有は特定の AWS リージョンに存在するため、コンソールの右上隅にあるドロップダウンリストから適切な AWS リージョンを選択します。

1. Amazon DataZone ドメインに対応するリソース共有を選択し、**[変更]** を選択します。`DataZone-<domain-name>-<domain-id>` という名前で作成されるため、Amazon DataZone ドメインの RAM 共有は、ドメインの名前または ID を使用して識別できます。

1. **[次へ]** を選択して次のステップに進み、RAM ポリシーのバージョンを確認して変更できます。

1. RAM ポリシーのバージョンがバージョン 2 以降であることを確認します。そうでない場合は、ドロップダウンを使用してバージョン 2 以降を選択します。

1. **「ステップ 4: 確認して更新する」にスキップ** を選択します。

1. **[リソース共有を更新]** を選択します。

**ステップ 2: 関連付けられたアカウントからサブスクリプションターゲットを作成する**
+ 現在のリリースでは、Amazon DataZone は API を使用したサブスクリプションターゲットの作成のみをサポートしています。以下は、 Glue テーブルと Amazon Redshift AWS テーブルまたはビューのサブスクリプションを達成するためのサブスクリプションターゲットを作成するために使用できるペイロードの例です。詳細については、「[CreateSubscriptionTarget](https://docs.aws.amazon.com/datazone/latest/APIReference/API_CreateSubscriptionTarget.html)」を参照してください。

  Glue AWS のサブスクリプションターゲットの例

  ```
  {
          "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 アクセス許可があることを確認してください。
また、承認されたプリンシパルとして提供されるロール ( Glue AWS の IAM ロールと Amazon Redshift のデータベースロール) が環境アカウントに既に存在していることを確認します。Amazon Redshift サブスクリプションターゲットの場合、クラスターへの接続中に引き受けるロールには追加の更新が必要です。このロールでは、RedshiftDbRoles タグがロールにアタッチされている必要があります。タグの値は、カンマ区切りのリストである場合もあります。値は、サブスクリプションターゲットの作成時に承認されたプリンシパルとして提供されたデータベースロールである必要があります。

**ステップ 3: 新しいテーブルをサブスクライブし、新しいターゲットのサブスクリプションを実現する**
+ サブスクリプションターゲットを作成したら、新しいテーブルをサブスクライブでき、Amazon DataZone はそれを上記のターゲットに対して実現します。