View a markdown version of this page

Registrazione degli accessi per le API REST - Gateway Amazon API

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à.

Registrazione degli accessi per le API REST

Nella registrazione degli accessi, registri chi ha avuto accesso alla tua API e in che modo il chiamante ha effettuato l'accesso all'API. Puoi creare il tuo gruppo di log o scegliere un gruppo di log esistente. Per specificare i dettagli di accesso, seleziona le variabili $context, un formato di log e un gruppo di log come destinazione.

Formati di log di accesso

Il formato del log di accesso deve includere almeno $context.requestId o $context.extendedRequestId. È consigliabile includerli entrambi nel formato di registro.

$context.requestId

In questo modo il valore dell'intestazione x-amzn-RequestId viene registrato nel log. 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. Gateway API sostituisce gli ID di richiesta sovrascritti che non sono nel formato di un UUID con UUID_REPLACED_INVALID_REQUEST_ID nei log di accesso.

$context.extendedRequestId

Il valore di extendedRequestID è un ID univoco generato da Gateway API. 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 all' AWS assistenza per risolvere i problemi relativi all'API. Per ulteriori informazioni, consulta Variabili per la registrazione dei log degli accessi per Gateway API.

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 del registro, imposta l'ARN del gruppo di log sulla accessLogSettings/destinationArn proprietà sullo stage. https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html È possibile ottenere un ARN del gruppo di log nella CloudWatch console. Per definire il formato del registro degli accessi, impostate un formato scelto sulla accessLogSetting/format proprietà 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

Configura la registrazione degli accessi utilizzando la console API Gateway

Prima di configurare la registrazione degli accessi, implementa l'API in una fase e configura un ARN del ruolo CloudWatch Logs appropriato per il tuo account.

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

  2. 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.

  3. Nel riquadro di navigazione principale scegli Fasi.

  4. Nella sezione Log e tracciamento scegli Modifica.

  5. Attiva Registrazione accesso personalizzato.

  6. 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.

  7. 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 Formati di log di accesso.

  8. Scegli Save changes (Salva modifiche).

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.

Configura la registrazione degli accessi utilizzando CloudFormation

Utilizza il seguente CloudFormation modello di esempio per creare un gruppo di CloudWatch log di Amazon Logs e configurare la registrazione degli accessi per una fase. Per abilitare CloudWatch i log, devi concedere ad API Gateway l'autorizzazione per leggere e scrivere CloudWatch i log del tuo 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 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