Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Registro de llamadas a la API de AWS AppSync mediante AWS CloudTrail
AWS AppSync se integra con AWS CloudTrail, un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o un servicio de AWS en AWS AppSync. CloudTrail captura las llamadas a la API de AWS AppSync como eventos. Las llamadas capturadas incluyen las llamadas realizadas desde la consola de AWS AppSync y las llamadas de código a las API de AWS AppSync. La información recopilada por CloudTrail le permite determinar la solicitud que se realizó a AWS AppSync, la dirección IP del solicitante, quién hizo la solicitud, cuándo se hizo y otros detalles adicionales.
Puede crear un registro de seguimiento para habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon Simple Storage Service (Amazon S3), incluidos los eventos para AWS AppSync. Si no configura un registro de seguimiento, puede ver los eventos más recientes de la consola de CloudTrail en la consola de CloudTrail.
Para obtener más información acerca de CloudTrail, consulte la Guía del usuario de AWS CloudTrail.
AWS AppSyncInformación de en CloudTrail
CloudTrail se habilita en su cuenta de AWS cuando la crea. En la consola de CloudTrail del Historial de eventos, puede ver, buscar y descargar los últimos eventos de la cuenta de AWS. Para obtener más información, consulte Visualizadción de eventos con el historial de eventos de CloudTrail en la Guía del usuario de AWS CloudTrail.
Para mantener un registro continuo de eventos en la cuenta de AWS, incluidos los eventos de AWS AppSync, cree un registro de seguimiento. De manera predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones de AWS. El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. También es posible configurar otros servicios de AWS para analizar en profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más información, consulte lo indicado en la Guía del usuario de AWS CloudTrail:
-
Creación de un registro de seguimiento para su cuenta de AWS
-
Integraciones de servicios de AWS con registros de CloudTrail
-
Configuración de notificaciones de Amazon SNS para CloudTrail
-
Recepción de archivos de registro de CloudTrail de multirregiones
-
Recepción de archivos de registro de CloudTrail de varias cuentas
CloudTrail registra todas las operaciones de la API de AWS AppSync. Por ejemplo, las llamadas a las API CreateGraphqlApi, CreateDataSource y ListResolvers generan entradas en los archivos de registro de CloudTrail. Estas y otras operaciones se documentan en la referencia de la API de AWS AppSync.
Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad le ayuda a determinar:
-
Si la solicitud se realizó con credenciales de usuario de AWS Identity and Access Management (IAM) o credenciales de usuario raíz.
-
Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
-
Si la solicitud la realizó otro servicio de AWS.
Para obtener más información, consulte Elemento userIdentity de CloudTrail en la Guía del usuario de AWS CloudTrail.
AWS AppSyncEventos de datos de en CloudTrail
Los eventos de datos proporcionan información sobre las operaciones de recursos realizadas en o dentro de un recurso (por ejemplo, leer o escribir en un objeto de Amazon S3). Se denominan también operaciones del plano de datos. Los eventos de datos suelen ser actividades de gran volumen. De forma predeterminada, CloudTrail no registra eventos de datos. El Historial de eventos de CloudTrail no registra los eventos de datos.
Se aplican cargos adicionales a los eventos de datos. Para obtener más información sobre los precios de CloudTrail, consulte Precios de AWS CloudTrail
Puede registrar eventos de datos para el tipo de recurso de AWS::AppSync::GraphQLApi mediante la consola de CloudTrail AWS CLI o las operaciones de la API de CloudTrail (estas incluyen operaciones de consulta, mutación y suscripción, así como operaciones de conexión al punto de conexión de WebSocket en tiempo real, pero no los mensajes enviados a través de su punto de conexión de WebSocket en tiempo real). Para obtener más información sobre cómo registrar los eventos de datos, consulte Registro de eventos de datos con la Consola de administración de AWS y Registro de eventos de datos con la AWS Command Line Interface en la Guía del usuario de AWS CloudTrail.
En la siguiente tabla se muestra el tipo de recurso de AWS AppSync para el que puede registrar eventos de datos. La columna Tipo de evento de datos (consola) muestra el valor que se debe elegir en la lista de tipos de eventos de datos de la consola de CloudTrail. La columna resources.type value muestra el valor de resources.type, que especificaría al configurar los selectores de eventos avanzados mediante la AWS CLI o las API de CloudTrail. La columna API de datos registradas en CloudTrail muestra las llamadas a la API registradas en CloudTrail para el tipo de recurso.
| Tipo de evento de datos (consola) | resources.type value | API de datos registradas en CloudTrail |
|---|---|---|
| AppSync GraphQL |
AWS::AppSync::GraphQLApi
|
Puede configurar selectores de eventos avanzados para filtrar según los campos eventName, readOnly y resources.ARN y así registrar solo los eventos que son importantes para usted. Para obtener más información acerca de estos campos, consulte AdvancedFieldSelector en la Referencia de la API de AWS CloudTrail.
[ { "name": "Only 1 AppSync API", "fieldSelectors": [ { "field": "eventCategory", "equals": [ "Data" ] }, { "field": "resources.type", "equals": [ "AWS::AppSync::GraphQLApi" ] }, { "field": "resources.ARN", "equals": [ "arn:aws:appsync:us-east-1:111122223333:apis/YourGraphQLApiId" ] } ] } ]
Descripción de las entradas de los archivos de registro de AWS AppSync
CloudTrail proporciona eventos como archivos de registro que contienen una o varias entradas de registro. Un evento representa una única solicitud de cualquier origen e incluye información sobre la operación solicitada, la fecha y la hora de la operación, los parámetros de la solicitud, etcétera. Estos archivos de registro no rastrean el orden en la pila de las llamadas públicas a la API, por lo que estas no aparecen en ningún orden específico.
nota
El requestID no es un identificador único de autorización para los registros emitidos desde AWS AppSync. El cliente puede sobrescribir el requestID. Por lo tanto, debe tener cuidado al tomar decisiones basadas en esta información.
En el ejemplo que sigue se muestra una entrada de registro de CloudTrail que ilustra la operación CreateApiKey.
{ "Records": [{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "diego_ramirez" }, "eventTime": "2018-01-31T21:49:09Z", "eventSource": "appsync.amazonaws.com", "eventName": "CreateApiKey", "awsRegion": "us-west-2", "sourceIPAddress": "192.2.0.1", "userAgent": "aws-cli/1.11.72 Python/2.7.11 Darwin/16.7.0 botocore/1.5.35", "requestParameters": { "apiId": "a1b2c3d4e5f6g7h8i9jexample" }, "responseElements": { "apiKey": { "id": "***", "expires": 1518037200000 } }, "requestID": "99999999-9999-9999-9999-999999999999", "eventID": "99999999-9999-9999-9999-999999999999", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
En el ejemplo que sigue se muestra una entrada de registro de CloudTrail que ilustra la operación ListApiKeys.
{ "Records": [{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/diego_ramirez", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "diego_ramirez" }, "eventTime": "2018-01-31T21:49:09Z", "eventSource": "appsync.amazonaws.com", "eventName": "ListApiKeys", "awsRegion": "us-west-2", "sourceIPAddress": "192.2.0.1", "userAgent": "aws-cli/1.11.72 Python/2.7.11 Darwin/16.7.0 botocore/1.5.35", "requestParameters": { "apiId": "a1b2c3d4e5f6g7h8i9jexample" }, "responseElements": { "apiKeys": [ { "id": "***", "expires": 1517954400000 }, { "id": "***", "expires": 1518037200000 }, ] }, "requestID": "99999999-9999-9999-9999-999999999999", "eventID": "99999999-9999-9999-9999-999999999999", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
En el ejemplo que sigue se muestra una entrada de registro de CloudTrail que ilustra la operación DeleteApiKey.
{ "Records": [{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/diego_ramirez", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "diego_ramirez" }, "eventTime": "2018-01-31T21:49:09Z", "eventSource": "appsync.amazonaws.com", "eventName": "DeleteApiKey", "awsRegion": "us-west-2", "sourceIPAddress": "192.2.0.1", "userAgent": "aws-cli/1.11.72 Python/2.7.11 Darwin/16.7.0 botocore/1.5.35", "requestParameters": { "id": "***", "apiId": "a1b2c3d4e5f6g7h8i9jexample" }, "responseElements": null, "requestID": "99999999-9999-9999-9999-999999999999", "eventID": "99999999-9999-9999-9999-999999999999", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
En el ejemplo que sigue se muestra una entrada de registro de CloudTrail que ilustra una mutación de GraphQL correcta autorizada con un autorizador de funciones de Lambda personalizado.
{ "eventVersion": "1.10", "userIdentity": { "type": "Unknown" }, "eventTime": "2024-11-06T15:42:30Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "MyMutation", "authType": [ "AWS_LAMBDA" ], "fieldAuthorizationResults": { "deniedFields": [] } }, "requestID": "c2d3768b-3446-40a1-bd95-8399fe776f96", "eventID": "21568be1-a1a8-4f43-b978-63cb4cc02a96", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }
En el ejemplo que sigue se muestra una entrada de registro de CloudTrail que ilustra una operación de GraphQL parcialmente correcta autorizada con un autorizador de funciones de Lambda personalizado. Anote la propiedad fieldAuthorizationResults.deniedFields que especifica los campos denegados.
{ "eventVersion": "1.10", "userIdentity": { "type": "Unknown" }, "eventTime": "2024-11-06T16:11:49Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "MyMutation", "authType": [ "AWS_LAMBDA" ], "fieldAuthorizationResults": { "deniedFields": [ "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Mutation/fields/createPost", "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Subscription/fields/onCreatePost", "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Post/fields/status" ] } }, "requestID": "ae817c4c-66ba-4f64-92a5-ba9c9c341dcd", "eventID": "30109698-7605-476a-9dff-b7ed78d134dc", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }
En el ejemplo que sigue se muestra una entrada de registro de CloudTrail que ilustra una operación de GraphQL fallida.
{ "eventVersion": "1.10", "userIdentity": { "type": "Unknown" }, "eventTime": "2024-11-06T15:51:11Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "errorCode": "AccessDenied", "errorMessage": "{\n \"errors\" : [ {\n \"errorType\" : \"UnauthorizedException\",\n \"message\" : \"You are not authorized to make this call.\"\n } ]\n}", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "MyFullyDeniedLambdaMutation" }, "requestID": "0bef3cf3-a48b-4de9-8b1f-038afb563516", "eventID": "b738651f-4ec0-4548-8fec-200c6b42842b", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }
El siguiente ejemplo muestra una solicitud de GraphQL correcta.
{ "eventVersion": "1.10", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE:jane_doe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/jane_doe", "accountId": "123456789012", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountId": "123456789012", "userName": "jane_doe" }, "attributes": { "creationDate": "2024-11-06T15:40:09Z", "mfaAuthenticated": "false" } } }, "eventTime": "2024-11-06T16:03:43Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "IamFullSuccess", "authType": [ "AWS_IAM" ], "fieldAuthorizationResults": { "allowedFields": [ "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Mutation/fields/createSecondPostAllowed" ], "deniedFields": [] } }, "requestID": "edc6bbbf-6bf2-40f5-820f-ef444f12e0c1", "eventID": "524656a5-0925-4370-9e7e-08888e9c299f", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }