

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Autorización del acceso a la API de datos de Amazon Redshift
<a name="data-api-access"></a>

Para poder obtener acceso a la API de datos, el usuario debe contar con la autorización respectiva. Puede autorizar a un usuario a obtener acceso a la API de datos si agrega la política administrada, que es una política de AWS Identity and Access Management (IAM) predefinida, a ese usuario. Como práctica recomendada, aconsejamos asociar las políticas de permisos a un rol de IAM y luego asignarlo a los usuarios y grupos según sea necesario. Para obtener más información, consulte [Administración de identidades y accesos en Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html). Para ver los permisos permitidos y denegados por las políticas administradas, consulte la consola de IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)). 

# Configuración de permisos de IAM
<a name="data-api-iam"></a>

Amazon Redshift proporciona la política administrada `AmazonRedshiftDataFullAccess`. Esta política proporciona acceso pleno a las operaciones de la API de datos de Amazon Redshift. Esta política también permite el acceso limitado a operaciones específicas de la API de Amazon Redshift, AWS Secrets Manager e IAM que se necesitan para autenticar y obtener acceso a un clúster de Amazon Redshift o a un grupo de trabajo de Redshift sin servidor. 

También puede crear una política de IAM propia que permita obtener acceso a recursos específicos. Para crear su política, utilice la política `AmazonRedshiftDataFullAccess` como la plantilla de partida. Una vez creada la política, agréguela a todos los usuarios que deban acceder a la API de datos.

Tenga en cuenta los siguientes requisitos de la política de IAM asociada al usuario:
+ Si se utiliza AWS Secrets Manager para la autenticación, confirmar la política permite que se use la acción `secretsmanager:GetSecretValue` para recuperar el secreto etiquetado con la clave `RedshiftDataFullAccess`.
+ Si se utilizan credenciales temporales para autenticar un clúster, confirmar la política permite el uso de la acción `redshift:GetClusterCredentials` en el nombre de usuario de base de datos `redshift_data_api_user` correspondiente a cualquiera de las bases de datos del clúster. Es necesario que este nombre de usuario ya se haya creado en su base de datos.
+ Si utiliza credenciales temporales para autenticarse en un grupo de trabajo sin servidor, confirme que la política permite el uso de la acción `redshift-serverless:GetCredentials` para recuperar el grupo de trabajo etiquetado con la clave `RedshiftDataFullAccess`. El usuario de la base de datos se asigna 1:1 a la identidad de AWS Identity and Access Management (IAM) de origen. Por ejemplo, el usuario sample\$1user se asigna al usuario `IAM:sample_user` de la base de datos y el rol de IAM sample\$1role se asigna a `IAMR:sample_role`. Para obtener más información acerca de las identidades de IAM, consulte [Identidades (usuarios, grupos de usuarios y roles)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) en la Guía del usuario de IAM.
+ La acción de IAM `redshift-data:GetStatementResult` permite el acceso a las operaciones `GetStatementResult` y `GetStatementResultV2` de la API.

En los siguientes enlaces, encontrará más información sobre AWS Identity and Access Management en la *Guía del usuario de IAM*.
+ Para obtener más información sobre cómo crear roles de IAM, consulte [Creación de roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html). 
+ Para obtener más información sobre cómo crear una política de IAM, consulte [Creación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html).
+ Para obtener información sobre cómo agregar una política de IAM a un usuario, consulte [Adición y eliminación de permisos de identidad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html). 

## Ejecución de una consulta en un clúster que es propiedad de otra cuenta
<a name="data-api-run-query-on-others-cluster"></a>

Para ejecutar una consulta en un clúster que es propiedad de otra cuenta, la cuenta propietaria debe proporcionar un rol de IAM que la API de datos pueda asumir en la cuenta que llama. Por ejemplo, supongamos que la cuenta B posee un clúster al que la cuenta A necesita acceder. La cuenta B puede asociar la política administrada de AWS `AmazonRedshiftDataFullAccess` al rol de IAM de la cuenta B. A continuación, la cuenta B se fía de la cuenta A gracias a una política de confianza como la siguiente:``

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/someRoleA"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Por último, el rol de IAM de la cuenta A debe ser capaz de asumir el rol de IAM de la cuenta B.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/someRoleB"
    }
}
```

------

## Especificación de un rol de IAM que restrinja los recursos a los grupos de trabajo de Redshift sin servidor y a los clústeres de Amazon Redshift en una Cuenta de AWS
<a name="data-api-restrict-to-account"></a>

Puede especificar los ARN de recursos en la política basada en identidad para controlar el acceso a los grupos de trabajo de Redshift sin servidor y a los clústeres de Amazon Redshift en una Cuenta de AWS. En este ejemplo se muestra cómo podría crear una política que permita el acceso a la API de datos solo para el grupo de trabajo y los clústeres en la Cuenta de AWS especificada.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "redshift-data:*",
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:workgroup/*",
                "arn:aws:redshift:us-east-1:111122223333:cluster:*"
            ]
        }
    ]
}
```

