Configurare la registrazione per WebSocket APIs Gateway API - Amazon API Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare la registrazione per WebSocket APIs Gateway API

È possibile abilitare la registrazione per scrivere i log nei registri. CloudWatch Esistono due tipi di API registrazione CloudWatch: registrazione dell'esecuzione e registrazione degli accessi. Nella registrazione dell'esecuzione, API Gateway gestisce i registri. CloudWatch Il processo include la creazione di gruppi e flussi di log e la segnalazione ai flussi di log delle richieste e delle risposte dell'intermediario.

Nella registrazione degli accessi, tu, in qualità di API sviluppatore, desideri registrare chi ha effettuato l'accesso al tuo API e in che modo il chiamante ha effettuato l'accesso al. API Puoi creare il tuo gruppo di log o scegliere un gruppo di log esistente che possa essere gestito da API Gateway. Per specificare i dettagli di accesso, seleziona variabili $context (espresse in un formato a scelta) e scegli un gruppo di log come destinazione.

Per istruzioni su come configurare la CloudWatch registrazione, vedereConfigurare la CloudWatch API registrazione utilizzando la console API Gateway.

Quando specifichi il Log Format (Formato di log), puoi scegliere quali variabili di contesto registrare. Sono supportate le seguenti variabili.

Parametro Descrizione
$context.apiId

L'identificatore che API Gateway assegna al tuo. API

$context.authorize.error Il messaggio di errore di autorizzazione.
$context.authorize.latency La latenza di autorizzazione in ms.
$context.authorize.status Il codice di stato restituito da un tentativo di autorizzazione.
$context.authorizer.error Il messaggio di errore restituito da un'autorizzazione.
$context.authorizer.integrationLatency La latenza del provider di autorizzazioni Lambda in ms.
$context.authorizer.integrationStatus Il codice di stato restituito da un'autorizzazione Lambda.
$context.authorizer.latency La latenza di autorizzazione in ms.
$context.authorizer.requestId L'ID della AWS richiesta dell'endpoint.
$context.authorizer.status Il codice di stato restituito da un'autorizzazione.
$context.authorizer.principalId

L'identificazione dell'utente principale associata al token inviato dal client e restituito da una funzione Lambda dell'autorizzazione API Gateway Lambda. (Un provider di autorizzazioni Lambda in precedenza noto come autorizzazioni ad hoc).

$context.authorizer.property

Il valore stringato della coppia chiave-valore specificata della context mappa restituito da una funzione di autorizzazione Gateway API Lambda. Ad esempio, se le autorizzazioni restituiscono la mappa context seguente:

"context" : { "key": "value", "numKey": 1, "boolKey": true }

la chiamata di $context.authorizer.key restituisce la stringa "value", la chiamata di $context.authorizer.numKey restituisce la stringa "1" e la chiamata di $context.authorizer.boolKey restituisce la stringa "true".

$context.authenticate.error Il messaggio di errore restituito da un tentativo di autenticazione.
$context.authenticate.latency La latenza di autenticazione in ms.
$context.authenticate.status Il codice di stato restituito da un tentativo di autenticazione.
$context.connectedAt

L'ora della connessione in formato Epoch.

$context.connectionId

Un ID univoco per la connessione, che può essere utilizzato per effettuare un callback al client.

$context.domainName

Un WebSocket API nome di dominio per. Può essere utilizzato per effettuare un callback al client (invece di un valore codificato).

$context.error.message

Una stringa che contiene un messaggio di errore API Gateway.

$context.error.messageString Valore $context.error.message tra virgolette, ovvero "$context.error.message".
$context.error.responseType

Il tipo di risposta di errore.

$context.error.validationErrorString

Stringa contenente un messaggio di errore di convalida dettagliato.

$context.eventType

Il tipo di evento: CONNECT, MESSAGE o DISCONNECT.

$context.extendedRequestId Equivalente a $context.requestId.
$context.identity.accountId

L'ID AWS dell'account associato alla richiesta.

$context.identity.apiKey

La chiave API del proprietario associata alla richiesta con chiave abilitataAPI.

$context.identity.apiKeyId L'ID della API chiave associato alla richiesta abilitata alla chiave API
$context.identity.caller

Identificatore dell'entità principale dell'intermediario che ha firmato la richiesta. Supportato per i percorsi che utilizzano l'IAMautorizzazione.

$context.identity.cognitoAuthenticationProvider

Un elenco separato da virgole di tutti i provider di autenticazione Amazon Cognito utilizzati dal chiamante che effettua la richiesta. Disponibile solo se la richiesta è stata firmata con credenziali Amazon Cognito.

Ad esempio, per un'identità di un pool di utenti Amazon Cognito, cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim

Per informazioni sui provider di autenticazione di Amazon Cognito disponibili, consulta Using Federated Identities nella Amazon Cognito Developer Guide.

$context.identity.cognitoAuthenticationType

Tipo di autenticazione Amazon Cognito dell'intermediario da cui proviene la richiesta. Disponibile solo se la richiesta è stata firmata con credenziali Amazon Cognito. I valori possibili includono authenticated per le identità autenticate e unauthenticated per le identità non autenticate.

$context.identity.cognitoIdentityId

ID identità di Amazon Cognito dell'intermediario da cui proviene la richiesta. Disponibile solo se la richiesta è stata firmata con credenziali Amazon Cognito.

$context.identity.cognitoIdentityPoolId

ID pool di identità di Amazon Cognito dell'intermediario da cui proviene la richiesta. Disponibile solo se la richiesta è stata firmata con credenziali Amazon Cognito.

$context.identity.principalOrgId

L'ID organizzazione AWS. Supportato per i percorsi che utilizzano l'autorizzazione. IAM

$context.identity.sourceIp

L'indirizzo IP di origine della TCP connessione che effettua la richiesta a API Gateway.

$context.identity.user

Identificatore dell'entità principale dell'utente che sarà autorizzato per l'accesso alle risorse. Supportato per i percorsi che utilizzano IAM l'autorizzazione.

$context.identity.userAgent

L'agente utente del API chiamante.

$context.identity.userArn

L'Amazon Resource Name (ARN) dell'utente effettivo identificato dopo l'autenticazione.

$context.integration.error Il messaggio di errore restituito da un'integrazione.
$context.integration.integrationStatus Per l'integrazione del proxy Lambda, il codice di stato restituito dal codice della funzione Lambda di backend AWS Lambda, non dal codice della funzione Lambda.
$context.integration.latency Latenza di integrazione in ms. Equivalente a $context.integrationLatency.
$context.integration.requestId L'ID della AWS richiesta dell'endpoint. Equivalente a $context.awsEndpointRequestId.
$context.integration.status Il codice di stato restituito da un'integrazione. Per le integrazioni proxy Lambda, questo è il codice di stato restituito dal codice della funzione Lambda. Equivalente a $context.integrationStatus.
$context.integrationLatency La latenza di integrazione in millisecondi, disponibile solo per il log di accesso.
$context.messageId

Un ID univoco sul lato server per un messaggio. Disponibile solo quando $context.eventType è MESSAGE.

$context.requestId

Come $context.extendedRequestId.

$context.requestTime L'ora della richiesta in CLFformato -formattato (). dd/MMM/yyyy:HH:mm:ss +-hhmm
$context.requestTimeEpoch L'ora della richiesta in formato epoca (Unix epoch) in millisecondi.
$context.routeKey

La chiave di instradamento selezionata.

$context.stage

La fase di distribuzione della API chiamata (ad esempio, beta o prod).

$context.status

Lo stato della risposta.

$context.waf.error Il messaggio di errore restituito da AWS WAF.
$context.waf.latency La AWS WAF latenza in ms.
$context.waf.status Il codice di stato restituito da AWS WAF.

Esempi di alcuni formati di log di accesso di uso comune sono mostrati nella console API Gateway e sono elencati di seguito.

  • CLF (Common Log Format):

    $context.identity.sourceIp $context.identity.caller \ $context.identity.user [$context.requestTime] "$context.eventType $context.routeKey $context.connectionId" \ $context.status $context.requestId

    I caratteri di continuazione (\) sono intesi come un aiuto visivo. Il formato del registro deve essere una singola riga. È possibile aggiungere un carattere di nuova riga (\n) alla fine del formato di registro per includere una nuova riga alla fine di ogni voce di registro.

  • JSON:

    { "requestId":"$context.requestId", \ "ip": "$context.identity.sourceIp", \ "caller":"$context.identity.caller", \ "user":"$context.identity.user", \ "requestTime":"$context.requestTime", \ "eventType":"$context.eventType", \ "routeKey":"$context.routeKey", \ "status":"$context.status", \ "connectionId":"$context.connectionId" }

    I caratteri di continuazione (\) sono intesi come un aiuto visivo. Il formato del registro deve essere una singola riga. È possibile aggiungere un carattere di nuova riga (\n) alla fine del formato di registro per includere una nuova riga alla fine di ogni voce di registro.

  • XML:

    <request id="$context.requestId"> \ <ip>$context.identity.sourceIp</ip> \ <caller>$context.identity.caller</caller> \ <user>$context.identity.user</user> \ <requestTime>$context.requestTime</requestTime> \ <eventType>$context.eventType</eventType> \ <routeKey>$context.routeKey</routeKey> \ <status>$context.status</status> \ <connectionId>$context.connectionId</connectionId> \ </request>

    I caratteri di continuazione (\) sono intesi come un aiuto visivo. Il formato del registro deve essere una singola riga. È possibile aggiungere un carattere di nuova riga (\n) alla fine del formato di registro per includere una nuova riga alla fine di ogni voce di registro.

  • CSV (valori separati da virgola):

    $context.identity.sourceIp,$context.identity.caller, \ $context.identity.user,$context.requestTime,$context.eventType, \ $context.routeKey,$context.connectionId,$context.status, \ $context.requestId

    I caratteri di continuazione (\) sono intesi come un aiuto visivo. Il formato del registro deve essere una singola riga. È possibile aggiungere un carattere di nuova riga (\n) alla fine del formato di registro per includere una nuova riga alla fine di ogni voce di registro.