Protokollierung für eine HTTP-API konfigurieren - Amazon API Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Protokollierung für eine HTTP-API konfigurieren

Sie können die Protokollierung aktivieren, um Protokolle in Logs zu CloudWatch schreiben. Sie können Protokollierungsvariablen verwenden, um den Inhalt Ihrer Protokolle anzupassen.

Um die Protokollierung für eine HTTP-API einzuschalten, müssen Sie Folgendes tun.

  1. Stellen Sie sicher, dass Ihr -Benutzer über die erforderlichen Berechtigungen zum Einschalten der Protokollierung verfügt.

  2. Erstellen Sie eine CloudWatch Protokollgruppe für Logs.

  3. Geben Sie den ARN der CloudWatch Logs-Protokollgruppe für eine Phase Ihrer API an.

Berechtigungen zum Einschalten der Protokollierung

Um die Protokollierung für eine API einzuschalten, muss der -Benutzer über die folgenden Berechtigungen verfügen.

{ "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": "*" } ] }

Eine Protokollgruppe erstellen und die Protokollierung für HTTP-APIs aktivieren

Sie können eine Protokollgruppe erstellen und die Zugriffsprotokollierung mit dem AWS Management Console oder dem aktivieren AWS CLI.

AWS Management Console
  1. Erstellen Sie eine -Protokollgruppe.

    Informationen zum Erstellen einer Protokollgruppe mithilfe der Konsole finden Sie unter Erstellen einer Protokollgruppe im Amazon CloudWatch Logs-Benutzerhandbuch.

  2. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  3. Wählen Sie eine HTTP-API.

  4. Wählen Sie unter der Registerkarte Monitor (Überwachen) im Hauptnavigationsbereich die Option Logging (Protokollierung) aus.

  5. Wählen Sie eine Phase aus, um die Protokollierung zu aktivieren, und wählen Sie Select (Auswählen) aus.

  6. Wählen Sie Edit (Bearbeiten) aus, um die Zugriffsprotokollierung zu aktivieren.

  7. Aktivieren Sie die Zugriffsprotokollierung, geben Sie ein CloudWatch Protokoll ein und wählen Sie ein Protokollformat aus.

  8. Wählen Sie Speichern.

AWS CLI

Der folgende AWS CLI Befehl erstellt eine Protokollgruppe.

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

Zum Einschalten der Protokollierung benötigen Sie den Amazon-Ressourcennamen (ARN) für Ihre Protokollgruppe. Das ARN-Format ist arn:aws:logs: region: account-id:log-group:. log-group-name

Der folgende AWS CLI Befehl aktiviert die Protokollierung für die Phase einer HTTP-API. $default

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"}'

Beispielprotokollformate

Beispiele für einige gängige Zugriffsprotokollformate sind in der API Gateway-Konsole verfügbar und im Folgenden aufgeführt.

  • 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 (durch Komma getrennte Werte):

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