Invoke - AWS Lambda

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

Invoke

Memanggil fungsi Lambda. Anda dapat memanggil fungsi secara sinkron (dan menunggu respons), atau secara asinkron. Secara default, Lambda memanggil fungsi Anda secara sinkron (yaitu is). InvocationType RequestResponse Untuk memanggil fungsi secara asinkron, atur InvocationType ke Event. Lambda meneruskan ClientContext objek ke fungsi Anda hanya untuk pemanggilan sinkron.

Untuk invokasi sinkron, detail tentang respons fungsi, termasuk kesalahan, disertakan dalam isi dan header respons. Untuk kedua tipe invokasi, Anda dapat menemukan informasi selengkapnya dalam log eksekusi dan jejak.

Ketika terjadi kesalahan, fungsi Anda dapat dipanggil beberapa kali. Perilaku coba lagi bervariasi menurut tipe kesalahan, klien, sumber peristiwa, dan tipe invokasi. Misalnya, jika Anda memanggil fungsi secara asinkron dan mengembalikan kesalahan, Lambda menjalankan fungsi hingga dua kali lagi. Untuk informasi selengkapnya, lihat Penanganan kesalahan dan percobaan ulang otomatis di Lambda.

Untuk invokasi asinkron, Lambda menambahkan peristiwa ke antrean sebelum mengirimnya ke fungsi Anda. Jika fungsi Anda tidak memiliki kapasitas yang cukup untuk mengikuti antrean, peristiwa mungkin hilang. Kadang-kadang, fungsi Anda dapat menerima peristiwa yang sama beberapa kali, bahkan jika tidak ada kesalahan yang terjadi. Untuk mempertahankan peristiwa yang tidak diproses, konfigurasi fungsi Anda dengan antrean surat mati.

Kode status dalam respons API tidak mencerminkan kesalahan fungsi. Kode kesalahan dicadangkan untuk kesalahan yang mencegah fungsi Anda mengeksekusi, seperti kesalahan izin, kesalahan kuota, atau masalah dengan kode dan konfigurasi fungsi Anda. Misalnya, Lambda kembali TooManyRequestsException jika menjalankan fungsi akan menyebabkan Anda melebihi batas konkurensi di level akun (ConcurrentInvocationLimitExceeded) atau level fungsi (). ReservedFunctionConcurrentInvocationLimitExceeded

Untuk fungsi dengan batas waktu yang lama, klien Anda mungkin terputus selama pemanggilan sinkron saat menunggu respons. Konfigurasikan klien HTTP, SDK, firewall, proksi, atau sistem operasi Anda untuk memungkinkan koneksi panjang dengan waktu habis atau pengaturan tetap aktif.

Operasi ini memerlukan izin untuk InvokeFunction tindakan lambda:. Untuk detail tentang cara mengatur izin untuk pemanggilan lintas akun, lihat Memberikan akses fungsi ke akun lain.

Minta Sintaks

POST /2015-03-31/functions/FunctionName/invocations?Qualifier=Qualifier HTTP/1.1 X-Amz-Invocation-Type: InvocationType X-Amz-Log-Type: LogType X-Amz-Client-Context: ClientContext Payload

Parameter Permintaan URI

Permintaan menggunakan parameter URI berikut.

ClientContext

Hingga 3.583 byte data yang dikodekan base64 tentang klien pemanggilan untuk diteruskan ke fungsi dalam objek konteks. Lambda meneruskan ClientContext objek ke fungsi Anda hanya untuk pemanggilan sinkron.

FunctionName

Nama fungsi Lambda, versi, atau alias.

Format nama
  • Nama fungsimy-function (hanya nama), my-function:v1 (dengan alias).

  • Fungsi ARN —. arn:aws:lambda:us-west-2:123456789012:function:my-function

  • ARN Sebagian —. 123456789012:function:my-function

Anda dapat menambahkan nomor versi atau alias ke salah satu format. Batas panjang hanya berlaku untuk ARN penuh. Jika Anda hanya menentukan nama fungsi, panjang nama dibatasi hingga 64 karakter.

Panjang Batasan: Panjang minimum 1. Panjang maksimum 170.

Pola: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

