

 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/)を参照してください。

# Amazon Redshift でデータ共有にオブジェクトを追加する
<a name="writes-adding-datashare"></a>

コンソールや SQL を使用して、次のいずれかの手順に従って、さまざまなタイプのデータベースオブジェクトを追加できます。

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

**[範囲指定された許可]** セクションまたは **[直接アクセス許可]** セクションを使用して、データ共有にオブジェクトを追加できます。**[範囲指定された許可を付与]** または **[直接アクセス許可を付与]** を選択し、オブジェクトを追加します。**[追加]** ボタンを選択してオブジェクトを追加します。ダイアログが表示されます。以下のステップを実行します。

1. **[範囲指定された許可を付与]** を選択した場合は、**[範囲指定された許可を付与]** ページが表示されます。このページで、データベースレベルまたはスキーマレベルで範囲指定されたアクセス許可を付与できます。アクセス許可の範囲が指定されたデータ共有では、該当するデータベースやスキーマ内の現在および将来のすべてのオブジェクトに対して、指定されたアクセス許可が認められます。詳細については、「[スコープ設定アクセス許可](t_scoped-permissions.md)」を参照してください。

   1. 次に、**[データベースで範囲指定されたアクセス許可]** を選択して、データベースレベルで範囲指定されたアクセス許可を付与します。範囲指定のアクセス許可を付与すると、データ共有の作成時に現在のデータベースに適用されます。これらのアクセス許可は、個々のオブジェクトに付与することはできません。また、既存のオブジェクトと新しいオブジェクト (スキーマ、テーブル、ビュー、UDF) の両方に適用されます。

   1. スキーマ、テーブルまたはビュー、またはユーザー定義関数に対する範囲指定のアクセス許可を選択します。つまり、データベース内のすべてのオブジェクトに対して、選択したアクセス許可がコンシューマーに付与されます。**[付与]** を選択すると、データベースで範囲指定されたアクセス許可が付与されます。

   1. 次に、**[スキーマで範囲指定されたアクセス許可]** を選択して、スキーマレベルで範囲指定されたアクセス許可を付与します。スキーマで範囲指定されたアクセス許可を付与すると、そのスキーマに追加されたすべてのオブジェクトに対して、指定されたデータ共有アクセス許可が認められます。

   1. データ共有に追加するスキーマをドロップダウンから選択します。一度に選択できるスキーマは 1 つだけです。次に、選択したスキーマに付与する直接アクセス許可を選択します。

   1. テーブル、ビュー、ユーザー定義関数などのスキーマオブジェクトに対する範囲指定のアクセス許可を選択します。スキーマ内のすべての該当するオブジェクトに対してアクセス許可が付与されます。既存のオブジェクトも、今後追加されるオブジェクトも対象です。適用されたら、範囲指定のアクセス許可を取り消さない限り、オブジェクトからアクセス許可を削除することはできません。

   1. **[付与]** を選択すると、スキーマで範囲指定されたアクセス許可が付与されます。

1. **[直接アクセス許可の付与]** を選択した場合は、**[直接アクセス許可の付与]** ページが表示されます。このページで、スキーマ、テーブル、ビュー、ユーザー定義関数などの各オブジェクトレベルで直接アクセス許可を付与できます。直接アクセス許可を付与するには、まず、関連するスキーマをデータ共有に追加する必要があります。

   1. 次に、**[直接アクセス許可を付与]** を選択して、特定のスキーマに対する直接アクセス許可を適用します。その後、テーブル、ビュー、ユーザー定義関数などのスキーマオブジェクトに対するスキーマアクセス許可を選択し、データ共有に追加するスキーマを選択します。**[付与]** を選択すると、データ共有にスキーマが追加されます。

   1. データ共有にスキーマを追加したら、引き続き、スキーマオブジェクトに直接アクセス許可を追加できます。**[直接アクセス許可の付与]** をもう一度選択します。**[直接アクセス許可の付与]** ページが表示されます。次に、スキーマオブジェクトの直接アクセス許可のタブに移動します。

   1. **[テーブルとビューに直接アクセス許可を付与]** を選択して、これらのオブジェクトに対するオブジェクトレベルの直接アクセス許可を付与します。必要な直接アクセス許可と必要なオブジェクトをリストから選択します。検索フィールドを使用して、データ共有オブジェクトを検索します。[付与] を選択すると、テーブルとビューがデータ共有に追加されます。

   1. **[ユーザー定義関数に直接アクセス許可を付与]** を選択して、ユーザー定義関数に対するオブジェクトレベルの直接アクセス許可を付与します。必要な直接アクセス許可と必要なオブジェクトをリストから選択します。検索フィールドを使用して、データ共有オブジェクトを検索します。**[付与]** を選択すると、ユーザー定義関数がデータ共有に追加されます。

