View a markdown version of this page

Logging panggilan API Fungsi Web menggunakan AWS CloudTrail - AWS Lambda

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:

PengidentifikasiNilai
eventSourcelambda.amazonaws.com
eventNameInvokeWebFunctionEndpoint. Ini adalah nilai untuk memfilter.
Tindakan IAMlambda:InvokeWebFunctionEndpoint
readOnlyfalse, karena pemanggilan menjalankan kode fungsi Anda.
resources.typeAWS::Lambda::WebFunction
resources.ARNFungsi 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)
  1. Buat atau pilih jejak yang akan merekam peristiwa data. Untuk petunjuknya, lihat Mencatat peristiwa data di Panduan AWS CloudTrail Pengguna.

  2. Simpan pemilih acara lanjutan berikut sebagaiweb-function-data-events.json. Ini merekam pemanggilan untuk satu Fungsi Web. Untuk merekam pemanggilan untuk setiap Fungsi Web di akun, hapus pemilih resources.ARN bidang.

    [ { "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" ] } ] } ]
  3. Terapkan pemilih ke jejak:

    aws cloudtrail put-event-selectors \ --trail-name my-trail \ --advanced-event-selectors file://web-function-data-events.json
    penting

    put-event-selectorsmenggantikan penyeleksi acara jejak yang ada. Jika jejak sudah merekam peristiwa lain, sertakan penyeleksi mereka dalam file yang sama.

  4. Panggil titik akhir dengan permintaan pengujian.

  5. Tanyakan tujuan jejak untukeventName = 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 mengembalikan InvokeWebFunctionEndpoint peristiwa 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. userIdentity Unknown

  • IAM-authenticated penelepon dicatat dengan kepala sekolah mereka sendiri. Misalnya, penelepon yang menggunakan kredensyal sementara muncul dengan tipeAssumedRole, 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.

Untuk informasi selengkapnya, lihat sumber daya berikut: