Solucionar erros de grupo de trabalho
Use as dicas a seguir para solucionar problemas com grupos de trabalho.
-
Verifique as permissões para usuários individuais na sua conta. Eles devem ter acesso ao local para os resultados da consulta e ao grupo de trabalho no qual desejam executar consultas. Se eles quiserem alternar grupos de trabalho, vão precisar de permissões para ambos os grupos de trabalho. Para ter mais informações, consulte Usar políticas do IAM para controlar o acesso de grupo de trabalho.
-
Observe o contexto no console do Athena para ver em qual grupo de trabalho você vai executar as consultas. Se você usar o driver, defina o grupo de trabalho naquele de que você precisa. Para ter mais informações, consulte Especificar um grupo de trabalho para consultas.
-
Se você usar a API ou os drivers para executar as consultas, deverá especificar o local dos resultados das consultas usando uma destas formas: para consultas individuais, use OutputLocation (do lado do cliente). No grupo de trabalho, use WorkGroupConfiguration. Se o local não estiver especificado de nenhuma forma, o Athena emitirá um erro no runtime da consulta.
-
Se você substituir as configurações do lado do cliente pelas configurações do grupo de trabalho, poderá encontrar erros com o local de resultados da consulta. Por exemplo, um usuário do grupo de trabalho pode não ter permissões para o local do grupo de trabalho no Amazon S3 para armazenar os resultados das consultas. Nesse caso, adicione as permissões necessárias.
-
Os grupos de trabalho trazem mudanças no comportamento das operações da API. As chamadas para as operações de API existentes a seguir exigem que os usuários em sua conta tenham permissões baseadas em recursos no IAM para os grupos de trabalho em que são criados. Se não houver permissões para o grupo de trabalho e para ações do grupo de trabalho, as seguintes ações da API emitirão
AccessDeniedException
: CreateNamedQuery, DeleteNamedQuery, GetNamedQuery, ListNamedQueries, StartQueryExecution, StopQueryExecution, ListQueryExecutions, GetQueryExecution, GetQueryResults e GetQueryResultsStream (essa ação de API está disponível somente para uso com o driver e, de outra forma, não é exposta para o uso público). Para obter mais informações, consulte Ações, recursos e chaves de condição do Amazon Athena na Referência de autorização do serviço.As chamadas para as operações de API BatchGetQueryExecution e BatchGetNamedQuery retornam informações apenas sobre as execuções de consulta nos grupos de trabalho aos quais os usuários têm acesso. Se o usuário não tiver acesso ao grupo de trabalho, essas operações da API retornarão os IDs de consulta não autorizados como parte da lista de IDs não processados. Para ter mais informações, consulte Usar APIs de grupos de trabalho do Athena.
-
Se o grupo de trabalho em que uma consulta for executada estiver configurado com um local imposto para os resultados das consultas, não especifique um
external_location
para a consulta CTAS. O Athena emite um erro e falha com uma consulta que especifica umexternal_location
nesse caso. Por exemplo, ocorrerá uma falha nesta consulta se você substituir as configurações do lado do cliente para o local dos resultados da consulta, forçando o grupo de trabalho a usar o próprio local:CREATE TABLE <DB>.<TABLE1> WITH (format='Parquet',
external_location='s3://amzn-s3-demo-bucket/test/'
) AS SELECT * FROM <DB>.<TABLE2> LIMIT 10;
Você pode ver os erros a seguir. Esta tabela fornece uma lista de alguns dos erros relacionados a grupos de trabalho e sugere soluções.
Erro | Ocorre quando... |
---|---|
query state CANCELED. Bytes scanned limit was exceeded. (o estado da consulta é CANCELED. O limite de bytes verificados foi excedido). |
Uma consulta atinge um limite de dados por consulta e é cancelada. Considere reescrever a consulta para que leia menos dados ou entre em contato com o administrador da conta. |
User: (O usuário: arn:aws:iam::123456789012:user/abc não está autorizado a executar: athena:StartQueryExecution no recurso: arn:aws:athena:us-east-1:123456789012:workgroup/workgroupname) |
Um usuário executa uma consulta em um grupo de trabalho, mas não tem acesso a ele. Atualize a política para ter acesso ao grupo de trabalho. |
INVALID_INPUT. WorkGroup <name> is disabled. (INVALID_INPUT. O grupo de trabalho <nome> está desabilitado.) |
Um usuário executa uma consulta em um grupo de trabalho, mas o grupo de trabalho está desabilitado. Seu grupo de trabalho poderia ser desabilitado pelo administrador. É possível também que você não tenha acesso a ele. Em ambos os casos, entre em contato com um administrador que tenha acesso para modificar grupos de trabalho. |
INVALID_INPUT. WorkGroup <name> is not found. (INVALID_INPUT. O grupo de trabalho <nome> não foi localizado.) |
Um usuário executa uma consulta em um grupo de trabalho, mas o grupo de trabalho não existe. Isso pode acontecer se o grupo de trabalho tiver sido excluído. Alterne para outro grupo de trabalho para executar a consulta. |
InvalidRequestException: ao chamar a operação StartQueryExecution: nenhum local de saída fornecido. An output location is required either through the Workgroup result configuration setting or as an API input. (InvalidRequestException: ao chamar a operação StartQueryExecution: nenhum local de saída é fornecido. Um local de saída é necessário por meio da definição de configuração de resultados do grupo de trabalho ou como uma entrada de API). |
Um usuário executa uma consulta com a API sem especificar o local dos resultados da consulta. Você deve definir o local de saída para resultados da consulta usando uma de duas formas: para consultas individuais, usando OutputLocation (no lado do cliente), ou, no grupo de trabalho, usando WorkGroupConfiguration. |
|
Se o grupo de trabalho em que uma consulta for executada estiver configurado com um local imposto para os resultados da consulta e você especificar um external_location para a consulta do CTAS. Neste caso, remova o external_location e execute a consulta. |
Cannot create prepared statement (Não é possível criar a instrução preparada “prepare_statement_name”. O número de instruções preparadas neste grupo de trabalho excede o limite de mil). |
O grupo de trabalho contém mais do que o limite de mil instruções preparadas. Para resolver esse problema, use DEALLOCATE PREPARE para remover uma ou mais instruções preparadas do grupo de trabalho. Como alternativa, crie um novo grupo de trabalho. |