Creación de consultas de CloudTrail Lake a partir de peticiones de lenguaje natural - AWS CloudTrail

Creación de consultas de CloudTrail Lake a partir de peticiones de lenguaje natural

Puede usar el generador de consultas de CloudTrail Lake para generar una consulta a partir de una petición en inglés que proporcione. El generador de consultas usa inteligencia artificial generativa (IA generativa) para generar una consulta SQL lista para usar a partir de su petición, que luego puede ejecutar en el editor de consultas de Lake o afinar. No es necesario tener amplios conocimientos de los campos de eventos de SQL o CloudTrail para utilizar el generador de consultas.

La petición puede ser una pregunta o una instrucción sobre los datos de eventos del almacén de datos de eventos de CloudTrail Lake. Por ejemplo, puede ingresar las peticiones como "What are my top errors in the past month?" y “Give me a list of users that used SNS.”.

La petición puede tener un mínimo de 3 caracteres y un máximo de 500.

La generación de consultas no conlleva cargos; sin embargo, al ejecutar consultas, incurre en cargos según la cantidad de datos optimizados y comprimidos que se escanean. Para ayudar a controlar los costos, le recomendamos que restrinja las consultas agregando marcas temporales eventTime de inicio y finalización a las consultas.

nota

Para enviar comentarios acerca de una consulta generada, pulse el botón con el pulgar hacia arriba o hacia abajo que aparece debajo de la consulta generada. Cuando envía comentarios, CloudTrail guarda su petición y la consulta generada.

No incluya ninguna información de identificación personal, confidencial o sensible en sus peticiones.

Esta característica usa modelos de lenguaje grandes (LLM) con IA generativa; se recomienda comprobar la respuesta del LLM.

Puede acceder al generador de consultas a través de la consola de CloudTrail y AWS CLI.

CloudTrail console
Uso del generador de consultas en la consola de CloudTrail
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudTrail en https://console.aws.amazon.com/cloudtrail/.

  2. En el panel de navegación, en Lago, elija Consulta.

  3. En la página Consulta, seleccione la pestaña Editor.

  4. Elija el almacén de datos de eventos para el que desea crear una consulta.

  5. En el área del Generador de consultas, introduzca una petición en un inglés sencillo. Para ver ejemplos, consulte Ejemplos de peticiones.

  6. Elija Generar consulta. El generador de consultas intentará generar una consulta a partir de su petición. Si se ejecuta correctamente, el generador de consultas proporciona la consulta SQL en el editor. Si la petición no funciona, reformúlela e inténtelo de nuevo.

  7. (Opcional) Puede enviar los comentarios sobre la consulta generada. Para enviar comentarios, pulse el botón con el pulgar hacia arriba o hacia abajo que aparece debajo de la petición. Cuando envía comentarios, CloudTrail guarda su petición y la consulta generada.

  8. (Opcional) Seleccione Ejecutar para ejecutar la consulta.

    nota

    Cuando ejecuta consultas, incurre en cargos según la cantidad de datos optimizados y comprimidos que se escanean. Para ayudar a controlar los costos, le recomendamos que restrinja las consultas agregando marcas temporales eventTime de inicio y finalización a las consultas.

  9. (Opcional) Si ejecuta la consulta y hay resultados, puede elegir Resumir los resultados para generar un resumen en lenguaje natural en inglés de los resultados de la consulta. Esta opción utiliza inteligencia artificial generativa (IA generativa) para producir el resumen. Para obtener más información acerca de esta opción, consulta Resumen de los resultados de las consultas en lenguaje natural.

    Para ofrecer comentarios sobre el resumen, elija el botón de aprobación hacia arriba o hacia abajo que aparece debajo del resumen generado.

    nota

    La característica de resumen de consultas se encuentra en la versión preliminar para CloudTrail Lake y está sujeta a cambios. Esta característica está disponible en las siguientes regiones: Asia-Pacífico (Tokio), Este de EE. UU. (Norte de Virginia) y Oeste de EE. UU. (Oregón).

AWS CLI

Para generar una consulta con AWS CLI

Ejecute el comando generate-query para generar una consulta a partir de una petición en inglés. En --event-data-stores, brinde el ARN (o el sufijo de ID del ARN) del almacén de datos de eventos que quiera consultar. Solo puede especificar un almacén de datos de eventos. Para --prompt, brinde la petición en 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?"

Si se realiza de manera correcta, el comando genera una instrucción SQL y ofrece una QueryAlias que utilizará junto con el comando start-query para ejecutar la consulta en el almacén de datos 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 ejecutar una consulta con AWS CLI

Ejecute el comando start-query con el QueryAlias generado por el comando generate-query del ejemplo anterior. También tiene la opción de ejecutar el comando start-query mediante la QueryStatement.

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

La respuesta es una cadena QueryId. Para obtener el estado de una consulta, ejecute describe-query utilizando el valor QueryId devuelto por start-query. Si la consulta se realiza correctamente, se puede ejecutar get-query-results para obtener resultados.

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

Es posible que las consultas que se ejecuten durante más de una hora agoten el tiempo de espera. Aun así, puede que obtenga resultados parciales que se hayan procesado antes de que se agotara el tiempo de espera de la consulta.

Si va a entregar los resultados de la consulta a un bucket de S3 mediante el parámetro opcional --delivery-s3uri, la política del bucket debe conceder permiso a CloudTrail para entregar los resultados de la consulta al bucket. Para obtener más información sobre cómo editar manualmente la política del bucket, consulte Política de bucket de Amazon S3 para resultados de consultas de CloudTrail Lake.

Permisos necesarios

Las políticas administradas AWSCloudTrail_FullAccess y AdministratorAccess brindan los permisos necesarios para utilizar esta característica.

También puede incluir la acción cloudtrail:GenerateQuery en una política integrada o administrada por el cliente, nueva o existente.

Compatibilidad de regiones

Esta característica puede utilizarse en las siguientes Regiones de AWS:

  • Región Asia-Pacífico (Mumbai) (ap-south-1)

  • Región Asia-Pacífico (Sídney) (ap-southeast-2)

  • Región Asia-Pacífico (Tokio) (ap-northeast-1)

  • Región Canadá (Central) (ca-central-1)

  • Región Europa (Londres) (eu-west-2)

  • Región Este de EE. UU. (Norte de Virginia) (us-east-1)

  • Región Oeste de EE. UU. (Oregón) (us-west-2)

Limitaciones

A continuación se enumeran las limitaciones del generador de consultas:

  • El generador de consultas solo acepta peticiones en inglés.

  • El generador de consultas solo puede generar consultas para los almacenes de datos de eventos que recopilan eventos de CloudTrail (eventos de administración, de datos y de actividad de la red).

  • El generador de consultas no puede generar consultas de peticiones que no pertenezcan a los datos de eventos de CloudTrail Lake.

Ejemplos de peticiones

En esta sección se proporcionan ejemplos de peticiones y las consultas SQL resultantes generadas a partir de ellas.

Si decide ejecutar las consultas de ejemplo de esta sección, sustituya eds-id por el ID del almacén de datos de eventos que quiera consultar y sustituya las marcas temporales por las que correspondan a su caso de uso. Las marcas temporales tienen el siguiente formato: YYYY-MM-DD HH:MM:SS.

Petición: 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;

Petición: 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'

Petición: 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;

Petición: 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'

Petición: 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;

Petición: 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'

Petición: 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;

Petición: 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' )