

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

# Amazon Redshift フェデレーティッドカタログの作成
<a name="create-ns-catalog"></a>

このトピックでは、クラスターまたは名前空間の招待を受け入れ、フェデレーティッドマルチレベルカタログを作成し、他のプリンシパルにアクセス許可を付与するために必要な手順について説明します。これらのタスクは、Lake Formation コンソール、 AWS Command Line Interface (AWS CLI)、または APIs/SDKs。このトピックの例では、同じアカウント内のプロデューサークラスター/名前空間、データカタログ、およびデータコンシューマーを示しています。

Lake Formation のクロスアカウント機能の詳細については、「[Lake Formation でのクロスアカウントデータ共有](cross-account-permissions.md)」を参照してください。

**データカタログで Amazon Redshift 名前空間を管理するには**

1. 名前空間への招待を確認して承諾します。

------
#### [ Console ]

   1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) にデータレイク管理者としてサインインします。**[データカタログ]** の **[カタログ]** ページに移動します。

   1. アクセスが許可されている名前空間の招待を確認します。**[ステータス]** 列は、名前空間の現在の参加ステータスを示します。**[未承諾]** ステータスは、名前空間に追加されたものの、まだ承諾していないか招待を拒否したことを示します。  
![\[保留中の招待を含むカタログページ。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/catalog-details.png)

   1. 名前空間またはクラスターの招待に応答するには、招待名を選択し、**[招待の確認]** を選択します。**[招待の承諾または拒否]** で、招待の詳細を確認します。**[Accept]** (承諾) を選択して招待を承諾するか、**[Reject]** (拒否) を選択して招待を却下します。招待を拒否した場合、名前空間にはアクセスできません。

------
#### [ AWS CLI ]

   以下の例では、招待を表示、承諾、登録する方法を示します。 AWS アカウント ID を有効な AWS アカウント ID に置き換えます。`data-share-arn` を、名前空間を参照する実際の Amazon リソースネーム (ARN) に置き換えます。

   1. 保留中の招待を確認します。

      ```
      aws redshift describe-data-shares \
       --data-share-arn 'arn:aws:redshift:us-east-1:123456789012:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/ds_internal_namespace' \
      ```

   1. 招待を承諾します。

      ```
       aws redshift associate-data-share-consumer \
       --data-share-arn 'arn:aws:redshift:us-east-1:123456789012:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/ds_internal_namespace' \
       --consumer-arn 'arn:aws:glue:us-east-1:123456789012:catalog'
      ```

   1. Lake Formation アカウントにクラスターまたは名前空間を登録します。[RegisterResource](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_RegisterResource.html) API オペレーションを使用して、データ共有を Lake Formation に登録します。`DataShareArn` は `ResourceArn` の入力パラメータです。
**注記**  
これは必須の手順です。

      ```
      aws lakeformation register-resource \
       --resource-arn 'arn:aws:redshift:us-east-1:123456789012:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/ds_internal_namespace'
      ```

------

1. フェデレーティッドカタログを作成します。

    招待を承諾したら、Amazon Redshift 名前空間内のオブジェクトをデータカタログにマッピングするフェデレーティッドカタログをデータカタログに作成する必要があります。データレイク管理者、またはカタログの作成に必要なアクセス許可を持つユーザーもしくはロールである必要があります。

------
#### [ Console ]

   1. 名前空間の**[招待]**を受け入れると、**[カタログの詳細の設定]** ページが表示されます。

   1. **[カタログの詳細の設定]** ページで、カタログの一意の名前を入力します。カタログ名には小文字を使用します。カタログ名は 255 文字以下にする必要があります。この識別子を使用して、名前空間の内部をメタデータ階層 (catalogid.dbName.schema.table) にマッピングします。

   1.  キーの説明を入力します。説明は 2,048 文字以下にする必要があります。

   1. 次に、**[Iceberg 互換エンジンからこのカタログにアクセスする]** チェックボックスにチェックを入れると、Athena や Amazon EMR での Apache Spark のような Apache Iceberg 互換の分析エンジンを使用して、Amazon Redshift リソースにアクセスできるようになります。

      Amazon Redshift を使用してフェデレーティッドカタログにアクセスするためにデータレイクのアクセスを有効にする必要はありません。  
![\[アクセス有効化オプションを含むカタログの作成ページ。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/catalog-access.png)

   1. これらのクエリエンジンが Amazon Redshift 名前空間に読み書きできるようにするには、Amazon Redshift データウェアハウスのワークロードに影響を与えることなく、読み取りおよび書き込みオペレーションを実行するために必要なコンピューティングリソースとストレージリソースを備えたマネージド Amazon Redshift クラスター AWS Glue を作成します。

      Amazon S3 バケットとの間でデータを転送するために必要なアクセス許可を持つ IAM ロールも指定する必要があります。

   1. デフォルトでは、Amazon Redshift クラスター内のデータは AWS マネージドキーを使用して暗号化されます。Lake Formation には、暗号化用のカスタム KMS キーを作成するオプションがあります。カスタマーマネージドキーを使用している場合は、特定のキーポリシーをキーに追加する必要があります。

       カスタマーマネージドキーを使用して Amazon Redshift クラスター/名前空間のデータを暗号化している場合は、**[暗号化設定のカスタマイズ]** を選択します。カスタムキーを使用するには、KMS キーにカスタムマネージドキーポリシーを追加する必要があります。詳細については、「[で Amazon Redshift 名前空間を管理するための前提条件 AWS Glue Data Catalog](redshift-ns-prereqs.md)」を参照してください。

------
#### [ AWS CLI ]

    次のサンプルコードを使用し、 AWS CLIを使用してデータカタログに公開された Amazon Redshift データを含むカタログを作成します。

   ```
   aws glue create-catalog 
   --cli-input-json \
   '{
       "Name": "nscatalog", 
       "CatalogInput": {
           "Description": "Redshift federated catalog",
           "CreateDatabaseDefaultPermissions" : [],
           "CreateTableDefaultPermissions": [],
           "FederatedCatalog": {
               "Identifier": "arn:aws:redshift:us-east-1:123456789012:datashare:11524d7f-f56d-45fe-83f7-d7bb0a4d6d71/ds_internal_namespace",
               "ConnectionName": "aws:redshift"
           },
           "CatalogProperties": {
             "DataLakeAccessProperties" : {
               "DataLakeAccess" : true,
               "DataTransferRole" : "arn:aws:iam::123456789012:role/DataTransferRole"
            } 
          }
       }
   }'
   ```

------

1. 自分のアカウントまたは外部アカウントのユーザーに許可を付与します。

------
#### [ AWS マネジメントコンソール ]

   1. 共有のカタログ、データベース、テーブルに対するアクセス許可を他のユーザーに付与するには、**[次へ]** を選択します。

   1.  **[アクセス許可を追加]** 画面で、プリンシパルと、付与するアクセス許可のタイプを選択します。  
![\[プリンシパルタイプと許可オプションを含むカタログアクセス許可ページ。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/catalog-permissions.png)

      1.  **[Principals]** (プリンシパル) セクションでプリンシパルタイプを選択してから、アクセス許可の付与先となるプリンシパルを指定します。
         + **IAM ユーザーとロール** – IAM ユーザーとロールのリストから、ユーザーまたはロールを 1 つ以上選択します。
         + ** SAML ユーザーとグループ** – SAML および Amazon Quick ユーザーとグループの場合は、SAML を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs)、または Amazon Quick ユーザーまたはグループの ARNs を入力します。各 ARN の後で **[Enter]** キーを押します。

           ARNs」を参照してください。 AWS CLI AWS CLI 
         + **外部アカウント** – AWS、 AWS 組織、または IAM プリンシパルには、IAM ユーザーまたはロールの 1 つ以上の有効な AWS アカウント IDs、組織 IDs、組織単位 IDs、または ARN を入力します。各 ID の後で [Enter] キーを押します。組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。組織単位 ID は「ou-」で始まり、その後に 4～32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」ダッシュと 8～32 個の追加の小文字または数字が続きます。

      1.  **[Permissions]** (許可) セクションで、許可と付与可能な許可を選択します。

         **[カタログのアクセス許可]** で、付与するアクセス許可を 1 つ以上選択します。**付与可能なアクセス**許可で、付与受信者が AWS アカウントの他のプリンシパルに付与できるアクセス許可を選択します。このオプションは、外部アカウントから IAM プリンシパルにアクセス許可を付与する場合はサポートされません。

         **[スーパーユーザー]** を選択して、カタログ内のリソース (データベース、テーブル、ビュー) に対する無制限のアクセス許可をユーザーに付与します。

   1. **[Add]** (追加) を選択します。

------
#### [ AWS CLI ]

   以下の例を使用して、 AWS CLIでカタログ、データベース、テーブルのアクセス許可を付与します。
   + 次の例は、フェデレーティッドカタログに対するアクセス許可を付与する方法を示しています。

     ```
     aws lakeformation grant-permissions
      --cli-input-cli-json \
        '{
              "Principal": {
                   "DataLakePrincipalIdentifier": "arn:aws:iam::123456789012:role/non-admin"
               },
               "Resource": {
                    "Catalog": {
                          "Id": "123456789012:nscatalog"
                     }
                 },
                 "Permissions": [
                        "DESCRIBE","CREATE_CATALOG"
                  ],
                 "PermissionsWithGrantOption": [
                  ]
         }'
     ```
   + 次の例を使用して、データベースに対するアクセス許可を付与します。

     ```
     aws lakeformation grant-permissions \
       --cli-input-json \
               '{
                   "Principal": {
                       "DataLakePrincipalIdentifier": "arn:aws:iam::123456789012:role/non-admin"
                   },
                   "Resource": {
                       "Database": {
                           "CatalogId": "123456789012:nscatalog/dev",
                           "Name": "public"
                       }
                   },
                   "Permissions": [
                       "ALL"
                   ]
               }'
     ```
   +  次の例は、Amazon Redshift データベースのテーブルに対するアクセス許可を付与する方法を示しています。

     ```
     aws lakeformation grant-permissions \
       --cli-input-json \
             '{
                 "Principal": {
                     "DataLakePrincipalIdentifier": "arn:aws:iam::123456789012:role/non-admin"
                 },
                 "Resource": {
                     "Table": {
                         "CatalogId": "123456789012:nscatalog2/dev",
                         "DatabaseName": "public",
                         "TableWildcard" : {}
                     }
                 },
                 "Permissions": [
                     "ALL"
                 ]
             }'
     ```

------

1. **[次へ]** を選択してカタログの詳細を確認し、フェデレーティッドカタログを作成します。新しく作成されたフェデレーティッドカタログとカタログオブジェクトが**[カタログ]** ページに表示されます。

   Amazon Redshift フェデレーティッドカタログを参照するには `catalogID = 123456789012:Redshift-federated catalog id` を使用します。