

# サポートされている PostgreSQL 拡張機能バージョン
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions"></a>

RDS for PostgreSQL は、多くの PostgreSQL エクステンションをサポートしています。PostgreSQL コミュニティでは、これらをモジュールと呼ぶことがあります。エクステンションは、PostgreSQL エンジンが提供する機能を拡張します。Amazon RDS がサポートするエクステンションのリストは、該当する PostgreSQL バージョンのデフォルトの DB パラメータグループで確認できます。また、次の例に示すように、`psql` で `rds.extensions` パラメータを表示することで、最新のエクステンションのリストを確認することもできます。

```
SHOW rds.extensions; 
```

**注記**  
マイナーバージョンのリリースで追加されたパラメータは、`rds.extensions` で `psql` パラメータを使用する際に正しく表示されない場合があります。

RDS for PostgreSQL 13 以降、`rds_superuser` 以外のデータベースユーザーがインストールできる拡張機能があります。これらは、*信頼できる拡張機能*として知られています。詳細については[PostgreSQL 信頼できるエクステンション](#PostgreSQL.Concepts.General.Extensions.Trusted)を参照してください。

RDS for PostgreSQL の特定のバージョンでは、`rds.allowed_extensions` パラメータに対応しています。このパラメータにより、`rds_superuser` は RDS for PostgreSQL DB インスタンスにインストールできる拡張機能を制限します。(詳しくは、「[PostgreSQL エクステンションのインストールを制限する](#PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction)」を参照してください。) 

利用できる各 RDS for PostgreSQL バージョンでサポートされている PostgreSQL 拡張機能のリストについては、*Amazon RDS for PostgreSQL リリースノート*の「[Amazon RDS でサポートされる PostgreSQL の拡張機能](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html)」を参照してください。

## PostgreSQL エクステンションのインストールを制限する
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction"></a>

PostgreSQL DB インスタンスにインストールできるエクステンションを制限できます。デフォルトでは、このパラメータは設定されていないため、ユーザーに権限がある場合は、サポートされている任意の拡張機能を追加できます。そのためには、`rds.allowed_extensions` パラメータをカンマで区切った拡張子名の文字列に設定します。このパラメータに拡張機能のリストを追加すると、RDS for PostgreSQL DB インスタンスで使用できる拡張機能が明示的に特定できます。その後、PostgreSQL DB インスタンスにインストールできるのは、これらのエクステンションだけです。

`rds.allowed_extensions` パラメータのデフォルトの文字列は '\$1' です。これは、そのエンジンのバージョンで使用できるエクステンションは何でもインストールできることを意味します。動的パラメータであるため、`rds.allowed_extensions` パラメータを変更しても、データベースを再起動する必要はありません。

`rds.allowed_extensions` パラメータを使用するには、PostgreSQL DB インスタンスエンジンは次のバージョンのいずれかである必要があります。
+ すべての PostgreSQL 16 バージョン
+ PostgreSQL 15 以降のすべてのバージョン
+ PostgreSQL 14 以降のすべてのバージョン
+ PostgreSQL 13.3 以降のマイナーバージョン
+ PostgreSQL 12.7 以降のマイナーバージョン

 どのエクステンションのインストールが許可されているかを確認するには、次の psql コマンドを使用します。

```
postgres=> SHOW rds.allowed_extensions;
 rds.allowed_extensions
------------------------
 *
```

エクステンションが `rds.allowed_extensions` パラメータのリストから除外される前にインストールされていた場合でも、エクステンションは正常に使用でき、`ALTER EXTENSION` や `DROP EXTENSION` などのコマンドは引き続き機能します。ただし、エクステンションが制限されると、制限されたエクステンションの `CREATE EXTENSION` コマンドは失敗します。

`CREATE EXTENSION CASCADE` とのエクステンションの依存関係のインストールも制限されています。エクステンションとその依存関係は、`rds.allowed_extensions` で指定する必要があります。拡張依存のインストールが失敗すると、`CREATE EXTENSION CASCADE` 文全体が失敗します。

`rds.allowed_extensions` パラメータにエクステンションが含まれていない場合、インストールしようとすると、次のようなエラーが表示されます。

```
ERROR: permission denied to create extension "extension-name" 
HINT: This extension is not specified in "rds.allowed_extensions".
```

## PostgreSQL 信頼できるエクステンション
<a name="PostgreSQL.Concepts.General.Extensions.Trusted"></a>

ほとんどの PostgreSQL エクステンションをインストールするには、`rds_superuser` 権限が必要です。PostgreSQL 13 では、信頼できるエクステンションが導入されました。これにより、一般ユーザーに `rds_superuser` 特権を付与する必要が少なくなります。この機能を使用すると、ユーザーは、`CREATE` ロールを要求する代わりに、現在のデータベースに対する `rds_superuser` 権限を持っている場合、多くのエクステンションをインストールできます。詳細については、PostgreSQL ドキュメントの SQL [CREATE EXTENSION](https://www.postgresql.org/docs/current/sql-createextension.html) コマンドを参照してください。

以下に、現在のデータベースに対する `CREATE` 権限を持ち、`rds_superuser` ロールを必要としないユーザーがインストールできるエクステンションを示します。
+ bool\$1plperl
+ [btree\$1gin](http://www.postgresql.org/docs/current/btree-gin.html)
+ [btree\$1gist](http://www.postgresql.org/docs/current/btree-gist.html)
+ [citext](http://www.postgresql.org/docs/current/citext.html)
+ [cube](http://www.postgresql.org/docs/current/cube.html)
+ [dict\$1int](http://www.postgresql.org/docs/current/dict-int.html)
+ [fuzzystrmatch](http://www.postgresql.org/docs/current/fuzzystrmatch.html)
+  [hstore](http://www.postgresql.org/docs/current/hstore.html)
+ [ intarray](http://www.postgresql.org/docs/current/intarray.html)
+ [isn](http://www.postgresql.org/docs/current/isn.html)
+ jsonb\$1plperl
+ [ltree](http://www.postgresql.org/docs/current/ltree.html)
+ [pg\$1trgm](http://www.postgresql.org/docs/current/pgtrgm.html)
+ [pgcrypto](http://www.postgresql.org/docs/current/pgcrypto.html)
+ [plperl](https://www.postgresql.org/docs/current/plperl.html)
+ [plpgsql](https://www.postgresql.org/docs/current/plpgsql.html)
+ [pltcl](https://www.postgresql.org/docs/current/pltcl-overview.html)
+ [tablefunc](http://www.postgresql.org/docs/current/tablefunc.html) 
+ [tsm\$1system\$1rows](https://www.postgresql.org/docs/current/tsm-system-rows.html)
+ [tsm\$1system\$1time](https://www.postgresql.org/docs/current/tsm-system-time.html)
+ [unaccent](http://www.postgresql.org/docs/current/unaccent.html)
+ [uuid-ossp](http://www.postgresql.org/docs/current/uuid-ossp.html)

利用できる各 RDS for PostgreSQL バージョンでサポートされている PostgreSQL 拡張機能のリストについては、*Amazon RDS for PostgreSQL リリースノート*の「[Amazon RDS でサポートされる PostgreSQL の拡張機能](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html)」を参照してください。