Como identifico erros relacionados à API Data no Amazon Redshift?
Como identificar por que uma consulta da API Data no Amazon Redshift falhou?
Resolução
A API Data do Amazon Redshift é assíncrona, o que significa que você pode executar consultas de longa duração sem precisar esperar que elas sejam concluídas. Quando uma consulta da API Data falha, o status dessa consulta não é exibido imediatamente. Para determinar os motivos da falha, use a ação DescribeStatement para uma ou várias consultas. Para executar DescribeStatement, você deve ter o ID da instrução.
Consulta única
Para executar uma única consulta no cluster, use a ação ExecuteStatement para retornar um ID de instrução:
Observação: o comando de exemplo a seguir usa o método de autenticação do AWS Secrets Manager. O comando executa uma instrução SQL em um cluster e retorna um identificador para obter os resultados.
aws redshift-data execute-statement --region us-east-1 --secret arn:aws:secretsmanager:us-east-1:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier redshift-cluster-1 --sql "select * from test_table;" --database dev
Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.
A saída é semelhante à seguinte:
{ "ClusterIdentifier": "redshift-cluster-1", "CreatedAt": "2022-09-16T12:22:31.894000+05:30", "Database": "dev", "Id": "458c568d-717b-4f36-90bd-e642bfb06cbf", "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myuser-secret-hKgPWn" }
A instrução SQL anterior retorna um ExecuteStatementOutput, que inclui a instrução Id. Você pode verificar o status da consulta usando DescribeStatement e inserindo o ID da instrução:
aws redshift-data describe-statement --id 458c568d-717b-4f36-90bd-e642bfb06cbf
A saída para DescribeStatement fornece os seguintes detalhes adicionais:
- RedshiftPid
- Duração da consulta
- Número de linhas em
- Tamanho do conjunto de resultados
- RedshiftQueryID
A saída é semelhante à seguinte:
{ "ClusterIdentifier": "redshift-cluster-1", "CreatedAt": "2022-09-16T12:22:31.894000+05:30", "Duration": -1, "Error": "ERROR: relation \"test_table\" does not exist", "HasResultSet": false, "Id": "458c568d-717b-4f36-90bd-e642bfb06cbf", "QueryString": "select * from test_table;", "RedshiftPid": 1074727629, "RedshiftQueryId": -1, "ResultRows": -1,< "ResultSize": -1, "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myuser-secret-hKgPWn", "Status": "FAILED", "UpdatedAt": "2022-09-16T12:22:32.365000+05:30" }
A seção "Error": na resposta anterior mostra o erro exato. Que no exemplo anterior é "ERROR: relation "test_table" does not exist".
Várias consultas
Para executar várias consultas no cluster, use a ação BatchExecuteStatement para retornar um ID de instrução:
aws redshift-data batch-execute-statement --region us-east-1 --secret-arn arn:aws:secretsmanager:us-east-1:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier redshift-cluster-1 --database dev --sqls "select * from test_table;" "select * from another_table;"
A saída é semelhante à seguinte:
{ "ClusterIdentifier": "redshift-cluster-1", "CreatedAt": "2022-09-16T12:37:16.707000+05:30", "Database": "dev", "Id": "08b4b917-9faf-498a-964f-e82a5959d1cb", "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myuser-secret-hKgPWn" }
Para obter o status das consultas, use DescribeStatement com o ID da instrução da resposta anterior:
aws redshift-data describe-statement --id 08b4b917-9faf-498a-964f-e82a5959d1cb
A saída é semelhante à seguinte:
{ "ClusterIdentifier ": "redshift-cluster-1 ", "CreatedAt ": "2022-09-16T12:37:16.707000+05:30 ", "Duration ": 0, "Error ": "Query #1 failed with ERROR: relation \ "test_table\" does not exist ", "HasResultSet ": false, "Id ": "08b4b917-9faf-498a-964f-e82a5959d1cb ", "RedshiftPid ": 1074705048, "RedshiftQueryId ": 0, "ResultRows ":-1, "ResultSize ": -1, "SecretArn ": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myuser-secret-hKgPWn ", "Status ": "FAILED ", "SubStatements ": [ { "CreatedAt ": "2022-09-16T12:37:16.905000+05:30 ", "Duration ": -1, "Error ": "ERROR: relation \ "test_table\" does not exist ", "HasResultSet ": false, "Id ": "08b4b917-9faf-498a-964f-e82a5959d1cb:1", "QueryString ": "select * from test_table; ", "RedshiftQueryId ": -1, "ResultRows ": -1, "ResultSize ": -1, "Status ": "FAILED ", "UpdatedAt ": "2022-09-16T12:37:17.263000+05:30 " }, { "CreatedAt ": "2022-09-16T12:37:16.905000+05:30", "Duration ": -1, "Error ": "Connection or an prior query failed. ", "HasResultSet ": false, "Id ": "08b4b917-9faf-498a-964f-e82a5959d1cb:2 ", "QueryString ": "select * from another_table;", "RedshiftQueryId ": 0, "ResultRows ": -1, "ResultSize": -1, "Status ": "ABORTED ", "UpdatedAt ": "2022-09-16T12:37:17.263000+05:30 " } ], "UpdatedAt ": "2022-09-16T12:37:17.288000+05:30 " }
A saída anterior exibe o status de todas as subinstruções de uma consulta com várias instruções. A seção "Error": na resposta anterior mostra o erro exato de cada subinstrução.
Para solucionar problemas com a API Data, consulte Solução de problemas com a API Data do Amazon Redshift.
Monitorar eventos da API Data
Eventos da API Data podem ser monitorados usando o Amazon EventBridge. Essas informações podem ser enviadas a uma função do AWS Lambda integrada ao Amazon Simple Notification Service (Amazon SNS) para enviar notificações. Para obter mais informações, consulte Criar uma aplicação orientada a eventos com o AWS Lambda e a API Data do Amazon Redshift.
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 8 meses