¿Cómo puedo programar consultas para un clúster de Amazon Redshift?

5 minutos de lectura
0

Estoy intentando programar una consulta para que se ejecute en un clúster de Amazon Redshift. ¿Cómo puedo hacerlo?

Descripción breve

Puede utilizar el editor de consultas para ejecutar, ver, guardar y programar consultas SQL para los clústeres de Amazon Redshift aprovisionados. Amazon EventBridge inicia las consultas programadas.

Solución

Nota: Si se producen errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de la AWS CLI.

Permisos del editor de consultas

Para utilizar el editor de consultas, los usuarios deben tener un conjunto mínimo de permisos en Amazon Redshift. Si el clúster utiliza otros servicios de AWS, los usuarios también deben tener permisos para esos servicios. Por ejemplo, los secretos de AWS Secrets Manager y las claves de AWS Key Management Service (AWS KMS). Para obtener más información, consulte Permisos necesarios para usar el editor de consultas de la consola de Amazon Redshift.

Puede utilizar las políticas administradas de AWS Identity and Access Management (IAM) para administrar los permisos basados en los roles de IAM. Para obtener más información, consulte Políticas (predefinidas) administradas por AWS para Amazon Redshift.

Para programar consultas, el usuario y el rol de IAM asociados a la consulta deben tener permiso para administrar el editor de consultas. Para obtener instrucciones, consulte Configuración de permisos para programar una consulta en la consola de Amazon Redshift.

Programación de consultas mediante la Consola de administración de AWS

Para programar la consulta mediante la Consola de administración de AWS, siga estos pasos:

Nota:

  • Debe utilizar el editor de consultas v1 para programar las consultas.
  • Solo puede usar este editor de consultas con clústeres aprovisionados.

1.    Abra la consola de Amazon Redshift.

2.    En el panel de navegación, elija Query editor (Editor de consultas).

3.    Siga las instrucciones para conectarse a una base de datos del clúster.

4.    Siga las instrucciones para crear una programación para ejecutar una instrucción SQL.

5.    Si utiliza AWS Secrets Manager con Amazon Redshift, elija su secreto.

6.    Si utiliza credenciales temporales de usuario de IAM, elija el clúster y proporcione la base de datos y los nombres de usuario. Nota: El permiso GetClusterCredentials debe estar presente para que el usuario de IAM pueda utilizar las credenciales temporales.

7.    Elija Save (Guardar).

Nota: Si activó Simple Notification Service (Amazon SNS), asegúrese de que la acción de API “sns:Publish” esté presente en “events.amazonaws.com”. Para confirmar, agregue la siguiente instrucción:

{
  "Sid": "Allow_Publish_Events",
  "Effect": "Allow",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Action": "sns:Publish",
  "Resource": "arn:aws:sns:us-east-1:{ACCOUNT_ID}:{SNS_TOPIC_NAME}"
}

Programación de consultas mediante una instrucción SQL con EventBridge

Puede programar instrucciones SQL mediante EventBridge y la API de datos de Amazon Redshift. En el siguiente ejemplo, se ha configurado un cronograma para actualizar los eventos actuales cada 5 minutos.

1.    Cree una regla de eventos de EventBridge llamada “scheduled-refresh-currentEvents” y prográmela para que se ejecute cada 5 minutos mediante expresiones cron or rate similares a las siguientes:

aws events put-rule \
--name scheduled-refresh-currentEvents \
--schedule-expression "cron(0/5 * * * ? *)"

2.    Cree y guarde un archivo JSON denominado refreshCurrentEvents.json con su editor de texto favorito que contenga el clúster, el rol y el ARN de AWS Secrets Manager:

{
  "Rule": "scheduled-refresh-currentEvents",
  "EventBusName": "default",
  "Targets": [
    {
      "Id": "scheduled-refresh-currentEvents",
      "Arn": "<Clsuter ARN>",
      "RoleArn": "<Role ARN>",
      "RedshiftDataParameters": {
        "SecretManagerArn": "<Secrets Manager ARN>",
        "Database": "<Database Name>",
        "Sql": "REFRESH MATERIALIZED VIEW currentEvents;",
        "StatementName": "scheduled-refresh-currentEvents",
        "WithEvent": true
      }
    }
  ]
}

3.    Cree un destino para el evento mediante el archivo JSON guardado:

aws events put-targets --cli-input-json file://refreshCurrentEvents.json

4.    Para quitar el destino y eliminar la regla, ejecute los siguientes comandos:

aws events remove-targets --rule scheduled-refresh-currentEvents --ids scheduled-refresh-currentEvents
aws events delete-rule --name scheduled-refresh-currentEvents

Visualización del estado y los resultados de SQL

Para ver el estado y el resultado de la consulta, siga estos pasos:

1.    Abra la consola de Amazon Redshift.

2.    En el panel de navegación, elijaQuery editor (Editor de consultas) y, a continuación,Scheduled queries (Consultas programadas).

3.    Elija el nombre de la consulta.

4.    En Schedule history (Historial de programación), anote el ID. Necesitará el ID en el paso 7.

5.    Para recuperar los resultados de la consulta, asuma el rol de IAM utilizado para programar la consulta mediante el comando assume-role de la AWS CLI, similar al siguiente:

aws sts assume-role --role-arn "<Role ARN>" --role-session-name AWSCLI-Session

El resultado devuelve el ID de la clave de acceso, la clave de acceso secreta y el token de la sesión.

6.    Configure las variables del entorno mediante los siguientes comandos de exportación:

export AWS_ACCESS_KEY_ID=<RoleAccessKeyID>
export AWS_SECRET_ACCESS_KEY=<RoleSecretKey>
export AWS_SESSION_TOKEN=<RoleSessionToken>

7.    Recupere los resultados mediante el comando redshift-data de la AWS CLI, similar al siguiente:

aws redshift-data get-statement-result --id <ID> --region <Region>

Información relacionada

Why can't I connect to the Amazon Redshift query editor in Amazon Redshift? (¿Por qué no puedo conectarme al editor de consultas de Amazon Redshift?)

Using the Amazon Redshift Data API to interact with Amazon Redshift clusters (Uso de la API de datos de Amazon Redshift para interactuar con los clústeres de Amazon Redshift)

Creating an Amazon EventBridge rule that runs on a schedule (Creación de una regla de Amazon EventBridge que se ejecute en una programación)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año