Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Logging panggilan API Fungsi Web menggunakan AWS CloudTrail
Dengan AWS CloudTrail, Anda dapat melacak tindakan yang diambil oleh pengguna, peran, atau Layanan AWS dalam Fungsi AWS Lambda Web. CloudTrail memberikan catatan tindakan ini. CloudTrail menangkap pemanggilan Fungsi Web sebagai peristiwa data. Anda dapat menggunakan informasi ini untuk menentukan siapa yang memanggil Fungsi Web, kapan, dan dari mana, yang membantu analisis keamanan dan audit operasional.
Peristiwa data Fungsi Web di CloudTrail
Peristiwa data memberikan informasi tentang operasi yang dilakukan pada sumber daya. Misalnya, memanggil titik akhir Fungsi Web adalah peristiwa data. Operasi ini juga dikenal sebagai operasi data-plane, dan seringkali bervolume tinggi. Secara default, CloudTrail tidak mencatat peristiwa data, dan riwayat CloudTrail Peristiwa tidak merekamnya.
Biaya tambahan berlaku untuk peristiwa data. Untuk informasi selengkapnya, lihat harga CloudTrail
Anda dapat mencatat peristiwa data untuk jenis AWS::Lambda::WebFunction sumber daya menggunakan CloudTrail konsol AWS CLI, atau operasi CloudTrail API. CloudTrail mencatat setiap pemanggilan dalam Wilayah AWS yang melayani permintaan, dan awsRegion mengidentifikasi Wilayah itu. Tidak seperti log dan metrik, acara pemanggilan tidak terpusat di Wilayah asal. Untuk PerRegion titik akhir MultiRegion atau titik akhir, gunakan jejak Multi-wilayah atau penyimpanan data peristiwa sehingga pemanggilan di setiap Wilayah yang dilayani titik akhir dicatat.
Tabel berikut menunjukkan tipe peristiwa data untuk Web Functions.
| Jenis peristiwa data (konsol) | nilai resources.type | API data masuk CloudTrail |
|---|---|---|
| Fungsi Web Lambda | AWS::Lambda::WebFunction |
InvokeWebFunctionEndpoint |
CloudTrail mencatat pengidentifikasi kunci berikut untuk pemanggilan Fungsi Web:
| Pengidentifikasi | Nilai |
|---|---|
eventSource | lambda.amazonaws.com |
eventName | InvokeWebFunctionEndpoint. Ini adalah nilai untuk memfilter. |
| Tindakan IAM | lambda:InvokeWebFunctionEndpoint |
readOnly | false, karena pemanggilan menjalankan kode fungsi Anda. |
resources.type | AWS::Lambda::WebFunction |
resources.ARN | Fungsi ARN, bukan titik akhir ARN. Oleh karena itu, pemilih jejak bekerja pada tingkat fungsi. |
Pemilih peristiwa lanjutan berikut mencatat pemanggilan untuk satu Fungsi Web saja.
[ { "Name": "web-function-invokes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::WebFunction"] }, { "Field": "resources.ARN", "Equals": ["arn:aws:lambda:us-east-1:111122223333:web-function/hello-world"] } ] } ]
Untuk mengaktifkan peristiwa data pada jejak, gunakan prosedur berikut.
Untuk mengaktifkan dan memverifikasi peristiwa data Fungsi Web (AWS CLI)
-
Buat atau pilih jejak yang akan merekam peristiwa data. Untuk petunjuknya, lihat Mencatat peristiwa data di Panduan AWS CloudTrail Pengguna.
-
Simpan pemilih acara lanjutan berikut sebagai
web-function-data-events.json. Ini merekam pemanggilan untuk satu Fungsi Web. Untuk merekam pemanggilan untuk setiap Fungsi Web di akun, hapus pemilihresources.ARNbidang.[ { "Name": "web-function-invocations", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::WebFunction"] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:lambda:us-east-1:111122223333:web-function/my-web-app" ] } ] } ] -
Terapkan pemilih ke jejak:
aws cloudtrail put-event-selectors \ --trail-namemy-trail\ --advanced-event-selectors file://web-function-data-events.jsonpenting
put-event-selectorsmenggantikan penyeleksi acara jejak yang ada. Jika jejak sudah merekam peristiwa lain, sertakan penyeleksi mereka dalam file yang sama. -
Panggil titik akhir dengan permintaan pengujian.
-
Tanyakan tujuan jejak untuk
eventName = InvokeWebFunctionEndpoint. Verifikasi fungsi ARN, waktu acara, ID permintaan, informasi pemanggil yang tersedia untuk jalur otentikasi, dan bidang kesalahan bersyarat apa pun. Jika pemilih berfungsi, kueri mengembalikanInvokeWebFunctionEndpointperistiwa untuk permintaan pengujian Anda, mirip dengan contoh diContoh: pemanggilan yang berhasil (pemanggil yang tidak diautentikasi).
Sebagai gantinya, untuk merekam peristiwa data di penyimpanan data peristiwa CloudTrail Lake, tambahkan pemilih bidang yang sama ke penyimpanan data peristiwa. Untuk informasi selengkapnya, silakan lihat Panduan Pengguna AWS CloudTrail .
Bidang dalam suatu InvokeWebFunctionEndpoint acara
Tabel berikut menjelaskan bidang dalam suatu InvokeWebFunctionEndpoint peristiwa.
| Bidang | Catatan |
|---|---|
eventVersion |
Versi format peristiwa. |
eventSource |
Selalulambda.amazonaws.com. |
eventName |
SelaluInvokeWebFunctionEndpoint. |
eventCategory |
SelaluData. |
eventType |
Jenis acara, misalnyaAwsApiCall. |
readOnly |
Selalufalse, karena pemanggilan menjalankan kode fungsi Anda. |
managementEvent |
Selalufalse. |
eventTime |
Tanggal dan waktu, di UTC, Lambda merekam acara tersebut. Untuk pemanggilan yang berhasil, Lambda merekam peristiwa saat fungsi Anda memulai responsnya, sehingga eventTime bisa lebih lambat dari saat permintaan tiba. |
sourceIPAddress |
Alamat IP di mana permintaan itu dibuat. |
userAgent |
Agen yang digunakan penelepon untuk membuat permintaan. Hadir saat penelepon mengirim User-Agent header. |
requestParameters |
BerisiendpointArn, ARN dari titik akhir yang dipanggil. Muatan permintaan tidak dicatat. |
responseElements |
Selalunull. |
resources |
Berisi satu entri dengan accountIdtype,, dan ARN fungsi. |
additionalEventData |
BerisifunctionRevisionArn, ARN dari revisi yang melayani permintaan. Bidang ini hadir di setiap acara, termasuk penolakan. |
tlsDetails |
Versi TLS, cipher suite, dan header host permintaan. |
userIdentity |
Identitas penelepon. Untuk detailnya, lihat daftar berikut. |
sharedEventID |
Hadir saat CloudTrail memberikan acara yang sama ke lebih dari satu Akun AWS. |
errorCode, errorMessage |
Hadir hanya pada peristiwa kesalahan. |
requestID, eventID,
recipientAccountId, awsRegion |
CloudTrail Bidang standar yang mengidentifikasi permintaan, acara, penerima Akun AWS, dan Wilayah AWS. |
Peristiwa Web Function menggunakan bentuk ARN berikut:
-
Fungsi (
resources[].ARN) —arn:aws:lambda:us-east-1:123456789012:web-function/my-fn -
Titik akhir (
requestParameters.endpointArn) —arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint -
Revisi (
additionalEventData.functionRevisionArn) —arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c
userIdentityBidang tergantung pada bagaimana pemanggil diautentikasi:
-
Pemanggilan yang tidak diautentikasi direkam dengan tipe.
userIdentityUnknown -
IAM-authenticated penelepon dicatat dengan kepala sekolah mereka sendiri. Misalnya, penelepon yang menggunakan kredensyal sementara muncul dengan tipe
AssumedRole, anarn, dan a.sessionContext -
accessKeyIdBidang tidak dihuni.
Peristiwa kesalahan
CloudTrail juga mencatat upaya pemanggilan yang gagal setelah pemanggil diautentikasi. Tabel berikut menjelaskan peristiwa kesalahan ini.
| Skenario | ERRORCODE | errorMessage |
|---|---|---|
| Penelepon tidak diotorisasi | AccessDenied |
Pengguna tidak berwenang untuk melakukan: lambda:InvokeWebFunctionEndpoint |
| Tingkat permintaan, konkurensi, atau batas vCPU tercapai (titik akhir atau akun) | ThrottlingException |
Tarif terlampaui |
| Kesalahan layanan | ServiceException |
Kesalahan Layanan |
| Kesalahan aplikasi atau permintaan klien tidak valid | Tidak berlaku | Diperlakukan sebagai panggilan API yang berhasil. Doa mencapai dan menjalankan fungsi. |
Doa yang berhasil tidak errorCode memiliki atau. errorMessage Penolakan otorisasi dicatat sebagai. AccessDenied CloudTrail tidak mencatat permintaan yang gagal otentikasi, seperti permintaan dengan tanda tangan yang hilang, cacat, tidak valid, atau kedaluwarsa, dan tidak mencatat permintaan yang ditolak Lambda sebelum otentikasi, seperti permintaan ke titik akhir yang 0. rateLimit Kegagalan infrastruktur otentikasi internal juga tidak dicatat. Untuk mendeteksi lonjakan permintaan yang ditolak, alarm menyala HTTPResponseStatusClass4XX di AWS/Lambda/Web namespace.
Contoh: pemanggilan yang berhasil (pemanggil yang tidak diautentikasi)
Contoh berikut menunjukkan pemanggilan yang berhasil oleh pemanggil yang tidak diautentikasi.
{ "Records": [ { "eventVersion": "1.11", "userIdentity": { "type": "Unknown" }, "eventTime": "2026-09-22T18:41:07Z", "eventSource": "lambda.amazonaws.com", "eventName": "InvokeWebFunctionEndpoint", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.42", "userAgent": "curl/8.4.0", "requestParameters": { "endpointArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint" }, "responseElements": null, "additionalEventData": { "functionRevisionArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c" }, "requestID": "b1f8a4c2-7e3d-4a19-9f6b-2c5d8e0a1234", "eventID": "d4c3b2a1-5f6e-7a8b-9c0d-1e2f3a4b5c6d", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::Lambda::WebFunction", "ARN": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws" } } ] }
Untuk IAM-authenticated pemanggil, userIdentity bidang tersebut malah membawa prinsipal pemanggil, misalnya ketik AssumedRole dengan an arn dan asessionContext, dan bidang yang tersisa tidak berubah.
Contoh: doa ditolak
Peristiwa kesalahan membawa errorCode danerrorMessage. Contoh berikut menunjukkan pemanggilan yang ditolak.
{ "Records": [ { "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "ARO01EXAMPLEID:session-name", "arn": "arn:aws:sts::123456789012:assumed-role/app-invoke-role/session-name", "accountId": "123456789012", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "ARO01EXAMPLEID", "arn": "arn:aws:iam::123456789012:role/app-invoke-role", "accountId": "123456789012", "userName": "app-invoke-role" }, "attributes": { "creationDate": "2026-09-22T18:39:55Z", "mfaAuthenticated": "false" } } }, "eventTime": "2026-09-22T18:42:13Z", "eventSource": "lambda.amazonaws.com", "eventName": "InvokeWebFunctionEndpoint", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.42", "userAgent": "aws-sdk-python/1.34.0", "errorCode": "AccessDenied", "errorMessage": "User is not authorized to perform: lambda:InvokeWebFunctionEndpoint", "requestParameters": { "endpointArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint" }, "responseElements": null, "additionalEventData": { "functionRevisionArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c" }, "requestID": "c2e9b5d3-8f4e-4b2a-a07c-3d6e9f1b2345", "eventID": "e5d4c3b2-6a7f-8b9c-0d1e-2f3a4b5c6d7e", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::Lambda::WebFunction", "ARN": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws" } } ] }
Acara manajemen di CloudTrail
CloudTrail merekam peristiwa manajemen Fungsi Web secara default. Anda dapat melihat 90 hari terakhir acara manajemen dalam riwayat CloudTrail Acara tanpa membuat jejak. Untuk membuatnya lebih lama, buat penyimpanan data acara trail atau CloudTrail Lake. Untuk informasi selengkapnya, lihat Pencatatan peristiwa manajemen di Panduan AWS CloudTrail Pengguna.
CloudTrail mencatat operasi Fungsi Web berikut sebagai peristiwa manajemen. eventNameBidang setiap acara sama dengan nama operasi.
| Sumber daya atau tugas | Operasi |
|---|---|
| Fungsi Web | CreateWebFunction, GetWebFunction,
ListWebFunctions, DeleteWebFunction |
| Revisi | CreateWebFunctionRevision, GetWebFunctionRevision,
ListWebFunctionRevisions, DeleteWebFunctionRevision |
| Titik akhir | CreateWebFunctionEndpoint, GetWebFunctionEndpoint,
ListWebFunctionEndpoints, UpdateWebFunctionEndpoint,
DeleteWebFunctionEndpoint |
| Pengaturan akun | GetWebAccountSettings |
| Kebijakan sumber daya | PutResourcePolicy, GetResourcePolicy,
DeleteResourcePolicy |
| Tanda | TagResource, UntagResource,
ListTags |
Pemanggilan Fungsi Web adalah operasi data-plane. CloudTrail mencatatnya hanya sebagai peristiwa data, seperti yang dijelaskan dalamPeristiwa data Fungsi Web di CloudTrail.
Sumber daya terkait
Untuk informasi selengkapnya, lihat sumber daya berikut: