View a markdown version of this page

Menyebarkan dan menjalankan fungsi Lambda yang tahan lama dengan AWS CLI - AWS Lambda

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

Menyebarkan dan menjalankan fungsi Lambda yang tahan lama dengan AWS CLI

Gunakan AWS CLI untuk membuat dan menerapkan fungsi tahan lama Lambda dengan perintah imperatif. Pendekatan ini memberi Anda kontrol langsung atas setiap langkah proses penyebaran.

Prasyarat

  • Instal dan konfigurasikan AWS CLI. Untuk petunjuk, lihat Menginstal AWS CLI.

  • Buat paket penerapan dengan kode fungsi Anda dan SDK eksekusi yang tahan lama.

  • Buat peran eksekusi IAM dengan izin pos pemeriksaan.

Buat peran eksekusi

Buat peran IAM dengan izin untuk eksekusi Lambda dasar dan operasi pos pemeriksaan.

Untuk membuat peran eksekusi
  1. Buat dokumen kebijakan kepercayaan yang memungkinkan Lambda untuk mengambil peran. Simpan ini sebagaitrust-policy.json:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Buat peran:

    aws iam create-role \ --role-name durable-function-role \ --assume-role-policy-document file://trust-policy.json
  3. Lampirkan kebijakan eksekusi tahan lama untuk operasi pos pemeriksaan dan eksekusi dasar:

    aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

Kebijakan AWSLambdaBasicDurableExecutionRolePolicy terkelola mencakup izin yang diperlukan untuk operasi pos pemeriksaan (lambda:CheckpointDurableExecutiondanlambda:GetDurableExecutionState) dan eksekusi Lambda dasar.

Buat fungsi yang tahan lama

Buat fungsi tahan lama Anda dengan --durable-config parameter.

Untuk membuat fungsi yang tahan lama
  1. Package kode fungsi Anda dengan dependensi ke dalam file.zip:

    zip -r function.zip index.mjs node_modules/
    catatan

    Untuk fungsi tahan lama berbasis Java, Anda perlu mengkompilasi kode fungsi dan dependensi Anda ke dalam satu file.zip atau file Java Archive (JAR). Untuk informasi selengkapnya, lihat Menerapkan fungsi Java Lambda dengan arsip file.zip atau JAR.

  2. Buat fungsi dengan eksekusi tahan lama diaktifkan:

    aws lambda create-function \ --function-name myDurableFunction \ --runtime nodejs22.x \ --role arn:aws:iam::123456789012:role/durable-function-role \ --handler index.handler \ --zip-file fileb://function.zip \ --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'
catatan

Anda hanya dapat mengaktifkan eksekusi yang tahan lama saat membuat fungsi. Anda tidak dapat mengaktifkannya pada fungsi yang ada.

Publikasikan versi

Meskipun fungsi tahan lama dapat dipanggil menggunakan kualifikasi $LATEST versi, Anda harus selalu menggunakan ARN yang memenuhi syarat yang menunjuk ke versi stabil untuk memastikan eksekusi kode Anda secara deterministik.

aws lambda publish-version \ --function-name myDurableFunction \ --description "Initial version"

Perintah mengembalikan versi ARN. Perhatikan nomor versi (misalnya,:1) di akhir ARN.

Secara opsional, buat alias yang menunjuk ke versi:

aws lambda create-alias \ --function-name myDurableFunction \ --name prod \ --function-version 1

Memanggil fungsi tahan lama

Panggil fungsi tahan lama Anda menggunakan ARN (versi atau alias) yang memenuhi syarat.

catatan

Pemanggilan idempoten: Untuk mencegah eksekusi duplikat saat mencoba kembali pemanggilan yang gagal, Anda dapat memberikan nama eksekusi yang memastikan semantik eksekusi. at-most-once Lihat Idempotency untuk detailnya.

Invokasi sinkron

Untuk eksekusi yang selesai dalam 15 menit, gunakan pemanggilan sinkron:

aws lambda invoke \ --function-name myDurableFunction:1 \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json

Atau menggunakan alias:

aws lambda invoke \ --function-name myDurableFunction:prod \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
Invokasi asinkron

Untuk eksekusi yang berjalan lama, gunakan pemanggilan asinkron:

aws lambda invoke \ --function-name myDurableFunction:prod \ --invocation-type Event \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json

Dengan pemanggilan asinkron, Lambda segera kembali. Fungsi terus dijalankan di latar belakang.

catatan

Anda dapat menggunakan $LATEST untuk membuat prototipe dan pengujian di konsol. Untuk beban kerja produksi, gunakan versi atau alias yang diterbitkan.

Kelola eksekusi yang tahan lama

Gunakan perintah berikut untuk mengelola dan memantau eksekusi fungsi yang tahan lama.

Daftar eksekusi

Daftar semua eksekusi untuk fungsi yang tahan lama:

aws lambda list-durable-executions-by-function \ --function-name myDurableFunction
Dapatkan detail eksekusi

Dapatkan detail tentang eksekusi tertentu:

aws lambda get-durable-execution \ --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
Dapatkan riwayat eksekusi

Lihat riwayat pos pemeriksaan untuk eksekusi:

aws lambda get-durable-execution-history \ --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
Hentikan eksekusi

Hentikan eksekusi tahan lama yang berjalan:

aws lambda stop-durable-execution \ --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id

Perbarui kode fungsi

Perbarui kode fungsi tahan lama Anda dan publikasikan versi baru:

Untuk memperbarui dan mempublikasikan versi baru
  1. Perbarui kode fungsi:

    aws lambda update-function-code \ --function-name myDurableFunction \ --zip-file fileb://function.zip
  2. Tunggu pembaruan selesai:

    aws lambda wait function-updated \ --function-name myDurableFunction
  3. Publikasikan versi baru:

    aws lambda publish-version \ --function-name myDurableFunction \ --description "Updated order processing logic"
  4. Perbarui alias untuk menunjuk ke versi baru:

    aws lambda update-alias \ --function-name myDurableFunction \ --name prod \ --function-version 2
penting

Menjalankan eksekusi terus menggunakan versi yang mereka mulai. Pemanggilan baru menggunakan versi alias yang diperbarui.

Lihat log fungsi

Lihat log fungsi tahan lama Anda di CloudWatch Log:

aws logs tail /aws/lambda/myDurableFunction --follow

Filter log untuk eksekusi tertentu:

aws logs filter-log-events \ --log-group-name /aws/lambda/myDurableFunction \ --filter-pattern "exec-abc123"

Pembersihan sumber daya

Hapus fungsi tahan lama dan sumber daya terkait:

# Delete the function aws lambda delete-function --function-name myDurableFunction # Delete the IAM role policies aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy # Delete the role aws iam delete-role --role-name durable-function-role

Langkah selanjutnya

Setelah menerapkan fungsi tahan lama Anda dengan: AWS CLI

  • Memantau eksekusi menggunakan perintah list-durable-executions-by-function dan get-durable-execution

  • Lihat operasi pos pemeriksaan dalam peristiwa AWS CloudTrail data

  • Siapkan CloudWatch alarm untuk kegagalan eksekusi atau eksekusi yang berjalan lama

  • Mengotomatiskan penerapan menggunakan skrip shell atau pipeline CI/CD

Untuk informasi selengkapnya tentang AWS CLI perintah untuk Lambda, lihat Referensi AWS CLI Perintah.