View a markdown version of this page

Akses logging untuk REST API - Amazon API Gateway

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

Akses logging untuk REST API

Dalam log akses, Anda mencatat siapa yang telah mengakses API Anda dan bagaimana pemanggil mengakses API. Anda dapat membuat grup log Anda sendiri atau memilih grup log yang ada. Untuk menentukan detail akses, Anda memilih $context variabel, format log, dan tujuan grup log.

Akses format log

Format log akses harus menyertakan setidaknya $context.requestId atau$context.extendedRequestId. Sebagai praktik terbaik, sertakan keduanya dalam format log Anda.

$context.requestId

Ini mencatat nilai di x-amzn-RequestId header. Klien dapat mengganti nilai di x-amzn-RequestId header dengan nilai dalam format pengidentifikasi unik universal (UUID). API Gateway mengembalikan ID permintaan ini di header x-amzn-RequestId respons. API Gateway menggantikan ID permintaan yang diganti yang tidak dalam format UUID dengan UUID_REPLACED_INVALID_REQUEST_ID di log akses Anda.

$context.extendedRequestId

ExtendedRequestID adalah ID unik yang dihasilkan API Gateway. API Gateway mengembalikan ID permintaan ini di header x-amz-apigw-id respons. Pemanggil API tidak dapat memberikan atau mengganti ID permintaan ini. Anda mungkin perlu memberikan nilai ini ke AWS Dukungan untuk membantu memecahkan masalah API Anda. Untuk informasi selengkapnya, lihat Variabel untuk pencatatan akses untuk API Gateway.

Pilih format log yang juga diadopsi oleh backend analitik Anda, seperti Com mon Log Format (CLF), JSON, XML, atau CSV. Anda kemudian dapat memberi umpan log akses ke sana secara langsung agar metrik Anda dihitung dan dirender. Untuk menentukan format log, atur grup log ARN pada accessLogSettings/destinationArn properti di pang gung. Anda dapat memperoleh grup log ARN di CloudWatch konsol. Untuk menentukan format log akses, atur format yang dipilih pada accessLogSetting/format properti di pang gung.

Contoh beberapa format log akses yang umum digunakan ditampilkan di konsol API Gateway dan tercantum sebagai berikut.

  • CLF(Format Log Umum):

    $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(nilai yang dipisahkan koma):

    $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

Mengatur log akses menggunakan konsol API Gateway

Sebelum Anda mengatur log akses, gunakan API ke tahap dan konfigur asikan ARN peran CloudWatch Logs yang sesuai untuk akun Anda.

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

  2. Di panel navigasi utama, pilih API, lalu lakukan salah satu hal berikut:

    1. Pilih API yang ada, lalu pilih tahap.

    2. Buat API, lalu terapkan ke panggung.

  3. Di panel navigasi utama, pilih Tahapan.

  4. Di bagian Log dan pelacakan, pilih Edit.

  5. Aktifkan pencatatan akses kustom.

  6. Untuk ARN tujuan log Akses, masukkan ARN grup log. Format ARN adalaharn:aws:logs:{region}:{account-id}:log-group:log-group-name.

  7. Untuk Format Log, masukkan format log. Anda dapat memilih CLF, JSON, XML, atau CSV. Untuk mempelajari lebih lanjut tentang contoh format log, lihatAkses format log.

  8. Pilih Simpan perubahan.

API Gateway sekarang siap untuk mencatat permintaan ke API Anda. Anda tidak perlu menerapkan ulang API saat memperbarui pengaturan tahap, log, atau variabel tahap.

Menyiapkan log akses menggunakan CloudFormation

Gunakan contoh CloudFormation template berikut untuk membuat grup CloudWatch log Amazon Logs dan mengonfigurasi logging akses untuk tahap. Untuk mengaktifkan CloudWatch Log, Anda harus memberikan izin API Gateway untuk membaca dan menulis log CloudWatch untuk akun Anda. Untuk mempelajari selengkapnya, lihat Mengaitkan akun dengan peran IAM di Panduan AWS CloudFormation Pengguna.

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