

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# AWS Glue Data Catalog のビュー
<a name="data-catalog-views-overview"></a>

このトピックでは、AWS Glue Data Catalog でのビューの作成方法について説明します。Data Catalog のビューを使用すると、同じスキーマを使用して異なるデータソースのデータにアクセスできます。

Data Catalog のビューを作成することで、Amazon Athena や Amazon EMR Spark などのエンジン間で使用できる単一の共通ビュースキーマとメタデータオブジェクトを作成できます。そうすることで、ユースケースに合わせてデータレイクとデータウェアハウスの全体で同じビューを使用できます。データカタログのビューは、定義者ビューとして分類されている点で特別です。定義者ビューでは、アクセス許可はビューをクエリするユーザーではなく、ビューを作成したユーザーによって定義されます。データカタログのビューを作成するユースケースとメリットをいくつか紹介します。
+ ユーザーが必要とするアクセス許可に基づいてデータアクセスを制限するビューを作成します。例えば、データカタログのビューを使用して、人事 (HR) 部門に属さない従業員が個人を特定できる情報 (PII) を表示できないようにすることができます。
+ ユーザーが不完全なレコードにアクセスできないようにします。データカタログのビューに特定のフィルターを適用することで、データカタログビュー内のデータレコードを常に完全な状態にすることができます。
+ データカタログビューには、ビューの作成に使用するクエリ定義がビューの作成のための完全性を必ず備える必要であるというセキュリティ上のメリットが含まれます。このセキュリティ上のメリットにより、データカタログのビューは悪意のあるプレイヤーからの SQL コマンドの影響を受けにくくなります。
+ データカタログのビューには、基になるテーブルをユーザーが利用できなくてもユーザーがビューにアクセスできるなどの、通常のビューと同じメリットをサポートしています。

データカタログ内にビューを作成するには、[Spectrum 外部テーブル](https://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-external-tables.html)、[Lake Formation 管理のデータ共有](https://docs.aws.amazon.com/redshift/latest/dg/what_is_datashare.html#lf_datashare_overview)に含まれるオブジェクト、または [Apache Iceberg テーブル](https://docs.aws.amazon.com/redshift/latest/dg/what_is_datashare.html#lf_datashare_overview)が必要です。

データカタログビュー定義は AWS Glue Data Catalog に保存されます。AWS Lake Formation を使用して、リソース許可、列付与、またはタグベースのアクセスコントロールを通じてアクセスを許可します。Lake Formation でのアクセス権の付与と取り消しについての詳細は、「[データカタログリソースに対するアクセス許可の付与と取り消し](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html)」を参照してください。

Amazon Redshift を使用してそのような AWS Glue Data Catalog ビューを参照するクエリを実行すると、Amazon Redshift は特定のシステムテーブルとビュー列のフィールドを自動的にマスクし、そのクエリに関するメタデータをログに記録します。詳細については、「*Amazon Redshift 管理ガイド*」の「[Secure logging](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing-secure-logging.html)」を参照してください。

## 前提条件
<a name="data-catalog-views-prerequisites"></a>

データカタログ内にビューを作成する前に、以下の前提条件が完了していることを確認します。
+ 次の信頼ポリシーが IAM ロールに定義されていることを確認します。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                 "Service": [
                      "glue.amazonaws.com",
                      "lakeformation.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------
+ また、以下のパスロールポリシーも必要です。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1",
              "Action": [
                  "iam:PassRole"
              ],
              "Effect": "Allow",
              "Resource": "*",
              "Condition": {
                  "StringEquals": {
                      "iam:PassedToService": [ 
                          "glue.amazonaws.com",
                          "lakeformation.amazonaws.com"
                      ]
                  }
              }
          }
      ]
  }
  ```

------
+ 最後に、次のアクセス許可も必要です。
  + `Glue:GetDatabase`
  + `Glue:GetDatabases`
  + `Glue:CreateTable`
  + `Glue:GetTable`
  + `Glue:UpdateTable`
  + `Glue:DeleteTable`
  + `Glue:GetTables`
  + `Glue:SearchTables`
  + `Glue:BatchGetPartition`
  + `Glue:GetPartitions`
  + `Glue:GetPartition`
  + `Glue:GetTableVersion`
  + `Glue:GetTableVersions`

## エンドツーエンドの例
<a name="data-catalog-views-example"></a>

まず、データカタログデータベースに基づいて外部スキーマを作成します。

```
CREATE EXTERNAL SCHEMA IF NOT EXISTS external_schema FROM DATA CATALOG DATABASE 'external_data_catalog_db' 
IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role';
```

データカタログビューを作成できるようになります。

```
CREATE EXTERNAL PROTECTED VIEW external_schema.remote_view 
AS SELECT * FROM external_schema.remote_table;
```

これで、ビューのクエリを開始できます。

```
SELECT * FROM external_schema.remote_view;
```

データカタログ内のビューに関連する SQL コマンドの詳細については、「[外部ビューの作成](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_VIEW.html)」、「[外部ビューの変更](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_EXTERNAL_VIEW.html)」、および「[外部ビューの削除](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_EXTERNAL_VIEW.html)」を参照してください。

## 考慮事項と制限事項
<a name="data-catalog-views-considerations"></a>

データカタログ内に作成されたビューに適用される考慮事項と制限は、以下のとおりです。
+ AWS Glue Data Catalog ビューは、RA3 でプロビジョニングされたクラスターまたは Redshift Serverless ワークグループでのみサポートされています。
+ 別のビューを基にしたデータカタログビューは作成できません。
+ データカタログビューに作成できるベーステーブルは 10 個のみです。
+ ビューの定義者は、ベーステーブルに対する完全な `SELECT GRANTABLE` アクセス許可を持っている必要があります。
+ ビューには、Lake Formation オブジェクトとビルトインのみを含めることができます。以下のオブジェクトはビュー内には入れることができません。
  + システムテーブル
  + ユーザー定義関数 (UDF)
  + Redshift のテーブル、ビュー、マテリアライズドビュー、遅延バインディングビューであって、Lake Formation 管理のデータ共有内にないもの。
+ ビューにはネストされた Redshift Spectrum テーブルを含めることはできません。
+ ビューの基本オブジェクトについての AWS Glue の表現は、ビューと同じ AWS アカウント とリージョンになければなりません。