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.
Configurer la CloudWatch journalisation REST APIs dans API Gateway
Pour résoudre les problèmes liés à l'exécution des demandes ou à l'accès client à votre compteAPI, vous pouvez activer Amazon CloudWatch Logs pour enregistrer les API appels. Pour plus d'informations sur CloudWatch, voirSurveillez REST API l'exécution avec CloudWatch les métriques Amazon.
CloudWatch formats de journal pour API Gateway
Il existe deux types de API connexion CloudWatch : la journalisation des exécutions 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.
Les données enregistrées incluent les erreurs ou les traces d'exécution (telles que les valeurs des paramètres de demande ou de réponse ou les charges utiles), les données utilisées par les autorisateurs Lambda (anciennement appelés autorisateurs personnalisés), API si les clés sont requises, si les plans d'utilisation sont activés, et d'autres informations. APIGateway expédie les en-têtes d'autorisation, les valeurs API clés et les paramètres de demande sensibles similaires à partir des données enregistrées.
Lorsque vous déployez unAPI, API Gateway crée un groupe de journaux et des flux de journaux sous le groupe de journaux. Le groupe de journaux est nommé selon le format API-Gateway-Execution-Logs_{rest-api-id}/{stage_name}
. Dans chaque groupe de journaux, les journaux sont ensuite divisés en flux de journaux, qui sont ordonnés par Heure du dernier événement à mesure que les données sont rapportées.
Dans la journalisation des accès, vous, en tant que API développeur, souhaitez enregistrer qui a accédé à votre compte API et comment l'appelant a accédé auAPI. Vous pouvez créer votre propre groupe de journaux ou choisir un groupe de journaux existant qui pourrait être géré par API Gateway. Pour spécifier les détails d'accès, vous sélectionnez $contextdes variables, un format de journal et une destination de groupe de journaux.
Le format du journal d’accès doit inclure au moins $context.requestId
ou $context.extendedRequestId
. La meilleure pratique consiste à inclure $context.requestId
et $context.extendedRequestId
dans le format de votre journal.
$context.requestId
-
Cela enregistre la valeur dans l'
x-amzn-RequestId
en-tête. Les clients peuvent remplacer la valeur de l'x-amzn-RequestId
en-tête par une valeur au format d'identifiant unique universel (UUID). APIGateway renvoie cet ID de demande dans l'en-tête dex-amzn-RequestId
réponse. APIGateway remplace les demandes remplacées IDs qui n'ont pas le format d'un UUID with
dans vos journaux d'accès.UUID
_REPLACED_INVALID_REQUEST_ID $context.extendedRequestId
-
L'extendedRequestID est un identifiant unique généré par API Gateway. APIGateway renvoie cet ID de demande dans l'en-tête de
x-amz-apigw-id
réponse. Un API appelant ne peut pas fournir ou remplacer cet ID de demande. Vous devrez peut-être fournir cette valeur au AWS Support pour vous aider à résoudre votre API problème. Pour de plus amples informations, veuillez consulter $contextVariables pour les modèles de données, les autorisateurs, les modèles de mappage et la journalisation des CloudWatch accès.
Note
Seules $context
les variables sont prises en charge.
Choisissez un format de journal également adopté par votre backend analytique, tel que Common Log Format
Des exemples de formats de journaux d'accès couramment utilisés sont présentés dans la console API Gateway et sont répertoriés comme suit.
-
CLF
(Format de journal commun): $context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime]"$context.httpMethod $context.resourcePath $context.protocol" $context.status $context.responseLength $context.requestId $context.extendedRequestId
-
JSON
:{ "requestId":"$context.requestId", "extendedRequestId":"$context.extendedRequestId","ip": "$context.identity.sourceIp", "caller":"$context.identity.caller", "user":"$context.identity.user", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod", "resourcePath":"$context.resourcePath", "status":"$context.status", "protocol":"$context.protocol", "responseLength":"$context.responseLength" }
-
XML
:<request id="$context.requestId"> <extendedRequestId>$context.extendedRequestId</extendedRequestId> <ip>$context.identity.sourceIp</ip> <caller>$context.identity.caller</caller> <user>$context.identity.user</user> <requestTime>$context.requestTime</requestTime> <httpMethod>$context.httpMethod</httpMethod> <resourcePath>$context.resourcePath</resourcePath> <status>$context.status</status> <protocol>$context.protocol</protocol> <responseLength>$context.responseLength</responseLength> </request>
-
CSV
(valeurs séparées par des virgules) :$context.identity.sourceIp,$context.identity.caller,$context.identity.user,$context.requestTime,$context.httpMethod,$context.resourcePath,$context.protocol,$context.status,$context.responseLength,$context.requestId,$context.extendedRequestId
Autorisations pour la CloudWatch journalisation
Pour activer CloudWatch les journaux, vous devez autoriser API Gateway à lire et à écrire les journaux CloudWatch de votre compte. La politique AmazonAPIGatewayPushToCloudWatchLogs
gérée (avec un ARN dearn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs
) dispose de toutes les autorisations requises :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents", "logs:FilterLogEvents" ], "Resource": "*" } ] }
Note
APIGateway appelle AWS Security Token Service pour assumer le IAM rôle, alors assurez-vous qu'il AWS STS est activé pour la région. Pour plus d'informations, consultez la section Gestion AWS STS dans une AWS région.
Pour accorder ces autorisations à votre compte, créez un IAM rôle avec apigateway.amazonaws.com
comme entité de confiance, associez la politique précédente au IAM rôle et définissez le IAM rôle ARN sur la propriété cloudWatchRoleArn de votre compte. Vous devez définir la cloudWatchRolepropriété Arn séparément pour chaque AWS région dans laquelle vous souhaitez activer CloudWatch les journaux.
Si un message d'erreur s'affiche lors de la définition du IAM rôleARN, vérifiez les paramètres de votre AWS Security Token Service compte pour vous assurer qu' AWS STS il est activé dans la région que vous utilisez. Pour plus d'informations sur l'activation AWS STS, consultez la section Gestion AWS STS dans une AWS région du Guide de IAM l'utilisateur.
Configuration de la CloudWatch API journalisation à l'aide de la console API Gateway
Pour configurer la CloudWatch API journalisation, vous devez avoir déployé le API sur une étape. Vous devez également avoir configuré un rôle CloudWatch Logs approprié ARN pour votre compte.
Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.
-
Dans le volet de navigation principal, choisissez Paramètres, puis sous Journalisation, choisissez Modifier.
-
Pour le rôle ARN du CloudWatch journal ARN, entrez un IAM rôle doté des autorisations appropriées. Vous devez le faire une fois pour chaque création Compte AWS à APIs l'aide de API Gateway.
-
Dans le volet de navigation principal, choisissez APIs, puis effectuez l'une des opérations suivantes :
-
Choisissez une étape existanteAPI, puis choisissez une étape.
-
Créez unAPI, puis déployez-le sur une scène.
-
Dans le volet de navigation principal, choisissez Étapes.
-
Dans la section Journaux et suivi, choisissez Modifier.
-
Pour activer la journalisation de l'exécution :
-
Sélectionnez un niveau de journalisation dans le menu déroulant CloudWatch Logs. Les niveaux de journalisation sont les suivants :
-
Désactivé — La journalisation n'est pas activée pour cette étape.
-
Erreurs uniquement : la journalisation n'est activée que pour les erreurs.
-
Journaux d'erreurs et d'informations : la journalisation est activée pour tous les événements.
-
-
(Facultatif) Sélectionnez Suivi des données pour activer l'enregistrement du suivi des données pour votre scène. Cela peut être utile pour résoudre les problèmesAPIs, mais peut entraîner l'enregistrement de données sensibles.
Note
Nous vous recommandons de ne pas utiliser le suivi des données pour la productionAPIs.
-
(Facultatif) Sélectionnez Mesures détaillées pour activer les CloudWatch mesures détaillées.
Pour plus d'informations sur CloudWatch les métriques, consultezSurveillez REST API l'exécution avec CloudWatch les métriques Amazon.
-
-
Pour activer la journalisation des accès :
-
Activez Journalisation des accès personnalisée.
-
Pour la destination du journal d'accès ARN, entrez le nom ARN d'un groupe de journaux. Le ARN format est
arn:aws:logs:
.{region}
:{account-id}
:log-group:log-group-name
-
Dans Format des journaux, entrez un format de journal. Vous pouvez choisir CLFJSON, XML, ou CSV. Pour en savoir plus sur les exemples de formats de journal, consultez CloudWatch formats de journal pour API Gateway.
-
-
Sélectionnez Enregistrer les modifications.
Note
Vous pouvez activer la journalisation de l'exécution et la journalisation de l'accès indépendamment l'une de l'autre.
APIGateway est maintenant prêt à enregistrer les demandes adressées à votreAPI. Vous n'avez pas besoin de le redéployer API lorsque vous mettez à jour les paramètres, les journaux ou les variables d'étape.
Configurer la CloudWatch API journalisation à l'aide de AWS CloudFormation
Utilisez l'exemple de AWS CloudFormation modèle suivant pour créer un groupe de CloudWatch journaux Amazon Logs et configurer la journalisation de l'exécution et des accès pour une étape. Pour activer CloudWatch les journaux, vous devez autoriser API Gateway à lire et à écrire les journaux CloudWatch de votre compte. Pour en savoir plus, consultez la section Associer un compte à IAM un rôle dans le Guide de AWS CloudFormation l'utilisateur.
TestStage: Type: AWS::ApiGateway::Stage Properties: StageName: test RestApiId: !Ref MyAPI DeploymentId: !Ref Deployment Description: "test stage description" MethodSettings: - ResourcePath: "/*" HttpMethod: "*" LoggingLevel: INFO AccessLogSetting: DestinationArn: !GetAtt MyLogGroup.Arn Format: $context.extendedRequestId $context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime] "$context.httpMethod $context.resourcePath $context.protocol" $context.status $context.responseLength $context.requestId MyLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Join - '-' - - !Ref MyAPI - access-logs