Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Vous pouvez activer la journalisation pour écrire des CloudWatch journaux dans Logs. Il existe deux types de connexion à l'API CloudWatch : la journalisation de l'exécution et la journalisation des accès. Lors de la journalisation de l'exécution, API Gateway gère les CloudWatch journaux. Le processus comprend la création de groupes de journaux et de flux de journaux, et la génération de rapports dans les flux de journaux sur toutes les demandes et réponses des utilisateurs.
Pour améliorer votre niveau de sécurité, nous vous recommandons d'utiliser la journalisation des exécutions au INFO
niveau ERROR
or. Vous devrez peut-être le faire pour vous conformer aux différents cadres de conformité. Pour plus d'informations, consultez la section Contrôles Amazon API Gateway dans le guide de AWS Security Hub l'utilisateur.
Dans la journalisation des accès, vous, en tant que développeur d’API, souhaitez enregistrer qui a accédé à votre API et comment l’appelant à eu accès à l’API. Vous pouvez créer votre propre groupe de journaux ou en choisir un existant, qui peut être géré par API Gateway. Pour spécifier les détails d’accès, vous sélectionnez des variables $context
(exprimées au format de votre choix) et vous choisissez un groupe de journaux comme destination.
Pour obtenir des instructions sur la configuration de la CloudWatch journalisation, consultezConfiguration de la journalisation des CloudWatch API à l'aide de la console API Gateway.
Lorsque vous spécifiez Log Format (Format de journal), vous pouvez choisir les variables de contexte à journaliser. Les variables suivantes sont prises en charge.
Paramètre | Description |
---|---|
$context.apiId |
Identifiant qu’API Gateway attribue à votre API. |
$context.authorize.error |
Message d’erreur d’autorisation. |
$context.authorize.latency |
Latence d’autorisation en millisecondes. |
$context.authorize.status |
Code de statut renvoyé à la suite d’une tentative d’autorisation. |
$context.authorizer.error |
Message d’erreur renvoyé par un mécanisme d’autorisation. |
$context.authorizer.integrationLatency |
Latence de l’autorisation Lambda en ms. |
$context.authorizer.integrationStatus |
Code de statut renvoyé par un mécanisme d’autorisation Lambda. |
$context.authorizer.latency |
Latence du mécanisme d’autorisation en millisecondes (ms). |
$context.authorizer.requestId |
ID de demande du AWS point de terminaison. |
$context.authorizer.status |
Code de statut renvoyé par un mécanisme d’autorisation. |
$context.authorizer.principalId |
L’identifiant utilisateur principal qui est associé au jeton envoyé par le client et retourné par une fonction Lambda du mécanisme d’autorisation API Gateway Lambda. (Un mécanisme d’autorisation Lambda était auparavant connu sous le nom de mécanisme d’autorisation personnalisé.) |
$context.authorizer. |
Valeur obtenue à l’aide de stringify de la paire clé-valeur spécifiée du mappage
l’appel de |
$context.authenticate.error |
Message d’erreur renvoyé à la suite d’une tentative d’authentification. |
$context.authenticate.latency |
Latence d’authentification en millisecondes. |
$context.authenticate.status |
Code de statut renvoyé à la suite d’une tentative d’authentification. |
$context.connectedAt |
Temps de connexion au format Epoch |
$context.connectionId |
ID unique pour la connexion qui peut être utilisé pour effectuer un rappel au client. |
$context.domainName |
Nom de domaine pour l' WebSocket API. Ce nom peut être utilisé pour effectuer un rappel au client (au lieu d’une valeur codée en dur). |
$context.error.message |
Chaîne contenant un message d’erreur API Gateway. |
$context.error.messageString |
La valeur entre guillemets de $context.error.message , à savoir "$context.error.message" . |
$context.error.responseType |
Type de réponse d’erreur. |
$context.error.validationErrorString |
Chaîne contenant un message d’erreur de validation détaillé. |
$context.eventType |
Type d'événement : |
$context.extendedRequestId |
Équivalent à $context.requestId . |
$context.identity.accountId |
L'ID de AWS compte associé à la demande. |
$context.identity.apiKey |
Clé du propriétaire d’API associée à la demande d’API activée par clé. |
$context.identity.apiKeyId |
ID de clé du propriétaire d’API associée à la demande d’API activée par clé |
$context.identity.caller |
Identifiant principal de l’appelant qui a signé la demande. Pris en charge pour les routes qui utilisent l’autorisation IAM. |
$context.identity.cognitoAuthenticationProvider |
Liste séparée par des virgules de tous les fournisseurs d’authentification Amazon Cognito utilisés par l’appelant à l’origine de la demande. Disponible uniquement si la demande a été signée avec les informations d’identification Amazon Cognito. Par exemple, pour une identité provenant d’un groupe d’utilisateurs Amazon Cognito, Pour plus d’informations sur les fournisseurs d’authentification Amazon Cognito disponibles, consultez Using Federated Identities dans le Guide du développeur Amazon Cognito. |
$context.identity.cognitoAuthenticationType |
Type d’authentification Amazon Cognito de l’appelant effectuant la demande. Disponible uniquement si la demande a été signée avec les informations d’identification Amazon Cognito. Les valeurs possibles incluent |
$context.identity.cognitoIdentityId |
ID d’identité Amazon Cognito de l’appelant effectuant la demande. Disponible uniquement si la demande a été signée avec les informations d’identification Amazon Cognito. |
$context.identity.cognitoIdentityPoolId |
ID de groupe d’identités Amazon Cognito de l’appelant effectuant la demande. Disponible uniquement si la demande a été signée avec les informations d’identification Amazon Cognito. |
$context.identity.principalOrgId |
ID d’organisation AWS. Pris en charge pour les routes qui utilisent l’autorisation IAM. |
$context.identity.sourceIp |
Adresse IP source de la connexion TCP envoyant la demande à API Gateway. |
$context.identity.user |
Identifiant principal de l’utilisateur qui sera autorisé à accéder aux ressources. Pris en charge pour les routes qui utilisent l’autorisation IAM. |
$context.identity.userAgent |
Agent utilisateur de l’appelant de l’API. |
$context.identity.userArn |
ARN (Amazon Resource Name) de l’utilisateur identifié après l’authentification. |
$context.integration.error |
Message d’erreur renvoyé à partir d’une intégration. |
$context.integration.integrationStatus |
Pour l'intégration du proxy Lambda, le code d'état est renvoyé par le code de fonction Lambda principal AWS Lambda, et non par le code de fonction Lambda principal. |
$context.integration.latency |
Latence d’intégration en millisecondes (ms). Équivalent à $context.integrationLatency . |
$context.integration.requestId |
ID de demande du AWS point de terminaison. Équivalent à $context.awsEndpointRequestId . |
$context.integration.status |
Code de statut renvoyé à partir d’une intégration. Pour les intégrations de proxy Lambda, code de statut que votre code de fonction Lambda renvoie. Équivalent à $context.integrationStatus . |
$context.integrationLatency |
Latence d’intégration en ms, disponible pour la journalisation des accès uniquement. |
$context.messageId |
ID côté serveur unique pour un message. Uniquement disponible lorsque |
$context.requestId |
Identique à |
$context.requestTime |
Durée des demandes au format CLFdd/MMM/yyyy:HH:mm:ss
+-hhmm ). |
$context.requestTimeEpoch |
Heure de la demande au format Epoch |
$context.routeKey |
Clé de routage sélectionnée. |
$context.stage |
Étape de déploiement de l’appel d’API (par exemple, bêta ou production). |
$context.status |
Statut de la réponse. |
$context.waf.error |
Le message d'erreur renvoyé par AWS WAF. |
$context.waf.latency |
La AWS WAF latence en ms. |
$context.waf.status |
Le code d'état renvoyé par AWS WAF. |
Quelques exemples de certains formats de journaux d’accès utilisés couramment sont affichés dans la console API Gateway et répertoriés ci-dessous.
-
CLF
(Format de journal commun): $context.identity.sourceIp $context.identity.caller \ $context.identity.user [$context.requestTime] "$context.eventType $context.routeKey $context.connectionId" \ $context.status $context.requestId
Les caractères de continuation (
\
) sont destinés à être une aide visuelle. Le format du journal doit être une seule ligne. Vous pouvez ajouter un caractère de nouvelle ligne (\n
) à la fin du format du journal pour inclure une nouvelle ligne à la fin de chaque entrée du journal. -
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" }
Les caractères de continuation (
\
) sont destinés à être une aide visuelle. Le format du journal doit être une seule ligne. Vous pouvez ajouter un caractère de nouvelle ligne (\n
) à la fin du format du journal pour inclure une nouvelle ligne à la fin de chaque entrée du journal. -
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>
Les caractères de continuation (
\
) sont destinés à être une aide visuelle. Le format du journal doit être une seule ligne. Vous pouvez ajouter un caractère de nouvelle ligne (\n
) à la fin du format du journal pour inclure une nouvelle ligne à la fin de chaque entrée du journal. -
CSV
(valeurs séparées par des virgules) :$context.identity.sourceIp,$context.identity.caller, \ $context.identity.user,$context.requestTime,$context.eventType, \ $context.routeKey,$context.connectionId,$context.status, \ $context.requestId
Les caractères de continuation (
\
) sont destinés à être une aide visuelle. Le format du journal doit être une seule ligne. Vous pouvez ajouter un caractère de nouvelle ligne (\n
) à la fin du format du journal pour inclure une nouvelle ligne à la fin de chaque entrée du journal.