Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk membantu men-debug masalah yang terkait dengan eksekusi permintaan atau akses klien ke API Anda, Anda dapat mengaktifkan Amazon CloudWatch Logs untuk mencatat panggilan API. Untuk informasi lebih lanjut tentang CloudWatch, lihatPantau eksekusi REST API dengan CloudWatch metrik Amazon.
CloudWatch format log untuk API Gateway
Ada dua jenis log masuk API CloudWatch: logging eksekusi dan logging akses. Dalam pencatatan eksekusi, API Gateway mengelola CloudWatch Log. Prosesnya mencakup pembuatan grup log dan aliran log, dan pelaporan ke aliran log permintaan dan tanggapan pemanggil apa pun.
Data yang dicatat mencakup kesalahan atau jejak eksekusi (seperti nilai parameter permintaan atau respons atau muatan), data yang digunakan oleh otorisasi Lambda (sebelumnya dikenal sebagai otorisasi khusus), apakah kunci API diperlukan, apakah paket penggunaan diaktifkan, dan informasi lainnya. API Gateway menyunting header otorisasi, nilai kunci API, dan parameter permintaan sensitif serupa dari data yang dicatat.
Untuk meningkatkan postur keamanan Anda, kami sarankan Anda menggunakan pencatatan eksekusi di INFO
tingkat ERROR
atau. Anda mungkin perlu melakukan ini untuk mematuhi berbagai kerangka kerja kepatuhan. Untuk informasi selengkapnya, lihat kontrol Amazon API Gateway di Panduan AWS Security Hub Pengguna.
Saat Anda menerapkan API, API Gateway membuat grup log dan aliran log di bawah grup log. Grup log diberi nama mengikuti API-Gateway-Execution-Logs_{rest-api-id}/{stage_name}
format. Dalam setiap grup log, log dibagi lagi menjadi aliran log, yang diurutkan berdasarkan Waktu Peristiwa Terakhir saat data yang dicatat dilaporkan.
Dalam pencatatan akses, Anda, sebagai pengembang API, ingin mencatat siapa yang telah mengakses API Anda dan bagaimana pemanggil mengakses API. Anda dapat membuat grup log Anda sendiri atau memilih grup log yang sudah ada yang dapat dikelola oleh API Gateway. Untuk menentukan detail akses, Anda memilih $contextvariabel, format log, dan tujuan grup log.
Format log akses harus menyertakan setidaknya $context.requestId
atau$context.extendedRequestId
. Sebagai praktik terbaik, sertakan $context.requestId
dan $context.extendedRequestId
dalam format log Anda.
$context.requestId
-
Ini mencatat nilai di
x-amzn-RequestId
header. Klien dapat mengganti nilai dix-amzn-RequestId
header dengan nilai dalam format pengenal unik universal (UUID). API Gateway mengembalikan ID permintaan ini di headerx-amzn-RequestId
respons. API Gateway menggantikan permintaan IDs yang diganti yang tidak dalam format UUID dengan log akses Anda.UUID
_REPLACED_INVALID_REQUEST_ID $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 Support untuk membantu memecahkan masalah API Anda. Untuk informasi selengkapnya, lihat $contextVariabel untuk model data, otorisasi, templat pemetaan, dan CloudWatch pencatatan akses.
catatan
Hanya $context
variabel yang didukung.
Pilih format log yang juga diadopsi oleh backend analitik Anda, seperti Common Log Format
Contoh beberapa format log akses yang umum digunakan ditampilkan di konsol API Gateway dan dicantumkan 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
Izin untuk CloudWatch pencatatan
Untuk mengaktifkan CloudWatch Log, Anda harus memberikan izin API Gateway untuk membaca dan menulis log CloudWatch untuk akun Anda. Amazon APIGateway PushToCloudWatchLogs memiliki semua izin yang diperlukan.
catatan
API Gateway memanggil AWS Security Token Service untuk mengambil peran IAM, jadi pastikan itu AWS STS diaktifkan untuk Wilayah. Untuk informasi selengkapnya, lihat Mengelola AWS STS di suatu AWS Wilayah.
Untuk memberikan izin ini ke akun Anda, buat peran IAM apigateway.amazonaws.com
sebagai entitas tepercaya, lampirkan kebijakan sebelumnya ke peran IAM, dan tetapkan peran IAM ARN di properti Arn di Akun Anda. cloudWatchRole Anda harus mengatur properti cloudWatchRoleArn secara terpisah untuk setiap AWS Wilayah di mana Anda ingin mengaktifkan CloudWatch Log.
Jika Anda menerima kesalahan saat menyetel ARN peran IAM, periksa pengaturan akun AWS Security Token Service Anda untuk memastikan AWS STS bahwa diaktifkan di Wilayah yang Anda gunakan. Untuk informasi selengkapnya tentang mengaktifkan AWS STS, lihat Mengelola AWS STS di AWS Wilayah di Panduan Pengguna IAM.
Siapkan pencatatan CloudWatch API menggunakan konsol API Gateway
Untuk menyiapkan pencatatan CloudWatch API, Anda harus menerapkan API ke sebuah panggung. Anda juga harus mengonfigurasi ARN peran CloudWatch Log yang sesuai untuk akun Anda.
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway
. -
Pada panel navigasi utama, pilih Pengaturan, lalu di bawah Logging, pilih Edit.
-
Untuk ARN peran CloudWatch log, masukkan ARN dari peran IAM dengan izin yang sesuai. Anda perlu melakukan ini sekali untuk setiap Akun AWS yang membuat APIs menggunakan API Gateway.
-
Di panel navigasi utama, pilih APIs, lalu lakukan salah satu hal berikut:
-
Pilih API yang ada, lalu pilih panggung.
-
Buat API, lalu terapkan ke panggung.
-
Di panel navigasi utama, pilih Tahapan.
-
Di bagian Log dan penelusuran, pilih Edit.
-
Untuk mengaktifkan pencatatan eksekusi:
-
Pilih level logging dari menu dropdown CloudWatch Log. Level logging adalah sebagai berikut:
-
Mati - Logging tidak diaktifkan untuk tahap ini.
-
Hanya kesalahan - Logging diaktifkan hanya untuk kesalahan.
-
Kesalahan dan info log - Logging diaktifkan untuk semua acara.
-
-
(Opsional) Pilih Penelusuran data untuk mengaktifkan pencatatan jejak data untuk tahap Anda. Ini dapat berguna untuk memecahkan masalah APIs, tetapi dapat mengakibatkan pencatatan data sensitif.
catatan
Kami menyarankan Anda untuk tidak menggunakan penelusuran data untuk produksi APIs.
-
(Opsional) Pilih Metrik terperinci untuk mengaktifkan CloudWatch metrik terperinci.
Untuk informasi selengkapnya tentang CloudWatch metrik, lihatPantau eksekusi REST API dengan CloudWatch metrik Amazon.
-
-
Untuk mengaktifkan pencatatan akses:
-
Aktifkan Pencatatan akses khusus.
-
Untuk akses log tujuan ARN, masukkan ARN dari grup log. Format ARN adalah.
arn:aws:logs:
{region}
:{account-id}
:log-group:log-group-name
-
Untuk Format Log, masukkan format log. Anda dapat memilih CLF, JSON, XHTML, atau CSV. Untuk mempelajari lebih lanjut tentang contoh format log, lihatCloudWatch format log untuk API Gateway.
-
-
Pilih Simpan perubahan.
catatan
Anda dapat mengaktifkan pencatatan eksekusi dan mengakses logging secara independen satu sama lain.
API Gateway sekarang siap untuk mencatat permintaan ke API Anda. Anda tidak perlu menerapkan ulang API saat memperbarui pengaturan panggung, log, atau variabel tahap.
Siapkan pencatatan CloudWatch API menggunakan AWS CloudFormation
Gunakan contoh AWS CloudFormation template berikut untuk membuat grup CloudWatch log Amazon Logs dan mengonfigurasi eksekusi dan mengakses logging untuk sebuah panggung. 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
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