Diperlukan: Ya

InvocationType

Pilih salah satu dari opsi berikut:

  • RequestResponse(default) - Memanggil fungsi secara sinkron. Jaga agar koneksi tetap terbuka sampai fungsi mengembalikan respons atau waktu habis. Respons API mencakup respons fungsi dan data tambahan.

  • Event— Memanggil fungsi secara asinkron. Kirim peristiwa yang gagal beberapa kali ke antrian huruf mati fungsi (jika ada yang dikonfigurasi). Respons API hanya mencakup kode status.

  • DryRun— Validasi nilai parameter dan verifikasi bahwa pengguna atau peran memiliki izin untuk memanggil fungsi.

Nilai yang Valid: Event | RequestResponse | DryRun

LogType

Atur ke Tail untuk memasukkan log eksekusi dalam respons. Hanya berlaku untuk fungsi yang dipanggil secara sinkron.

Nilai yang Valid: None | Tail

Qualifier

Tentukan versi atau alias untuk memanggil versi fungsi yang dipublikasikan.

Panjang Batasan: Panjang minimum 1. Panjang maksimum 128.

Pola: (|[a-zA-Z0-9$_-]+)

Isi Permintaan

Permintaan menerima data biner berikut.

Payload

JSON yang ingin Anda berikan ke fungsi Lambda Anda sebagai input.

Anda dapat memasukkan JSON secara langsung. Misalnya, --payload '{ "key": "value" }'. Anda juga dapat menentukan jalur file. Misalnya, --payload file://payload.json.

Sintaksis Respons

HTTP/1.1 StatusCode X-Amz-Function-Error: FunctionError X-Amz-Log-Result: LogResult X-Amz-Executed-Version: ExecutedVersion Payload

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP berikut.

StatusCode

Kode status HTTP berada di kisaran 200 untuk permintaan yang berhasil. Untuk tipe invokasi RequestResponse, kode status ini adalah 200. Untuk tipe invokasi Event, kode status ini adalah 202. Untuk tipe invokasi DryRun, kode status ini adalah 204.

Respons mengembalikan header HTTP berikut.

ExecutedVersion

Versi fungsi yang dijalankan. Ketika Anda memanggil fungsi dengan alias, ini menunjukkan versi mana yang diselesaikan alias.

Panjang Batasan: Panjang minimum 1. Panjang maksimum 1024.

Pola: (\$LATEST|[0-9]+)

FunctionError

Jika ada, menunjukkan kesalahan terjadi selama eksekusi fungsi. Detil tentang kesalahan disertakan dalam muatan respons.

LogResult

4 KB terakhir dari log eksekusi, yang dikodekan base64.

Respons mengembalikan yang berikut sebagai isi HTTP.

Payload

Respons dari fungsi, atau objek kesalahan.

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum.

EC2AccessDeniedException

Perlu izin tambahan untuk mengkonfigurasi pengaturan VPC.

Kode Status HTTP: 502

EC2ThrottledException

Amazon EC2 dibatasi AWS Lambda selama inisialisasi fungsi Lambda menggunakan peran eksekusi yang disediakan untuk fungsi tersebut.

Kode Status HTTP: 502

EC2UnexpectedException

AWS Lambdamenerima pengecualian klien Amazon EC2 yang tidak terduga saat menyiapkan fungsi Lambda.

Kode Status HTTP: 502

EFSIOException

Terjadi kesalahan saat membaca dari atau menulis ke sistem file yang terhubung.

Kode Status HTTP: 410

EFSMountConnectivityException

Fungsi Lambda tidak dapat membuat koneksi jaringan ke sistem file yang dikonfigurasi.

Kode Status HTTP: 408

EFSMountFailureException

Fungsi Lambda tidak dapat memasang sistem file yang dikonfigurasi karena masalah izin atau konfigurasi.

Kode Status HTTP: 403

EFSMountTimeoutException

Fungsi Lambda membuat koneksi jaringan ke sistem file yang dikonfigurasi, tetapi waktu operasi pemasangan habis.

Kode Status HTTP: 408

ENILimitReachedException

AWS Lambdatidak dapat membuat elastic network interface di VPC, yang ditentukan sebagai bagian dari konfigurasi fungsi Lambda, karena batas untuk antarmuka jaringan telah tercapai. Untuk informasi lebih lanjut, lihat Kuota Lambda.

Kode Status HTTP: 502

InvalidParameterValueException

Salah satu parameter dalam permintaan tidak valid.

Kode Status HTTP: 400

InvalidRequestContentException

Isi permintaan tidak dapat diurai sebagai JSON.

Kode Status HTTP: 400

InvalidRuntimeException

Runtime atau versi runtime yang ditentukan tidak didukung.

Kode Status HTTP: 502

InvalidSecurityGroupIDException

ID grup keamanan yang disediakan dalam konfigurasi VPC fungsi Lambda tidak valid.

Kode Status HTTP: 502

InvalidSubnetIDException

ID subnet yang disediakan dalam konfigurasi VPC fungsi Lambda tidak valid.

Kode Status HTTP: 502

InvalidZipFileException

AWS Lambda tidak dapat membuka zip paket deployment.

Kode Status HTTP: 502

KMSAccessDeniedException

Lambda tidak dapat mendekripsi variabel lingkungan karena AWS KMS akses ditolak. Periksa izin KMS fungsi Lambda.

Kode Status HTTP: 502

KMSDisabledException

Lambda tidak dapat mendekripsi variabel lingkungan karena yang digunakan dinonaktifkan. AWS KMS key Periksa pengaturan kunci KMS fungsi Lambda.

Kode Status HTTP: 502

KMSInvalidStateException

Lambda tidak dapat mendekripsi variabel lingkungan karena status yang AWS KMS key digunakan tidak valid untuk Dekripsi. Periksa pengaturan kunci KMS fungsi.

Kode Status HTTP: 502

KMSNotFoundException

Lambda tidak dapat mendekripsi variabel lingkungan karena tidak ditemukan. AWS KMS key Periksa pengaturan kunci KMS fungsi.

Kode Status HTTP: 502

RecursiveInvocationException

Lambda telah mendeteksi fungsi Anda dipanggil dalam loop rekursif dengan AWS sumber daya lain dan menghentikan pemanggilan fungsi Anda.

Kode Status HTTP: 400

RequestTooLargeException

Muatan permintaan melebihi kuota input JSON badan Invoke permintaan. Untuk informasi lebih lanjut, lihat Kuota Lambda.

Kode Status HTTP: 413

ResourceConflictException

Sumber daya sudah ada, atau operasi lain sedang berlangsung.

Kode Status HTTP: 409

ResourceNotFoundException

Sumber daya yang ditentukan dalam permintaan tidak ada.

Kode Status HTTP: 404

ResourceNotReadyException

Fungsi ini tidak aktif dan koneksi VPC-nya tidak lagi tersedia. Tunggu sampai koneksi VPC dibangun kembali dan coba lagi.

Kode Status HTTP: 502

ServiceException

Layanan AWS Lambda mengalami kesalahan internal.

Kode Status HTTP: 500

SnapStartException

afterRestore()Runtime hook mengalami kesalahan. Untuk informasi lebih lanjut, periksa CloudWatch log Amazon.

Kode Status HTTP: 400

SnapStartNotReadyException

Lambda menginisialisasi fungsi Anda. Anda dapat memanggil fungsi ketika status fungsi menjadiActive.

Kode Status HTTP: 409

SnapStartTimeoutException

Lambda tidak dapat memulihkan snapshot dalam batas waktu tunggu.

Kode Status HTTP: 408

SubnetIPAddressLimitReachedException

AWS Lambdatidak dapat mengatur akses VPC untuk fungsi Lambda karena satu atau beberapa subnet yang dikonfigurasi tidak memiliki alamat IP yang tersedia.

Kode Status HTTP: 502

TooManyRequestsException

Batas throughput permintaan terlampaui. Untuk informasi lebih lanjut, lihat Kuota Lambda.

Kode Status HTTP: 429

UnsupportedMediaTypeException

Tipe konten dari isi permintaan Invoke bukan JSON.

Kode Status HTTP: 415

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API ini di salah satu AWS SDK khusus bahasa, lihat berikut ini: