Solução de problemas com a API de dados do Amazon RDS
Use as seções a seguir, intituladas com mensagens de erro comuns, para ajudar na solução de problemas com a API de dados do Amazon RDS (API de dados).
Tópicos
Transação <transaction_ID> não encontrada
Nesse caso, o ID da transação especificado em uma chamada de API de dados não foi encontrado. A causa desse problema é anexada à mensagem de erro e é uma das seguintes:
-
A transação pode ter expirado.Verifique se a chamada da transação é executada três minutos depois da última.
Também é possível que o ID da transação especificada não tenha sido criado por uma chamada de BeginTransaction. Verifique se a chamada tem um ID de transação válido.
-
Uma chamada anterior provocou o encerramento da transação.A transação já foi encerrada pela chamada
CommitTransactionouRollbackTransaction. -
A transação foi interrompida devido a um erro de uma chamada anterior.Verifique se suas chamadas anteriores lançaram exceções.
Para obter informações sobre como executar transações, consulte Chamar a API de dados do Amazon RDS.
O pacote para consulta é muito grande
Nesse caso, o conjunto de resultados obtido para uma linha era muito grande. O limite de tamanho da API de dados é de 64 KB por linha no conjunto de resultados obtido pelo banco de dados.
Para resolver esse problema, verifique se cada linha em um conjunto de resultados tem até 64 KB.
A resposta do banco de dados excedeu o limite de tamanho
Nesse caso, o tamanho do conjunto de resultados obtido pelo banco de dados era muito grande. O limite de tamanho da API de dados é de 1 MiB no conjunto de resultados obtido pelo banco de dados.
Para resolver esse problema, garanta que as chamadas para a API de dados exibam até 1 MiB de dados. Se você precisar retornar mais de 1 MiB, poderá usar várias chamadas ExecuteStatement com a cláusula LIMIT na sua consulta.
Para obter mais informações sobre a cláusula LIMIT, consulte SELECT Syntax
HttpEndpoint não está habilitado para o cluster <cluster_ID>
Verifique as possíveis causas a seguir para esse problema:
-
O cluster de banco de dados do Aurora não é compatível com a API de dados. Para ter informações sobre os tipos de clusters de banco de dados compatíveis com a API de dados do RDS, consulte Disponibilidade de região e versão para a API de dados do Amazon RDS.
-
A API de dados não está habilitada para o cluster de banco de dados do Aurora. Para usar a API de dados com um cluster de banco de dados do Aurora, a API de dados deve estar habilitada para o cluster de banco de dados. Para ter informações sobre como habilitar a API de dados, consulte Habilitar a API de dados do Amazon RDS.
-
O cluster de banco de dados foi renomeado depois que a API de dados foi habilitada para ele. Nesse caso, desative a API de dados desse cluster e, depois, habilite-a novamente.
-
O ARN especificado não corresponde com precisão ao ARN do cluster. Verifique se o ARN retornado de outra fonte ou criado pela lógica do programa corresponde exatamente ao ARN do cluster. Por exemplo, verifique se o ARN usado tem a letra correta para todos os caracteres alfabéticos.
DatabaseErrorException: a transação ainda está executando uma consulta
Se a aplicação enviar uma solicitação com um ID de transação e essa transação estiver processando outra solicitação no momento, a API de dados retornará esse erro à aplicação imediatamente. Essa condição poderá surgir se a aplicação fizer solicitações assíncronas, usando um mecanismo como “promessas” em JavaScript.
Para resolver esse problema, aguarde até que a solicitação anterior seja concluída e repita a solicitação. Você pode continuar tentando novamente até que o erro não ocorra mais ou que a aplicação receba algum tipo diferente de erro.
Essa condição pode ocorrer com a API de dados do Aurora Serverless v2 e instâncias provisionadas. Na API de dados do Aurora Serverless v1, as solicitações subsequentes para o mesmo ID de transação aguardam automaticamente a conclusão da solicitação anterior. No entanto, esse comportamento mais antigo poderia encontrar tempos limite devido ao fato de a solicitação anterior demorar muito. Se você tiver uma aplicação antiga da API de dados que faz solicitações simultâneas, modifique sua lógica de tratamento de exceções para considerar esse novo tipo de erro.
Exceção de resultado não aceito
A API de dados não comporta todos os tipos de dados. Esse erro ocorre quando você executa uma consulta que exibe um tipo de dados não aceito.
Para contornar esse problema, converta o tipo de dados não aceito em TEXT. Por exemplo:
SELECT custom_type::TEXT FROM my_table; -- OR SELECT CAST(custom_type AS TEXT) FROM my_table;
Declarações múltiplas não são aceitas
Na API de dados para o Aurora Sem Servidor v2 e em clusters provisionados, não é possível usar declarações múltiplas. A tentativa de executar várias declarações em uma única chamada de API gera esse erro.
Para executar várias declarações, use chamadas de API ExecuteStatement separadas ou use a API BatchExecuteStatement para processamento em lote.
O parâmetro schema não é aceito
O Aurora Sem Servidor v1 ignora silenciosamente o parâmetro schema. No entanto, o Aurora Sem Servidor v2 e os clusters provisionados rejeitam explicitamente as chamadas de API que incluem o parâmetro schema.
Para resolver esse problema, remova o parâmetro schema de todas as chamadas à API de dados ao usar o Aurora Sem Servidor v2 ou clusters provisionados.
Problemas de conectividade IPv6
Se você tiver problemas ao se conectar à API de dados usando endpoints IPv6, confira as seguintes possíveis causas:
-
A rede não aceita IPv6: verifique se sua infraestrutura de rede comporta IPv6 e se o roteamento IPv6 está configurado corretamente.
-
Problemas de resolução DNS: verifique se seu resolvedor de DNS consegue resolver registros AAAA para os endpoints de pilha dupla (por exemplo,
rds-data.us-east-1.api.aws). -
Configuração dos grupos de segurança: atualize as regras do grupo de segurança para permitir o tráfego IPv6 na porta 443 (HTTPS). Adicione regras para blocos CIDR IPv6 (por exemplo,
::/0para todos os endereços IPv6). -
Configuração da ACL de rede: certifique-se de que as ACLs de rede permitam tráfego IPv6 nas portas necessárias.
-
Compatibilidade da biblioteca de cliente: verifique se suas bibliotecas de cliente HTTP e AWS SDKs aceitam a conectividade IPv6 e de pilha dupla.
-
Configuração do endpoint da VPC: se estiver usando o PrivateLink, garanta que seu endpoint da VPC esteja configurado para aceitar IPv6 e que as sub-redes associadas tenham blocos CIDR IPv6 atribuídos.
Para solucionar problemas de conectividade IPv6:
-
Teste a conectividade usando os endpoints somente IPv4 (
.amazonaws.com) para verificar se o problema é específico do IPv6. -
Use ferramentas de diagnóstico de rede para verificar a conectividade IPv6 com os endpoints de pilha dupla.
-
Confira se há erros de autenticação ou autorização nos logs do CloudTrail ao usar endpoints IPv6.
-
Verifique se sua aplicação está configurada corretamente para usar os novos URLs de endpoint de pilha dupla.