Configurare la CloudWatch registrazione per le API REST in API Gateway - 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 CloudWatch registrazione per le API REST in API Gateway

Per risolvere i problemi relativi all'esecuzione della richiesta o all'accesso del client alla tua API, puoi abilitare Amazon CloudWatch Logs per registrare le chiamate API. Per ulteriori informazioni su CloudWatch, consulta. Monitora REST API l'esecuzione con i CloudWatch parametri di Amazon

CloudWatch formati di registro per API Gateway

Esistono due tipi di accesso tramite API CloudWatch: registrazione dell'esecuzione e registrazione degli accessi. Nella registrazione dell'esecuzione, API Gateway gestisce i CloudWatch log. 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.

I dati registrati includono errori o tracce di esecuzione (come valori dei parametri di richiesta o risposta o payload), dati utilizzati dagli autorizzatori Lambda (precedentemente noti come autorizzatori personalizzati), se sono necessarie chiavi API, se i piani di utilizzo sono abilitati e altre informazioni. API Gateway rimuove le intestazioni di autorizzazione, i valori delle chiavi API e parametri di richiesta sensibili simili dai dati registrati.

Quando si distribuisce un'API, API Gateway crea un gruppo di log e i relativi flussi. Al gruppo di log viene assegnato un nome nel formato API-Gateway-Execution-Logs_{rest-api-id}/{stage_name}. All'interno di ciascun gruppo, i log sono suddivisi ulteriormente in flussi, che vengono ordinati in base al valore Last Event Time (Ora ultimo evento) quando vengono riportati i dati registrati.

Nella registrazione degli accessi, in qualità di sviluppatore dell'API puoi registrare chi ha avuto accesso alla tua API e in che modo l'intermediario ha avuto accesso all'API. Puoi creare un gruppo di log personalizzato o sceglierne uno esistente che potrebbe essere gestito da API Gateway. Per specificare i dettagli di accesso, si selezionano $contextle variabili, un formato di registro e una destinazione del gruppo di log.

Il formato del log di accesso deve includere almeno $context.requestId o $context.extendedRequestId. Come procedura consigliata, includi $context.requestId e $context.extendedRequestId nel formato di registro.

$context.requestId

Questo registra il valore nell'x-amzn-RequestIdintestazione. I client possono sostituire il valore nell'intestazione x-amzn-RequestId con un valore nel formato di un identificatore univoco universale (UUID). API Gateway restituisce questo ID richiesta nell'intestazione della risposta di x-amzn-RequestId. API Gateway sostituisce gli ID di richiesta sovrascritti che non sono in formato UUID nei log di accesso. UUID_REPLACED_INVALID_REQUEST_ID

$context.extendedRequestId

L'ExtendedRequestID è un ID univoco generato da API Gateway. API Gateway restituisce questo ID richiesta nell'intestazione della risposta di x-amz-apigw-id. Un caller API non può fornire o ignorare questo ID di richiesta. Potrebbe essere necessario fornire questo valore a AWS Support per risolvere i problemi dell'API. Per ulteriori informazioni, consulta $contextVariabili per modelli di dati, autorizzatori, modelli di mappatura e registrazione degli accessi CloudWatch .

Nota

Sono $context supportate solo le variabili.

Seleziona un formato di log adottato anche dal back-end analitico, ad esempio Common Log Format (CLF), JSON, XML o CSV. Quindi puoi alimentarlo direttamente con i log di accesso per l'elaborazione e il rendering dei parametri. Per definire il formato di registro, impostate l'ARN del gruppo di log sulla proprietà accessLogSettings/destinationARN sullo stage. È possibile ottenere un ARN del gruppo di log nella CloudWatch console. Per definire il formato del registro degli accessi, impostate un formato scelto nella proprietà accessLogSetting/format sullo stage.

Esempi di alcuni formati di log delle operazioni di accesso utilizzati con maggiore frequenza sono mostrati nella console API Gateway ed elencati qui di seguito.

  • CLF (Common Log Format):

    $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 (valori separati da virgola):

    $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

Autorizzazioni per la registrazione CloudWatch

Per abilitare CloudWatch i log, devi concedere ad API Gateway l'autorizzazione a leggere e scrivere i log del tuo CloudWatch account. La policy AmazonAPIGatewayPushToCloudWatchLogs gestita (con un ARN di arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs) dispone di tutte le autorizzazioni necessarie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents", "logs:FilterLogEvents" ], "Resource": "*" } ] }
Nota