------

## Configuración de una política de IAM que restrinja el acceso a la información de la instrucción SQL solo al propietario de la instrucción
<a name="data-api-restrict-to-statement-owner"></a>

De forma predeterminada, la API de datos de Amazon Redshift trata el rol de IAM utilizado al llamar a `ExecuteStatement` y `BatchExecuteStatement` como el propietario de la instrucción SQL. Cualquier persona a la que se le permita asumir el rol puede acceder a la información sobre la instrucción SQL, incluidos los resultados. Para restringir el acceso a la información de una instrucción SQL a una sesión de rol de IAM con un propietario concreto, agregue una condición `redshift-data:statement-owner-iam-userid: "${aws:userid}"`. La siguiente política de IAM restringe el acceso.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

Puede utilizar la condición `statement-owner-iam-userid` con `CancelStatement`, `DescribeStatement`, `GetStatementResult` y `ListStatements`. Para obtener más información, consulte [Acciones definidas por la API de datos de Amazon Redshift](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid).

## Configuración de una política de IAM que restrinja el acceso a los resultados de SQL solo al propietario de la sesión
<a name="data-api-restrict-session-owner"></a>

De forma predeterminada, la API de datos de Amazon Redshift trata el rol de IAM utilizado al llamar a `ExecuteStatement` y `BatchExecuteStatement` como el propietario de la sesión de base de datos que ejecuta la instrucción SQL. Cualquier usuario al que se le permita asumir el rol puede enviar consultas a la sesión de base de datos. Para restringir el acceso de sesión a una sesión de rol de IAM con un propietario concreto, agregue una condición ` redshift-data:session-owner-iam-userid: "${aws:userid}"`. La siguiente política de IAM restringe el acceso.

La siguiente política de IAM permite que solo el propietario de la sesión obtenga los resultados de las instrucciones. La condición `session-owner-iam-userid` se usa para limitar el acceso a los recursos al `userid` especificado.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ 
                "redshift-data:ExecuteStatement",
                "redshift-data:BatchExecuteStatement"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:session-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

Puede utilizar la condición `session-owner-iam-userid` con `ExecuteStatement` y `BatchExecuteStatement`. Para obtener más información, consulte [Acciones definidas por la API de datos de Amazon Redshift](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid).

# Almacenamiento de credenciales de base de datos en AWS Secrets Manager
<a name="data-api-secrets"></a>

Al llamar a la API de datos, puede transmitir las credenciales del clúster o grupo de trabajo sin servidor con un secreto en AWS Secrets Manager. Para pasar credenciales mediante este método, especifique el nombre del secreto o el Nombre de recurso de Amazon (ARN) del secreto. 

Para almacenar credenciales con Secrets Manager, se necesita contar con el permiso de la política administrada `SecretManagerReadWrite`. Para obtener más información sobre los permisos mínimos, consulte [Creación y administración de secretos con AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html) en la *Guía del usuario de AWS Secrets Manager*. 

**Si desea almacenar las credenciales en un secreto para un clúster de Amazon Redshift**

1. Utilice la consola de AWS Secrets Manager para crear un secreto que contenga credenciales para el clúster:
   + Cuando elija **Store a new secret** (Almacenar un secreto nuevo), elija **Credentials for Redshift cluster** (Credenciales para clúster de Redshift). 
   + Almacene sus valores para **User name** (Nombre de usuario) que es el usuario de la base de datos, **Password** (Contraseña) y **DB cluster **(Clúster de base de datos) que es el identificador del clúster, en su secreto. 
   + Etiquete el secreto con la clave `RedshiftDataFullAccess`. La política administrada de AWS `AmazonRedshiftDataFullAccess` solo permite la acción `secretsmanager:GetSecretValue` para los secretos etiquetados con la clave `RedshiftDataFullAccess`. 

   Para obtener instrucciones, consulte [Creación de un secreto básico](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) en la *Guía del usuario de AWS Secrets Manager*.

1. Utilice la consola de AWS Secrets Manager para ver los detalles del secreto que ha creado, o ejecute el comando de la `aws secretsmanager describe-secret` AWS CLI.

   Anote el nombre y el ARN del secreto. Puede utilizarlos en las llamadas a la API de datos.

**Para almacenar las credenciales en un secreto para un grupo de trabajo sin servidor**

