Come posso pianificare le query per un cluster Amazon Redshift?

5 minuti di lettura
0

Sto cercando di pianificare l'esecuzione di una query in un cluster Amazon Redshift. In che modo posso farlo?

Breve descrizione

Puoi utilizzare l'editor di query per eseguire, visualizzare, salvare e pianificare le query SQL per i cluster Amazon Redshift con provisioning. Le query pianificate vengono avviate da Amazon EventBridge.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Autorizzazioni dell'editor di query

Per utilizzare l'editor di query, gli utenti devono disporre di un set minimo di autorizzazioni per Amazon Redshift. Se il cluster utilizza altri servizi AWS, anche gli utenti devono disporre delle autorizzazioni per tali servizi. Ad esempio, i segreti di Gestione dei segreti AWS e le chiavi del Servizio di gestione delle chiavi AWS (AWS KMS). Per ulteriori informazioni, consulta la sezione Autorizzazioni richieste per utilizzare l'editor di query della console Amazon Redshift.

Puoi utilizzare le policy gestite di AWS Identity and Access Management (IAM) per gestire le autorizzazioni in base ai ruoli IAM. Per ulteriori informazioni, consulta le Policy gestite da AWS (predefinite) per Amazon Redshift.

Per pianificare le query, l'utente e il ruolo IAM associati alla query devono disporre dell'autorizzazione per gestire l'editor delle query. Per istruzioni, consulta la pagina Impostazione delle autorizzazioni per pianificare una query sulla console Amazon Redshift.

Pianificazione delle query tramite la Console di gestione AWS

Per pianificare la query utilizzando la Console di gestione AWS, segui questi passaggi:

Nota:

  • È necessario utilizzare l'editor di query v1 per pianificare le query.
  • È possibile utilizzare questo editor di query solo con i cluster con provisioning.

1.    Apri la console Amazon Redshift.

2.    Nel pannello di navigazione, scegli Query editor (Editor di query).

3.    Segui le istruzioni per connetterti a un database del tuo cluster.

4.    Segui le istruzioni per creare una pianificazione per l'esecuzione di un'istruzione SQL.

5.    Se utilizzi Gestione dei segreti AWS con Amazon Redshift, scegli il tuo segreto.

6.    Se utilizzi credenziali utente IAM temporanee, scegli il tuo cluster e fornisci il database e i nomi utente. Nota: è necessaria l'autorizzazione getClusterCredentials affinché l'utente IAM possa utilizzare le credenziali temporanee.

7.    Scegli Save (Salva).

Nota: se hai attivato Simple Notification Service (Amazon SNS), assicurati che l'azione API "sns:Publish" sia presente per "events.amazonaws.com". Per confermare, aggiungi la seguente istruzione:

{
  "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}"
}

Pianificazione delle query utilizzando un'istruzione SQL con EventBridge

Puoi pianificare le istruzioni SQL utilizzando EventBridge e l'API dati di Amazon Redshift. Nell'esempio seguente, viene impostata una pianificazione per aggiornare gli eventi correnti ogni 5 minuti.

1.    Crea una regola di evento EventBridge denominata "scheduled-refresh-currentEvents" e pianificala in modo che venga eseguita ogni 5 minuti utilizzando espressioni cron o rate simili alle seguenti:

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

2.    Crea e salva un file JSON denominato refreshCurrentEvents.json utilizzando il tuo editor di testo preferito che contiene il cluster, il ruolo e l'ARN di Gestione dei segreti AWS:

{
  "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.    Crea un obiettivo di evento utilizzando il file JSON salvato:

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

4.    Per rimuovere la destinazione ed eliminare la regola, esegui i seguenti comandi:

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

Visualizzazione dello stato e dei risultati di SQL

Per visualizzare lo stato e il risultato della query, segui questi passaggi:

1.    Apri la console Amazon Redshift.

2.    Nel riquadro di navigazione, scegli Query editor (Editor di query), quindi scegli Scheduled queries (Query pianificate).

3.    Scegli il nome della tua query.

4.    Nella cronologia della pianificazione, annota l'ID. Avrai bisogno dell'ID nel passaggio 7.

5.    Per recuperare i risultati della query, assumi il ruolo IAM utilizzato per pianificare la query utilizzando il comando assume-role della CLI di AWS simile al seguente:

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

L'output restituisce l'ID della chiave di accesso, la chiave di accesso segreta e il token di sessione.

6.    Configura le variabili di ambiente utilizzando i seguenti comandi di esportazione:

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

7.    Recupera i risultati utilizzando il comando dell'interfaccia a riga di comando di AWS redshift-data simile al seguente:

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

Informazioni correlate

Perché non riesco a collegarmi all'editor di query Amazon Redshift?

Using the Amazon Redshift Data API to interact with Amazon Redshift clusters (Utilizzo dell'API Amazon Redshift Data per interagire con i cluster Amazon Redshift)

Creazione di una regola Amazon EventBridge che viene eseguita in base a una pianificazione

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa