Criar consultas do CloudTrail Lake com prompts em linguagem natural - AWS CloudTrail

Criar consultas do CloudTrail Lake com prompts em linguagem natural

Você pode usar o gerador de consultas do CloudTrail Lake para produzir uma consulta com um prompt em inglês que você fornece. O gerador de consultas usa inteligência artificial generativa (IA generativa) para produzir uma consulta SQL pronta para uso a partir do prompt, que você pode então optar por executar no editor de consultas do Lake ou ajustar ainda mais. Você não precisa ter amplo conhecimento sobre os campos de eventos do SQL ou do CloudTrail para usar o gerador de consultas.

O prompt pode ser uma pergunta ou uma instrução sobre os dados do evento em seu armazenamento de dados de eventos do CloudTrail Lake. Por exemplo, você pode inserir prompts como "What are my top errors in the past month?" e “Give me a list of users that used SNS.”

Um prompt pode ter no mínimo 3 caracteres e no máximo 500 caracteres de extensão.

Não há cobranças por gerar consultas. No entanto, ao executar consultas, você receberá cobranças com base na quantidade de dados examinados que foram otimizados e compactados. Para ajudar a controlar os custos, recomendamos que você restrinja as consultas adicionando carimbos de data/hora eventTime de início e término nas consultas.

nota

Você pode fornecer feedback sobre uma consulta gerada clicando no botão de polegar para cima ou para baixo exibido abaixo da consulta gerada. Quando você fornece feedback, o CloudTrail salva seu prompt e a consulta gerada.

Não inclua informações pessoais, confidenciais ou sigilosas em seus prompts.

Esse recurso usa grandes modelos de linguagem (LLM) de IA generativa. Recomendamos verificar novamente a resposta do LLM.

Você pode acessar o gerador de consultas usando o console e a AWS CLIdo CloudTrail.

CloudTrail console
Como usar o gerador de consultas no console do CloudTrail
  1. Faça login no Console de gerenciamento da AWS e abra o console do CloudTrail em https://console.aws.amazon.com/cloudtrail/.

  2. No painel de navegação, em Lake, escolha Consulta.

  3. Na página Consulta, selecione a guia Editor.

  4. Escolha o armazenamento de dados de eventos para o qual deseja criar uma consulta.

  5. Na área Gerador de consultas, insira um prompt simples em inglês. Para obter exemplos, consulte Exemplos de prompts.

  6. Escolha Gerar consulta. O gerador de consultas tentará gerar uma consulta a partir do prompt. Se for bem-sucedido, o gerador de consultas fornecerá a consulta SQL no editor. Se o prompt não for bem-sucedido, reformule-o e tente novamente.

  7. (Opcional) Você pode oferecer feedback sobre a consulta gerada. Para fornecer feedback, clique no botão de polegar para cima ou para baixo exibido abaixo do prompt. Quando você fornece feedback, o CloudTrail salva seu prompt e a consulta gerada.

  8. (Opcional) Escolha Executar para executar a consulta.

    nota

    Ao executar consultas, você é cobrado de acordo com a quantidade de dados examinados que foram otimizados e compactados. Para ajudar a controlar os custos, recomendamos que você restrinja as consultas adicionando carimbos de data/hora eventTime de início e término nas consultas.

  9. (Opcional) Se executar a consulta e obtiver resultados, você poderá escolher Resumir os resultados para gerar um resumo em linguagem natural em inglês dos resultados da consulta. Essa opção usa inteligência artificial generativa (IA generativa) para produzir o resumo. Para obter mais informações sobre essa opção, consulte Resumir os resultados da consulta em linguagem natural.

    Você pode fornecer feedback sobre o resumo escolhendo o botão de polegar para cima ou para baixo exibido abaixo do resumo gerado.

    nota

    O atributo de resumo de consultas está na versão prévia para o CloudTrail Lake e sujeito a alterações. Esse atributo está disponível para o público em geral nas seguintes regiões: Ásia-Pacífico (Tóquio), Leste dos EUA (Norte da Virgínia)e Oeste dos EUA (Oregon).

AWS CLI

Para gerar uma consulta com a AWS CLI

Execute o comando generate-query para gerar uma consulta a partir de um prompt em inglês. Em --event-data-stores, forneça o ARN (ou o sufixo de ID do ARN) do datastore de eventos que você deseja consultar. Você pode especificar apenas um único datastore de eventos. Em --prompt, forneça o prompt em inglês.

aws cloudtrail generate-query --event-data-stores arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE \ --prompt "Show me all console login events for the past week?"

Se for bem-sucedido, o comando gerará uma instrução SQL e fornecerá um QueryAlias que você usará com o comando start-query para executar a consulta em seu datastore de eventos.

{ "QueryStatement": "SELECT * FROM $EDS_ID WHERE eventname = 'ConsoleLogin' AND eventtime >= timestamp '2024-09-16 00:00:00' AND eventtime <= timestamp '2024-09-23 00:00:00' AND eventSource = 'signin.amazonaws.com'", "QueryAlias": "AWSCloudTrail-UUID" }

Para executar uma consulta com a AWS CLI

Execute o comando start-query com a saída QueryAlias do comando generate-query no exemplo anterior. Você também tem a opção de executar o comando start-query fornecendo a QueryStatement.

aws cloudtrail start-query --query-alias AWSCloudTrail-UUID

A resposta é uma string de QueryId. Para obter o status de uma consulta, execute describe-query usando o valor QueryId retornado por start-query. Se a consulta tiver êxito, você poderá executar get-query-results para obter os resultados.

