

# Versiones de extensiones de PostgreSQL compatibles
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions"></a>

RDS for PostgreSQL admite muchas extensiones de PostgreSQL. La comunidad de PostgreSQL a veces se refiere a estos como módulos. Las extensiones amplían la funcionalidad proporcionada por el motor PostgreSQL. Puede encontrar una lista de las extensiones admitidas por Amazon RDS en el grupo de parámetros de base de datos predeterminado de esa versión de PostgreSQL. También puede ver la lista de extensiones actuales que usan `psql` mostrando el parámetro `rds.extensions` como en el siguiente ejemplo.

```
SHOW rds.extensions; 
```

**nota**  
Los parámetros añadidos en una versión secundaria pueden mostrarse de manera incorrecta cuando se utiliza el parámetro `rds.extensions` en `psql`. 

A partir de RDS para PostgreSQL 13, ciertas extensiones pueden instalarlas usuarios de bases de datos que no sean `rds_superuser`. Esto se conoce como *extensiones de confianza*. Para obtener más información, consulte [Extensiones de confianza de PostgreSQL](#PostgreSQL.Concepts.General.Extensions.Trusted). 

Ciertas versiones de RDS para PostgreSQL admiten el parámetro `rds.allowed_extensions`. Este parámetro permite que un `rds_superuser` limite las extensiones que se pueden instalar en la instancia de base de datos de RDS para PostgreSQL. Para obtener más información, consulte [Restringir la instalación de extensiones de PostgreSQL](#PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction). 

Para obtener una lista de las extensiones y versiones de PostgreSQL compatibles con cada versión disponible de RDS para PostgreSQL, consulte [Extensiones de PostgreSQL admitidas en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html) en las *Notas de la versión de Amazon RDS para PostgreSQL*. 

## Restringir la instalación de extensiones de PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction"></a>

Puede restringir qué extensiones se pueden instalar en una instancia de base de datos de PostgreSQL. De forma predeterminada, este parámetro no está configurado, por lo que se puede agregar cualquier extensión compatible si el usuario tiene permisos para hacerlo. Para ello, establezca el parámetro `rds.allowed_extensions` en una cadena de nombres de extensión separados por comas. Al agregar una lista de extensiones a este parámetro, identifica explícitamente las extensiones que puede utilizar su instancia de base de datos de RDS para PostgreSQL. Solo estas extensiones se pueden instalar en la instancia de base de datos de PostgreSQL.

La cadena predeterminada para el parámetro `rds.allowed_extensions` es '\$1', lo que significa que se puede instalar cualquier extensión disponible para la versión del motor. Cambiar el parámetro `rds.allowed_extensions` no requiere un reinicio de la base de datos porque es un parámetro dinámico.

El motor de instancia de base de datos de PostgreSQL debe ser una de las siguientes versiones para que pueda utilizar el parámetro:`rds.allowed_extensions`
+ Todas las versiones de PostgreSQL 16
+ PostgreSQL 15 y todas las versiones posteriores
+ PostgreSQL 14 y todas las versiones posteriores
+ PostgreSQL 13.3 y versiones secundarias posteriores
+ PostgreSQL 12.7 y versiones secundarias posteriores

 Para ver qué instalaciones de extensión están permitidas, utilice el siguiente comando psql.

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

Si se instaló una extensión antes de dejarla fuera de la lista en el parámetro `rds.allowed_extensions`, la extensión todavía se puede utilizar normalmente y comandos como `ALTER EXTENSION` y `DROP EXTENSION` continuarán funcionando. Sin embargo, una vez restringida una extensión, los comandos `CREATE EXTENSION` de la extensión restringida fallarán.

La instalación de dependencias de extensión con `CREATE EXTENSION CASCADE` también están restringidas. La extensión y sus dependencias deben especificarse en `rds.allowed_extensions`. Si falla una instalación de dependencia de extensión, se producirá un error en toda la instrucción `CREATE EXTENSION CASCADE`. 

Si no se incluye una extensión con el parámetro `rds.allowed_extensions`, verá un error como el siguiente si intenta instalarla.

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

## Extensiones de confianza de PostgreSQL
<a name="PostgreSQL.Concepts.General.Extensions.Trusted"></a>

Para instalar la mayoría de las extensiones de PostgreSQL requiere privilegios de `rds_superuser`. PostgreSQL 13 presentó extensiones de confianza, que reducen la necesidad de conceder privilegios `rds_superuser` a los usuarios normales. Con esta característica, los usuarios pueden instalar muchas extensiones si tienen el privilegio de `CREATE` en la base de datos actual en lugar de requerir el rol de `rds_superuser`. Para obtener más información, consulte el comando de SQL [CREATE EXTENSION](https://www.postgresql.org/docs/current/sql-createextension.html) en la documentación de PostgreSQL. 

A continuación se enumeran las extensiones que puede instalar un usuario que tiene el privilegio de `CREATE` en la base de datos actual y no requieren el rol de:`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)

Para obtener una lista de las extensiones y versiones de PostgreSQL compatibles con cada versión disponible de RDS para PostgreSQL, consulte [Extensiones de PostgreSQL admitidas en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html) en las *Notas de la versión de Amazon RDS para PostgreSQL*. 