Configuración del registro de las API de HTTP en API Gateway - Amazon API Gateway

Configuración del registro de las API de HTTP en API Gateway

Puede activar el registro para escribir registros en CloudWatch Logs. Puede utilizar variables de registro para personalizar el contenido de los registros.

Para activar el registro para una API HTTP, tendrá que hacer lo siguiente.

  1. Asegúrese de que el usuario tenga los permisos necesarios para activar el registro.

  2. Cree un grupo de registros de CloudWatch Logs.

  3. Proporcione el ARN del grupo de registros de CloudWatch Logs para una etapa de la API.

Permisos para activar el registro

Para activar el registro para una API, el usuario debe tener los siguientes permisos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:GetLogEvents", "logs:FilterLogEvents" ], "Resource": "arn:aws:logs:us-east-2:123456789012:log-group:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:PutResourcePolicy", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:CreateLogGroup", "logs:DescribeResourcePolicies", "logs:GetLogDelivery", "logs:ListLogDeliveries" ], "Resource": "*" } ] }

Crear un grupo de registro y activar el registro para las API HTTP

Puede crear un grupo de registro y activar el registro de acceso mediante AWS Management Console o AWS CLI.

AWS Management Console
  1. Crear un grupo de registros.

    Para obtener información acerca de cómo crear un grupo de registro mediante la consola, consulte Crear un grupo de registro en la Guía del usuario de Registros de Amazon CloudWatch.

  2. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  3. Elija una API HTTP.

  4. En la pestaña Monitor (Monitorear), en el panel de navegación principal, elija Logging (Registro).

  5. Seleccione una etapa para activar el registro y elija Select (Seleccionar).

  6. Elija Edit (Editar) para activar el registro de acceso.

  7. Active el Access logging (Registro de acceso), ingrese un registro de CloudWatch y seleccione un formato de registro.

  8. Seleccione Guardar.

AWS CLI

El siguiente comando de la AWS CLI crea un grupo de registros.

aws logs create-log-group --log-group-name my-log-group

Necesita el nombre de recurso de Amazon (ARN) para el grupo de registro para activar el registro. El formato ARN es arn:aws:logs:region:account-id:log-group:log-group-name.

El siguiente comando de AWS CLI activa el registro para la etapa $default de una API HTTP.

aws apigatewayv2 update-stage --api-id abcdef \ --stage-name '$default' \ --access-log-settings '{"DestinationArn": "arn:aws:logs:region:account-id:log-group:log-group-name", "Format": "$context.identity.sourceIp - - [$context.requestTime] \"$context.httpMethod $context.routeKey $context.protocol\" $context.status $context.responseLength $context.requestId"}'

Ejemplos de formatos de registro

La consola de API Gateway incluye algunos ejemplos de los formatos de registro de acceso habituales, los cuales se detallan a continuación.

  • CLF (Common Log Format):

    $context.identity.sourceIp - - [$context.requestTime] "$context.httpMethod $context.routeKey $context.protocol" $context.status $context.responseLength $context.requestId $context.extendedRequestId
  • JSON:

    { "requestId":"$context.requestId", "ip": "$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod","routeKey":"$context.routeKey", "status":"$context.status","protocol":"$context.protocol", "responseLength":"$context.responseLength", "extendedRequestId": "$context.extendedRequestId" }
  • XML:

    <request id="$context.requestId"> <ip>$context.identity.sourceIp</ip> <requestTime>$context.requestTime</requestTime> <httpMethod>$context.httpMethod</httpMethod> <routeKey>$context.routeKey</routeKey> <status>$context.status</status> <protocol>$context.protocol</protocol> <responseLength>$context.responseLength</responseLength> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request>
  • CSV (valores separados por comas):

    $context.identity.sourceIp,$context.requestTime,$context.httpMethod,$context.routeKey,$context.protocol,$context.status,$context.responseLength,$context.requestId,$context.extendedRequestId