Chiama AWS Security Token Service API Gateway per assumere il ruolo IAM, quindi assicurati che AWS STS sia abilitato per la regione. Per ulteriori informazioni, consulta Managing AWS STS in an AWS Region.

Per concedere queste autorizzazioni al tuo account, crea un ruolo IAM con apigateway.amazonaws.com come entità affidabile, collega la policy precedente al ruolo IAM e imposta l'ARN del ruolo IAM sulla proprietà Arn del cloudWatchRole tuo account. È necessario impostare la proprietà cloudWatchRoleArn separatamente per ogni AWS regione in cui si desidera abilitare i log. CloudWatch

Se ricevi un errore durante l'impostazione dell'ARN del ruolo IAM, controlla le impostazioni AWS Security Token Service dell'account per assicurarti che AWS STS sia abilitato nella regione che stai utilizzando. Per ulteriori informazioni sull'abilitazione AWS STS, consulta Managing AWS STS in an AWS Region nella IAM User Guide.

Configurare la registrazione delle CloudWatch API utilizzando la console API Gateway

Per configurare la registrazione CloudWatch dell'API, è necessario aver distribuito l'API in una fase. È inoltre necessario aver configurato un ARN del ruolo CloudWatch Logs appropriato per il proprio account.

  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Nel pannello di navigazione principale, scegli Impostazioni, quindi in Registrazione seleziona Modifica.

  3. Per l'ARN del ruolo di CloudWatch registro, inserisci l'ARN di un ruolo IAM con le autorizzazioni appropriate. È necessario eseguire questa operazione una volta per ogni utente Account AWS che crea API utilizzando API Gateway.

  4. Nel riquadro di navigazione principale scegli API, quindi esegui una delle seguenti operazioni:

    1. Seleziona un'API esistente e quindi scegli una fase.

    2. Crea un'API e implementala in una fase.

  5. Nel riquadro di navigazione principale scegli Fasi.

  6. Nella sezione Log e tracciamento scegli Modifica.

  7. Per abilitare il logging dell'esecuzione:

    1. Seleziona un livello di registrazione dal menu a discesa CloudWatch Registri. I livelli di registrazione sono i seguenti:

      • Disattivata: la registrazione non è attivata per questa fase.

      • Solo errori: la registrazione è abilitata solo per gli errori.

      • Errori e registri delle informazioni: la registrazione è abilitata per tutti gli eventi.

      • Registri completi delle richieste e delle risposte: la registrazione dettagliata è abilitata per tutti gli eventi. Ciò può essere utile per risolvere i problemi relativi alle API, ma può comportare la registrazione di dati sensibili.

        Nota

        Si consiglia di non utilizzare Registri completi delle richieste e delle risposte per le API di produzione.

    2. Se lo desideri, seleziona Metriche dettagliate per attivare le metriche dettagliate. CloudWatch

    Per ulteriori informazioni sulle CloudWatch metriche, consulta. Monitora REST API l'esecuzione con i CloudWatch parametri di Amazon

  8. Per abilitare il logging degli accessi:

    1. Attiva Registrazione accesso personalizzato.

    2. Immetti l'ARN di un gruppo di log in ARN di destinazione del log degli accessi. Il formato dell'ARN è arn:aws:logs:{region}:{account-id}:log-group:log-group-name.

    3. In Formato dei log immetti un formato di log. Puoi scegliere CLF, JSON, XML o CSV. Per ulteriori informazioni sui formati di log di esempio, consulta CloudWatch formati di registro per API Gateway.

  9. Seleziona Salvataggio delle modifiche.

Nota

Puoi abilitare la registrazione dell'esecuzione e quella degli accessi in modo reciprocamente indipendente.

API Gateway ora è pronto a registrare i log delle richieste all'API. Non è necessario ridistribuire l'API quando si aggiornano le impostazioni delle fasi, i log o le variabili delle fasi.

Configurare la registrazione CloudWatch delle API utilizzando AWS CloudFormation

Utilizza il seguente AWS CloudFormation modello di esempio per creare un gruppo di log Amazon CloudWatch Logs e configurare l'esecuzione e la registrazione degli accessi per una fase. Per abilitare CloudWatch i log, devi concedere ad API Gateway l'autorizzazione a leggere e scrivere i log del tuo CloudWatch account. Per ulteriori informazioni, consulta Associate account with IAM role nella Guida per l'utente di AWS CloudFormation .

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