1. **[今後のオブジェクトを追加]** するかどうかも選択できます。スキーマに追加されたデータ共有オブジェクトを含めることを選択すると、スキーマに追加されたオブジェクトが自動的にデータ共有に追加されます。

1. **[追加]** を選択してセクションを完成させ、オブジェクトを追加します。これらは **[データ共有オブジェクト]** の下に一覧表示されます。

1. オブジェクトを追加したら、個々のオブジェクトを選択し、そのアクセス許可を編集できます。スキーマを選択すると、**スコープ設定アクセス許可**を追加するかどうかを尋ねるダイアログが表示されます。これにより、既存の各オブジェクト、またはスキーマに追加された各オブジェクトに、オブジェクトタイプに適したアクセス許可のセットがあらかじめ選択されるようになります。例えば、管理者は、追加されたすべてのテーブルに SELECT アクセス許可と UPDATE アクセス許可を付与するように設定できます。

1. すべてのデータ共有オブジェクトが、**[範囲指定された許可]** セクションまたは **[直接アクセス許可]** セクションのリストに表示されます。

1. **データコンシューマー**セクションでは、名前空間を追加したり、データ共有のコンシューマーとして AWS アカウントを追加したりできます。

1. **[データ共有を作成]** を選択して変更を保存します。

データ共有を作成すると、そのデータ共有は **[名前空間で作成されたデータ共有]** の下のリストに表示されます。リストからデータ共有を選択すると、そのコンシューマー、オブジェクト、その他のプロパティを表示できます。

------
#### [ SQL ]

SQL を使用する場合、データ共有の所有者が、データ共有に追加するスキーマに対する USAGE を付与する必要があります。GRANT を使用して、スキーマに対する各種アクション (CREATE、USAGE など) を許可します。スキーマには、以下の共有オブジェクトが含まれます。

```
CREATE SCHEMA myshared_schema1;
CREATE SCHEMA myshared_schema2;
 
GRANT USAGE ON SCHEMA myshared_schema1 TO DATASHARE my_datashare;
GRANT CREATE, USAGE ON SCHEMA myshared_schema2 TO DATASHARE my_datashare;
```

または、管理者は引き続き ALTER コマンドを実行して、データ共有にスキーマを追加できます。この方法でスキーマを追加した場合、USAGE アクセス許可のみが付与されます。

```
ALTER DATASHARE my_datashare ADD SCHEMA myshared_schema1;
```

管理者がスキーマを追加すると、スキーマ内のオブジェクトに対するデータ共有のアクセス許可を付与できます。読み取りと書き込みの両方のアクセス許可が可能です。GRANT ALL サンプルは、すべてのアクセス許可を付与する方法を示しています。

```
GRANT SELECT, INSERT ON TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1
TO DATASHARE my_datashare;
                     
GRANT ALL ON TABLE myshared_schema1.table4 TO DATASHARE my_datashare;
```

ALTER DATASHARE などのコマンドを引き続き実行してテーブルを追加できます。実行すると、追加されたオブジェクトには SELECT アクセス許可のみが付与されます。

```
ALTER DATASHARE my_datashare ADD TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1;
```

データベースまたはスキーマ内の特定タイプのすべてのオブジェクトを対象とした範囲指定のアクセス許可を、データ共有に付与することができます。アクセス許可の範囲が指定されたデータ共有では、該当するデータベースやスキーマ内の現在および将来のすべてのオブジェクトに対して、指定されたアクセス許可が認められます。

 データベースレベルのスコープ付きアクセス許可の範囲は、[SVV\_DATABASE\_PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md) で確認できます。スキーマレベルのスコープ付きアクセス許可の範囲は、[SVV\_SCHEMA\_PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md) で確認できます。

以下は、範囲指定のアクセス許可をデータ共有に付与するための構文です。スコープ設定アクセス許可の詳細については、「[スコープ設定アクセス許可](t_scoped-permissions.md)」を参照してください。

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }FOR SCHEMAS IN
DATABASE db_name 
TO DATASHARE { datashare_name}

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } }FOR TABLES IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}

GRANT { EXECUTE | ALL [ PRIVILEGES ] }FOR FUNCTIONS IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}
```

------