

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

# 共有フェデレーティッドカタログへのアクセス
<a name="catalog-resource-link"></a>

 AWS Lake Formation クロスアカウント機能を使用すると、ユーザーは分散データレイクを複数の AWS アカウント、 AWS 組織間で安全に共有したり、別のアカウントの IAM プリンシパルと直接共有して、メタデータや基盤となるデータにきめ細かなアクセスを提供したりできます。

Lake Formation は AWS Resource Access Manager 、 (AWS RAM) サービスを使用してリソース共有を容易にします。カタログリソースを別のアカウントと共有すると、 は、リソース許可を承認または拒否するための招待を被付与者アカウント AWS RAM に送信します。

Amazon Athena や Redshift Spectrum などの統合されたサービスでは、クエリに共有リソースを含めることができるように、リソースリンクが必要になります。プリンシパルは、別の から共有リソース AWS Glue Data Catalog へのリソースリンクを に作成する必要があります AWS アカウント。リソースリンクの詳細については、「[Lake Formation でのリソースリンクの仕組み](https://docs.aws.amazon.com/lake-formation/latest/dg/resource-links-about.html)」を参照してください。

*カタログリンクコンテナ*は、他のアカウントのローカルまたはクロスアカウントのフェデレーションデータベースレベルのカタログを参照する Data Catalog オブジェクトです AWS 。カタログリンクコンテナ内にデータベースリンクとテーブルリンクを作成することもできます。データベースリンクまたはテーブルリンクを作成するときは、同じターゲット Amazon Redshift データベースレベルカタログ (Amazon Redshift データベース) に存在するターゲットリソースを指定する必要があります。

カタログリンクコンテナを作成するには、Lake Formation の `CREATE_CATALOG` または `glue:CreateCatalog` アクセス許可が必要です。

 フェデレーティッドカタログ内のデータベースまたはテーブルを 間で共有するには、**クロスアカウントバージョン設定**バージョン 4 AWS アカウント以降が必要です。

## クロスアカウントフェデレーティッドカタログへのカタログリンクコンテナの作成
<a name="create-resource-link-catalog"></a>

 AWS Lake Formation コンソール、`CreateCatalog`API、 AWS Glue または AWS Command Line Interface () を使用して、任意の AWS リージョンの Redshift データベースレベルのフェデレーティッドカタログを指すカタログリンクコンテナを作成できますAWS CLI。

**共有カタログへのカタログリンクコンテナを作成するには (コンソール)**

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開きます。Lake Formation `CREATE_CATALOG` アクセス許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインで **[カタログ]** を選択してから、**[カタログの作成]** を選択します。

1. **[カタログの詳細の設定]** ページで、以下の情報を指定します。  
**名前**  
カタログ名と同じルールに従う名前を入力します。名前は、ターゲット共有カタログと同じものにすることができます。  
**タイプ**  
カタログのタイプとして **[カタログリンクリンクコンテナ]** を選択します。  
**ソース**  
`Redshift` を選択してください。  
**ターゲット Redshift カタログ**  
Redshift のデータベースレベルのフェデレーティッドカタログを選択するか、リストからローカル (所有) カタログを選択します。  
このリストには、アカウントと共有されているすべてのカタログが含まれています。各カタログにカタログ所有者アカウント ID が記載されていることに注意してください。アカウントと共有されていることが分かっているカタログが表示されない場合は、以下を確認してください。  
   + データレイク管理者でない場合は、データレイク管理者からそのカタログに対する Lake Formation アクセス許可が付与されていることを確認します。
   + データレイク管理者であり、アカウントが付与元のアカウントと同じ AWS 組織にない場合は、カタログに関する AWS Resource Access Manager (AWS RAM) リソース共有招待を承諾していることを確認します。詳細については、「[からのリソース共有の招待の承諾 AWS RAM](accepting-ram-invite.md)」を参照してください。
コンソールを使用してカタログリンクコンテナを作成する場合、クロスアカウント Redshift カタログを選択しようとすると、**[ターゲット Redshift カタログ]** ドロップダウンが `No matches` を表示することがあります。この表示にもかかわらず、Amazon Redshift フェデレーティッドデータベースレベルカタログ (Amazon Redshift データベース) のターゲット ARN を入力フィールドに手動で入力しても、フォームは引き続き正常に動作します。例: `arn:aws:glue:us-east-1:123456789012:catalog/federated-catalog-redshift/dev`。  
この動作は、コンソールが現在サインインしているアカウント内のみで潜在的な候補を検索できるために発生します。ドロップダウンは自動入力機能を目的としていますが、クロスアカウントアクセスのために ARN を手動で入力することもできます。

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

1. [**次へ**] を選択します。

1. (オプション) **[アクセス許可を追加]** を選択して、他のプリンシパルにアクセス許可を付与します。

   ただし、カタログリンクコンテナに対してアクセス許可を付与しても、ターゲットの (リンクされた) カタログへのアクセス許可は付与されません。Athena でカタログリンクが表示されるようにするには、ターゲットのカタログに対するアクセス許可を別途付与する必要があります。

1. 次に、カタログリンクコンテナの詳細を確認し、**[カタログを作成]** を選択します。

   これにより、**[カタログ]** ページでリンクコンテナ名を表示できます。

   これで、カタログリンクコンテナにデータベースリンクとテーブルリンクを作成して、クエリエンジンからのアクセスを有効にすることができます。

**カタログリンクコンテナ CLI の作成例**
+ 次の例では、`TargetRedshiftCatalog` オブジェクトは Amazon Redshift フェデレーティッドデータベースレベルカタログ (Amazon Redshift データベース) の ARN を指定します。カタログリンクコンテナを作成する際は、`DataLakeAccess` を有効にする必要があります。

  ```
  aws glue create-catalog \
    --cli-input-json 
      '{
          "Name": {{"linkcontainer"}}, 
          "CatalogInput": {
              "TargetRedshiftCatalog": {
                 "CatalogArn": {{"arn:aws:us-east-1:123456789012:catalog/nscatalog/dev"}}
               },
              "CatalogProperties": {
                "DataLakeAccessProperties" : {
                  "DataLakeAccess" : true,
                  "DataTransferRole" : {{"arn:aws:iam::111122223333:role/DataTransferRole"}}
               } 
             }
          }
      }'
  ```

## カタログリンクコンテナでのリソースリンクの作成
<a name="create-db-table-link"></a>

 データベースリンクとテーブルリンクへのリソースリンクは、カタログリンクコンテナの下に作成できます。データベースリソースリンクまたはテーブルリソースリンクを作成するときは、リンクコンテナが指すのと同じターゲット Amazon Redshift データベースレベルカタログ (Amazon Redshift データベース) に存在するターゲットリソースを指定する必要があります。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して、共有 Amazon Redshift データベースまたはテーブルへのリソースリンクを作成できますAWS CLI。
+ 詳細な手順については、「[共有 Data Catalog データベースへのリソースリンクの作成](create-resource-link-database.md)」を参照してください。

  以下は、カタログリンクコンテナの下にデータベースリソースリンクを作成する AWS CLI 例です。

  ```
  aws glue create-database \
    --cli-input-json \
      '{
          "CatalogId": {{"111122223333:linkcontainer"}},
          "DatabaseInput": {
              "Name": {{"dblink"}},
               "TargetDatabase": {
                 "CatalogId": {{"123456789012:nscatalog/dev"}},
                  "DatabaseName": {{"schema1"}}
               }
          }
      }'
  ```
+ カタログリンクコンテナの下にテーブルリソースリンクを作成するには、まずローカルに AWS Glue データベースを作成して AWS Glue Data Catalog 、テーブルリソースリンクを含める必要があります。

  共有テーブルへのリソースリンクの作成の詳細については、「[共有 Data Catalog テーブルへのリソースリンクの作成](create-resource-link-table.md)」を参照してください。
  +  テーブルリソースリンクを含むデータベースの作成例

    ```
    aws glue create-database \
      --cli-input-json \
          '{
              "CatalogId": {{"111122223333:linkcontainer"}},
              "DatabaseInput": {
                  "Name": {{"db1"}},
                  "Description": {{"creating parent database for table link"}}
              }
          }'
    ```
  +  テーブルリソースリンクの作成例

    ```
    aws glue create-table \
      --cli-input-json \
        '{
            "CatalogId": {{"111122223333:linkcontainer"}},
             "DatabaseName": {{"db1"}},
            "TableInput": {
                "Name": "tablelink",
                "TargetTable": {
                    "CatalogId": {{"123456789012:nscatalog/dev"}},
                   "DatabaseName": {{"schema1"}}, 
                    "Name": {{"table1"}}
                 }
            }
        }'
    ```