Konfigurasikan logging untuk API HTTP di API Gateway - Amazon API Gateway

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan logging untuk API HTTP di API Gateway

Anda dapat mengaktifkan logging untuk menulis log ke CloudWatch Log. Anda dapat menggunakan variabel logging untuk menyesuaikan konten log Anda.

Untuk mengaktifkan logging untuk API HTTP, Anda harus melakukan hal berikut.

  1. Pastikan bahwa pengguna Anda memiliki izin yang diperlukan untuk mengaktifkan logging.

  2. Buat grup CloudWatch log Log.

  3. Berikan ARN dari grup CloudWatch log Log untuk tahap API Anda.

Izin untuk mengaktifkan logging

Untuk mengaktifkan logging untuk API, pengguna Anda harus memiliki izin berikut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:GetLogEvents", "logs:FilterLogEvents" ], "Resource": "arn:aws:logs:us-east-2:123456789012:log-group:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:PutResourcePolicy", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:CreateLogGroup", "logs:DescribeResourcePolicies", "logs:GetLogDelivery", "logs:ListLogDeliveries" ], "Resource": "*" } ] }

Buat grup log dan aktifkan logging untuk HTTP API

Anda dapat membuat grup log dan mengaktifkan log akses menggunakan AWS Management Console atau AWS CLI.

AWS Management Console
  1. Membuat sebuah grup log.

    Untuk mempelajari cara membuat grup log menggunakan konsol, lihat Membuat Grup Log di Panduan Pengguna CloudWatch Log Amazon.

  2. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  3. Pilih API HTTP.

  4. Di bawah tab Monitor di panel navigasi utama, pilih Logging.

  5. Pilih tahap untuk mengaktifkan logging dan pilih Pilih.

  6. Pilih Edit untuk mengaktifkan pencatatan akses.

  7. Aktifkan Pencatatan akses, masukkan CloudWatch Log, dan pilih format log.

  8. Pilih Simpan.

AWS CLI

AWS CLI Perintah berikut membuat grup log.

aws logs create-log-group --log-group-name my-log-group

Anda memerlukan Nama Sumber Daya Amazon (ARN) untuk grup log Anda untuk mengaktifkan logging. Format ARN adalah arn:aws:logs: region: account-id:log-group:. log-group-name

AWS CLI Perintah berikut mengaktifkan logging untuk $default tahap HTTP API.

aws apigatewayv2 update-stage --api-id abcdef \ --stage-name '$default' \ --access-log-settings '{"DestinationArn": "arn:aws:logs:region:account-id:log-group:log-group-name", "Format": "$context.identity.sourceIp - - [$context.requestTime] \"$context.httpMethod $context.routeKey $context.protocol\" $context.status $context.responseLength $context.requestId"}'

Contoh format log

Contoh beberapa format log akses umum tersedia di konsol API Gateway dan dicantumkan sebagai berikut.

  • CLF(Format Log Umum):

    $context.identity.sourceIp - - [$context.requestTime] "$context.httpMethod $context.routeKey $context.protocol" $context.status $context.responseLength $context.requestId $context.extendedRequestId
  • JSON:

    { "requestId":"$context.requestId", "ip": "$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod","routeKey":"$context.routeKey", "status":"$context.status","protocol":"$context.protocol", "responseLength":"$context.responseLength", "extendedRequestId": "$context.extendedRequestId" }
  • XML:

    <request id="$context.requestId"> <ip>$context.identity.sourceIp</ip> <requestTime>$context.requestTime</requestTime> <httpMethod>$context.httpMethod</httpMethod> <routeKey>$context.routeKey</routeKey> <status>$context.status</status> <protocol>$context.protocol</protocol> <responseLength>$context.responseLength</responseLength> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request>
  • CSV(nilai yang dipisahkan koma):

    $context.identity.sourceIp,$context.requestTime,$context.httpMethod,$context.routeKey,$context.protocol,$context.status,$context.responseLength,$context.requestId,$context.extendedRequestId