1. Utilice los comandos de la AWS CLI de AWS Secrets Manager para almacenar un secreto que contenga credenciales para el grupo de trabajo sin servidor:
   + Cree su secreto en un archivo, por ejemplo, un archivo JSON llamado `mycreds.json`. Proporcione los valores de **User name** (Nombre de usuario) (usuario de base de datos) y **Password** (Contraseña) en el archivo.

     ```
     {
           "username": "myusername",
           "password": "mypassword"
     }
     ```
   + Almacene los valores en el secreto y etiquete el secreto con la clave `RedshiftDataFullAccess`.

     ```
     aws secretsmanager create-secret --name MyRedshiftSecret  --tags Key="RedshiftDataFullAccess",Value="serverless" --secret-string file://mycreds.json
     ```

     El ejemplo siguiente muestra el código resultante.

     ```
     {
         "ARN": "arn:aws:secretsmanager:region:accountId:secret:MyRedshiftSecret-mvLHxf",
         "Name": "MyRedshiftSecret",
         "VersionId": "a1603925-e8ea-4739-9ae9-e509eEXAMPLE"
     }
     ```

   Para obtener más información, consulte [Creación de un secreto básico con AWS CLI](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html#proc-create-api) en la *Guía del usuario de AWS Secrets Manager*.

1. Utilice la consola de AWS Secrets Manager para ver los detalles del secreto que ha creado, o ejecute el comando de la `aws secretsmanager describe-secret` AWS CLI.

   Anote el nombre y el ARN del secreto. Puede utilizarlos en las llamadas a la API de datos.

# Creación de un punto de enlace de la VPC de Amazon VPC (AWS PrivateLink) para la API de datos
<a name="data-api-vpc-endpoint"></a>

Amazon Virtual Private Cloud (Amazon VPC) le permite lanzar recursos de AWS, como clústeres y aplicaciones de Amazon Redshift, en una nube virtual privada (VPC). AWS PrivateLink proporciona conectividad segura y privada entre las nubes virtuales privadas (VPC) y los servicios de AWS a través de la red de Amazon. Con AWS PrivateLink, puede crear puntos de enlace de la VPC que puede utilizar para conectarse a servicios a través de diferentes cuentas y VPC basadas en Amazon VPC. Para obtener más información acerca de AWS PrivateLink, consulte [Servicios de punto de enlace de la VPC (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) en la *guía del usuario de Amazon Virtual Private Cloud*.

Puede llamar a la API de datos con los puntos de enlace de la Amazon VPC. El uso de un punto de enlace de la Amazon VPC mantiene el tráfico entre las aplicaciones de su Amazon VPC y la API de datos en la red de AWS, sin usar direcciones IP públicas. Los puntos de enlace de la Amazon VPC pueden ayudarle a cumplir los requisitos reglamentarios y de conformidad relacionados con la limitación de la conectividad a internet público. Por ejemplo, si utiliza un punto de enlace de la Amazon VPC, puede mantener el tráfico entre una aplicación que se ejecuta en una instancia Amazon EC2 y la API de datos en las VPC donde se contienen.

Después de crear el punto de enlace de la Amazon VPC, puede comenzar a usarlo sin realizar ningún cambio de código o configuración en la aplicación.

**Para crear un punto de enlace de la Amazon VPC para la API de datos**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon VPC en [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Elija **Endpoints (Puntos de enlace)** y, a continuación, elija **Create Endpoint (Crear punto de enlace)**.

1. En la página **Crear punto de conexión**, en **Categoría de servicio**, elija **Servicios de AWS**. En **Service Name** (Nombre del servicio), elija **redshift-data** (`com.amazonaws.region.redshift-data`).

1. Para **VPC**, elija la VPC en la que crear el punto de enlace.

   Elija la VPC que contiene la aplicación que realiza llamadas a la API de datos.

1. En **Subnets** (Subredes), elija la subred para cada zona de disponibilidad (AZ) utilizada por el servicio de AWS que ejecuta la aplicación.

   Para crear un punto de enlace de la VPC de Amazon VPC, especifique el rango de direcciones IP privadas con las que se puede acceder al punto de enlace. Para ello, elija la subred para cada zona de disponibilidad. Al hacerlo, se restringe el punto de enlace de la VPC al rango de direcciones IP privadas específico de cada zona de disponibilidad y también se crea un punto de enlace de la Amazon VPC en cada zona de disponibilidad.

1. En **Enable Private DNS Name** (Habilitar nombre de DNS privado), seleccione **Enable for this endpoint** (Habilitar para este punto de enlace).

   El DNS privado resuelve el nombre de host de DNS de la API de datos estándar (`https://redshift-data.region.amazonaws.com`) en las direcciones IP privadas asociadas con el nombre de host de DNS específico del punto de enlace de la Amazon VPC. Como resultado, puede acceder al punto de enlace de la VPC de la API de datos utilizando los SDK de AWS CLI o la AWS sin realizar ningún cambio de código o configuración para actualizar la URL del punto de enlace de la API de datos.

1. En **Security group (Grupo de seguridad)**, elija los grupos de seguridad que deban asociarse al punto de enlace de la Amazon VPC.

   Elija el grupo de seguridad que permita el acceso al servicio de AWS que ejecuta la aplicación. Por ejemplo, si una instancia Amazon EC2 está ejecutando la aplicación, elija el grupo de seguridad que permita el acceso a la instancia Amazon EC2. El grupo de seguridad le permite controlar el tráfico al punto de enlace de la Amazon VPC desde los recursos de la VPC.

1. Elija **Create endpoint** (Crear punto de enlace).

Una vez creado el punto de enlace, elija el vínculo en la Consola de administración de AWS para ver los detalles del punto de enlace.

La ficha **Details** (Detalles) del punto de enlace muestra los nombres de host de DNS que se generaron al crear el punto de enlace de la Amazon VPC.

Puede utilizar el punto de enlace estándar (`redshift-data.region.amazonaws.com`) o uno de los puntos de enlace específicos de la VPC para llamar a la API de datos dentro de la Amazon VPC. El punto de enlace de la API de datos estándar se dirige automáticamente al punto de enlace de la Amazon VPC. Este enrutamiento se produce porque cuando se creó el punto de enlace de la Amazon VPC se habilitó el nombre de host de DNS privado.

Cuando utiliza un punto de enlace de la Amazon VPC en una llamada a la API de datos, todo el tráfico entre la aplicación y la API de datos permanece en las Amazon VPC donde se contienen. Puede usar un punto de enlace de la Amazon VPC para cualquier tipo de llamada a la API de datos. Para obtener más información sobre la llamada a la API de datos, consulte [Consideraciones que deben tenerse en cuenta al llamar a la API de datos de Amazon Redshift](data-api.md#data-api-calling-considerations).

# Unión a grupos de bases de datos al conectarse a un clúster
<a name="data-api-dbgroups"></a>

Los grupos de bases de datos son colecciones de usuarios de bases de datos. Se pueden conceder privilegios de base de datos a los grupos. Un administrador puede configurar un rol de IAM para que estos grupos de bases de datos se tengan en cuenta cuando su código SQL se ejecute con la API de datos. Para obtener más información sobre los grupos de bases de datos, consulte [Grupos](https://docs.aws.amazon.com/redshift/latest/dg/r_Groups.html) en la *Guía para desarrolladores de bases de datos de Amazon Redshift*. 

Puede configurar el rol de IAM del intermediario de la API de datos para que el usuario de base de datos especificado en la llamada se una a los grupos de bases de datos cuando la API de datos se conecte a un clúster. Esta capacidad solo se admite cuando se conecta a clústeres aprovisionados. No es compatible cuando se conecta a grupos de trabajo de Redshift sin servidor. El rol de IAM del intermediario de la API de datos también debe permitir la acción `redshift:JoinGroup`.

Agregue etiquetas a los roles de IAM para configurarlo. El administrador del rol de IAM del intermediario agrega etiquetas con la clave `RedshiftDbGroups` y un valor de clave de una lista de grupos de bases de datos. El valor es una lista de nombres de grupos de bases de datos separados por dos puntos (:) hasta una longitud total de 256 caracteres. Los grupos de bases de datos deben estar previamente definidos en la base de datos conectada. Si algún grupo especificado no se encuentra en la base de datos, se omite. Por ejemplo, para los grupos de bases de datos `accounting` y `retail`, la clave-valor es `accounting:retail`. El par clave-valor de etiqueta `{"Key":"RedshiftDbGroups","Value":"accounting:retail"}` lo utiliza la API de datos para determinar qué grupos de base de datos están asociados al usuario de base de datos proporcionado en la llamada a la API de datos.

**Unión a grupos de bases de datos**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Roles** (Roles) y, a continuación, elija el nombre de la entidad que desea editar.

1. Elija la pestaña **Etiquetas** y, a continuación, **Administrar etiquetas**.

1. Elija **Agregar etiqueta** y, a continuación, agregue la clave **RedshiftDbGroups** y un valor que sea una *lista de grupos de bases de datos separados por dos puntos*.

1. Seleccione **Save changes (Guardar cambios)**.

   Ahora, cuando una entidad principal de IAM (con este rol de IAM asociado) llama a la API de datos, el usuario de base de datos especificado se une a los grupos de base de datos indicados en el rol de IAM.

Para obtener más información sobre cómo adjuntar una etiqueta a una entidad principal, incluidos los roles de IAM y los usuarios de IAM, consulte [Etiquetado de recursos de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) en la *Guía del usuario de IAM*. 