{ "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE" }
nota

Consultas que são executadas por mais de uma hora podem expirar. No entanto, ainda é possível obter resultados parciais que foram processados antes do tempo limite da consulta esgotar.

Se você estiver entregando os resultados de consulta em um bucket do S3 usando o parâmetro opcional --delivery-s3uri, a política de bucket deverá conceder ao CloudTrail permissão para entregar os resultados de consulta ao bucket. Para obter informações sobre como editar manualmente a política de bucket, consulte Política de bucket do Amazon S3 para resultados de consulta do CloudTrail Lake.

Permissões obrigatórias

Ambas as políticas gerenciadas AWSCloudTrail_FullAccess e AdministratorAccess fornecem as permissões necessárias para usar esse atributo.

Você também pode incluir a ação cloudtrail:GenerateQuery em uma política nova ou atual gerenciada pelo cliente ou em uma política em linha.

Suporte de região

Esse atributo é compatível com as seguintes regiões Regiões da AWS:

  • Região da Ásia-Pacífico (Mumbai) (ap-south-1)

  • Região da Ásia-Pacífico (Sydney) (ap-southeast-2)

  • Região da Ásia-Pacífico (Tóquio) (ap-northeast-1)

  • Região do Canadá (Central) (ca-central-1)

  • Região da Europa (Londres) (eu-west-2)

  • Região Leste dos EUA (Norte da Virgínia) (us-east-1)

  • Região Oeste dos EUA (Oregon) (us-west-2)

Limitações

A seguir estão as limitações do gerador de consultas:

  • O gerador de consultas só aceita prompts em inglês.

  • O gerador de consultas só pode gerar consultas para datastores de eventos que coletam eventos do CloudTrail (eventos de gerenciamento, eventos de dados, eventos de atividade de rede).

  • O gerador de consultas não gera consultas para prompts que não pertençam aos dados de eventos do CloudTrail Lake.

Exemplos de prompts

Esta seção fornece exemplos de prompts e as consultas SQL resultantes geradas a partir desses prompts.

Se você optar por executar as consultas de exemplo nesta seção, substitua eds-id pelo ID do armazenamento de dados de eventos que você deseja consultar e substitua os carimbos de data/hora pelos carimbos de data/hora apropriados para seu caso de uso. Os carimbos de data e hora têm o seguinte formato: YYYY-MM-DD HH:MM:SS.

Prompt: What are my top errors in the past month?

Consulta SQL:

SELECT errorMessage, COUNT(*) as eventCount FROM eds-id WHERE errorMessage IS NOT NULL AND eventTime >= timestamp '2024-05-01 00:00:00' AND eventTime <= timestamp '2024-05-31 23:59:59' GROUP BY 1 ORDER BY 2 DESC LIMIT 2;

Prompt: Give me a list of users that used Amazon SNS.

Consulta SQL:

SELECT DISTINCT userIdentity.arn AS user FROM eds-id WHERE eventSource = 'sns.amazonaws.com'

Prompt: What are my API counts each day for read and write events in the past month?

Consulta SQL:

SELECT date(eventTime) AS event_date, SUM( CASE WHEN readonly = true THEN 1 ELSE 0 END ) AS read_events, SUM( CASE WHEN readonly = false THEN 1 ELSE 0 END ) AS write_events FROM eds-id WHERE eventTime >= timestamp '2024-05-04 00:00:00' AND eventTime <= timestamp '2024-06-04 23:59:59' GROUP BY 1 ORDER BY 1 ASC;

Prompt: Show any events with access denied errors for the past three weeks.

Consulta SQL:

SELECT * FROM eds-id WHERE WHERE (errorCode = 'AccessDenied' OR errorMessage = 'Access Denied') AND eventTime >= timestamp '2024-05-16 01:00:00' AND eventTime <= timestamp '2024-06-06 01:00:00'

Prompt: Query the number of calls each operator performed on the date 2024-05-01. The operator is a principal tag.

Consulta SQL:

SELECT element_at( eventContext.tagContext.principalTags, 'operator' ) AS operator, COUNT(*) AS eventCount FROM eds-id WHERE eventtime >= '2024-05-01 00:00:00' AND eventtime < '2024-05-01 23:59:59' GROUP BY 1 ORDER BY 2 DESC;

Prompt: Give me all event IDs that touched resources within the CloudFormation stack with name myStack on the date 2024-05-01.

Consulta SQL:

SELECT eventID FROM eds-id WHERE any_match( eventContext.tagcontext.resourcetags, rt->element_at(rt.tags, 'aws:cloudformation:stack-name') = 'myStack' ) AND eventtime >= '2024-05-01 00:00:00' AND eventtime < '2024-05-01 23:59:59'

Prompt: Count the number of events grouped by resource tag 'solution' values, listing them in descending order of count.

Consulta SQL:

SELECT element_at(rt.tags, 'solution'), count(*) as event_count FROM eds-id, unnest(eventContext.tagContext.resourceTags) as rt WHERE eventtime < '2025-05-14 19:00:00' GROUP BY 1 ORDER BY 2 DESC;

Prompt: Find all Amazon S3 data events where resource tag Environment has value prod.

Consulta SQL:

SELECT * FROM eds-id WHERE eventCategory = 'Data' AND eventSource = 's3.amazonaws.com' AND eventtime >= '2025-05-14 00:00:00' AND eventtime < '2025-05-14 20:00:00' AND any_match( eventContext.tagContext.resourceTags, rt->element_at(rt.tags, 'Environment') = 'prod' )