Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pola deployment
Untuk merilis versi baru aplikasi Fungsi AWS Lambda Web Anda, Anda membuat revisi baru. Titik akhir dengan autoDeploymentMode set untuk LatestRevisionmerutekan semua lalu lintas ke sana setelah menjadi Aktif. Titik akhir dengan autoDeploymentMode disetel ke Nonaktif tetap menyajikan revisi mereka saat ini hingga Anda memperbarui bobot revisi. Anda mengontrol bagaimana lalu lintas bergerak dari revisi saat ini ke yang baru menggunakan mode penyebaran otomatis titik akhir dan bobot revisi. Bagian berikut menjelaskan mode penerapan otomatis, pola penerapan umum (kenari, biru-hijau, dan rollback), dan aturan yang mengatur bobot revisi.
Perubahan pada autoDeploymentMode dan revisionWeights merupakan pembaruan titik akhir asinkron. Tunggu updateStatus hingga menjadi Successful sebelum Anda mengevaluasi penerapan atau mengirimkan pembaruan titik akhir lainnya. Jika pembaruan gagal, updateStatusReason jelaskan penyebabnya.
Diagram berikut menunjukkan penerapan kenari pada titik akhir yang mode penerapan otomatisnya Dinonaktifkan. Setiap perubahan bobot adalah pembaruan endpoint asinkron.
-
Revisi 1 dimulai dengan 100 persen lalu lintas.
-
Anda mengarahkan 10 persen lalu lintas ke revisi 2 dan memantaunya.
-
Jika revisi 2 melewati cek Anda, Anda mengarahkan semua lalu lintas ke sana.
-
Jika revisi 2 gagal, Anda mengatur bobot kembali ke revisi 1 pada 100 persen.
Auto-deployment mode
autoDeploymentModePengaturan pada titik akhir mengontrol apakah Lambda secara otomatis merutekan lalu lintas ke revisi baru saat Anda menerapkan. Anda mengatur ini ketika Anda membuat titik akhir, dan Anda dapat mengubahnya pada titik akhir yang ada.
Jika Anda menghilangkanautoDeploymentMode, defaultnya. Disabled LatestRevisiondidukung hanya untuk HomeRegion titik akhir, jadi MultiRegion dan PerRegion titik akhir selalu digunakan. Disabled Saat menggunakanDisabled, Anda mengatur revisionWeights titik akhir, seperti yang dijelaskan dalamBobot revisi.
- LatestRevision
-
Setiap kali revisi baru menjadi Aktif, Lambda merutekan 100% lalu lintas titik akhir ke sana. Anda tidak perlu memperbarui bobot revisi, dan Anda tidak dapat mengatur bobot revisi saat titik akhir dalam mode ini. Gunakan mode ini untuk lingkungan pengembangan dan pementasan di mana Anda menginginkan penerapan otomatis tanpa intervensi manual.
- Dinonaktifkan
-
Lambda tidak mengubah perutean lalu lintas saat Anda membuat revisi baru. Anda mengontrol perutean lalu lintas secara manual dengan mengatur bobot revisi. Gunakan mode ini untuk lingkungan produksi tempat Anda ingin mengontrol peluncuran revisi baru dengan pola penerapan kenari atau biru-hijau.
Untuk mengubah mode penyebaran otomatis (AWS CLI)
-
Gunakan AWS Command Line Interface (AWS CLI) untuk memperbarui titik akhir dan menonaktifkan penerapan otomatis.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --auto-deployment-mode Disabled -
Tunggu hingga pembaruan titik akhir selesai.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Beralih antar mode
Saat Anda beralih dari LatestRevisionke Dinonaktifkan tanpa menentukan bobot revisi, perutean lalu lintas saat ini tetap tidak berubah setelah pembaruan berhasil. Revisi yang mengarahkan lalu lintas ke titik akhir sebelum pembaruan terus menerima 100% lalu lintas, bahkan setelah Anda membuat revisi yang lebih baru. Itu membuat lalu lintas itu sampai Anda memperbarui bobot revisi. Anda juga dapat mengganti mode dan mengatur bobot revisi dalam permintaan yang samaUpdateWebFunctionEndpoint.
Saat Anda beralih dari Dinonaktifkan ke LatestRevision, Lambda memperbarui titik akhir untuk merutekan 100% lalu lintas ke revisi terbaru. Revisi terbaru harus Aktif. Jika Tertunda atau Gagal, permintaan gagal dengan kesalahan konflik. Setelah pembaruan berhasil, bobot revisi yang dikonfigurasi sebelumnya tidak lagi berlaku.
Bobot revisi
Saat mode penyebaran otomatis Dinonaktifkan, Anda mengontrol perutean lalu lintas dengan menetapkan bobot ke revisi. Lambda mendistribusikan lalu lintas antar revisi secara proporsional dengan bobotnya.
Bobot revisi adalah pengaturan pada titik akhir (revisionWeightsproperti), yang Anda ubah. UpdateWebFunctionEndpoint Mereka bukan pengaturan pada revisi.
Bobot revisi mengikuti aturan ini:
-
Setiap berat adalah bilangan bulat dari 1 hingga 100.
-
Bobot dalam permintaan harus berjumlah tepat 100.
-
Setiap revisi hanya dapat muncul sekali dalam bobot.
-
Setiap revisi dalam bobot harus dalam keadaan Aktif saat Anda mengatur bobot. Jika tidak, API menolak permintaan tersebut.
-
Titik akhir merutekan lalu lintas ke maksimum dua revisi pada saat yang bersamaan.
-
Tidak ada bobot yang memiliki nilai default. Untuk merutekan semua lalu lintas ke satu revisi, tentukan hanya revisi itu dengan berat 100. Revisi yang tidak dalam bobot tidak menerima lalu lintas dari titik akhir itu.
Pengidentifikasi revisi dihasilkan oleh Lambda saat Anda membuat revisi. Untuk menemukan pengidentifikasi revisi untuk Fungsi Web Anda, gunakan perintah berikut:
aws lambda-web list-web-function-revisions \ --function-namemy-web-app
Respons mencantumkan revisi secara berurutan dari yang terbaru ke yang terlama, termasuk pengenal, stempel waktu pembuatan, dan status saat ini.
Pola deployment
Pola penerapan berikut menggunakan bobot revisi untuk mengontrol bagaimana lalu lintas bergerak dari revisi Anda saat ini ke revisi baru. Pola ini memerlukan mode penyebaran otomatis titik akhir (pengaturan autoDeploymentMode titik akhir) untuk Dinonaktifkan. Titik akhir yang dibuat aws lambda-web deploy perintah menggunakan LatestRevision. Untuk menggunakan pola ini pada titik akhir itu, pertama-tama alihkan ke Dinonaktifkan, seperti yang ditunjukkan padaAuto-deployment mode.
Penyebaran kenari
Penyebaran kenari mengirimkan sebagian kecil lalu lintas ke revisi baru sehingga Anda dapat memantau kesalahan sebelum merutekan semua lalu lintas. Jika revisi baru memiliki masalah, hanya sebagian kecil permintaan yang terpengaruh.
Untuk melakukan penyebaran kenari (AWS CLI)
-
Buat revisi baru dengan kode yang diperbarui.
aws lambda-web create-web-function-revision \ --function-namemy-web-app\ --build-config '{ "codeConfig": { "s3Object": { "bucket": "my-bucket", "key": "my-app-v2.zip" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }' \ --service-config '{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role" }'Perhatikan pengidentifikasi revisi dalam respons.
Revisi baru tidak menyalin pengaturan dari revisi saat ini.
serviceConfigPengaturan apa pun yang Anda hilangkan mengambil nilai defaultnya, misalnya atimeoutSecondsdari 30 dan tidak ada variabel lingkungan. Sertakan setiap pengaturan yang digunakan revisi saat ini, sepertienvironmentVariables,,timeoutSecondsmaxConcurrencyPerEnvironment, dantelemetryConfig. Untuk melihat konfigurasi revisi saat ini, jalankanaws lambda-web get-web-function-revision. -
Tunggu sampai revisi baru Aktif. API menolak bobot revisi yang mereferensikan revisi yang tidak Aktif.
aws lambda-web wait web-function-revision-active \ --function-namemy-web-app\ --revision-idrev-def45 -
Rutekan 10% lalu lintas ke revisi baru dan 90% ke revisi saat ini.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-abc12", "weight": 90}, {"revisionId": "rev-def45", "weight": 10}]' -
Tunggu hingga pembaruan titik akhir selesai.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint -
Pantau revisi baru melalui log aplikasi atau metrik khusus. Sertakan pengenal build atau revisi yang Anda kontrol di dalamnya. Metrik Fungsi Web tidak menyertakan dimensi revisi. Akibatnya, mereka tidak dapat memisahkan kesalahan kenari dari kesalahan pada revisi saat ini. Lihat perinciannya di Menggunakan CloudWatch metrik dengan Fungsi Web Lambda. Jika kenari memenuhi ambang kesalahan dan latensi yang Anda tentukan sebelum peluncuran, tingkatkan bobotnya.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-abc12", "weight": 50}, {"revisionId": "rev-def45", "weight": 50}]' -
Tunggu hingga pembaruan titik akhir selesai.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint -
Ketika Anda yakin revisi baru itu sehat, arahkan semua lalu lintas ke sana.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-def45", "weight": 100}]' -
Tunggu hingga pembaruan titik akhir selesai.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Blue-green penyebaran
Penerapan biru-hijau membuat revisi saat ini melayani lalu lintas saat Anda memvalidasi revisi baru, dan kemudian mengalihkan semua lalu lintas ke revisi baru dalam satu pembaruan titik akhir. Prosedur berikut memvalidasi dengan pembagian lalu lintas genap. Untuk memvalidasi tanpa lalu lintas produksi, gunakan titik akhir pengujian terpisah, seperti yang dijelaskan dalam. Pertimbangan deployment
Untuk melakukan penyebaran biru-hijau (AWS CLI)
-
Buat revisi baru dengan kode yang diperbarui, dan tunggu hingga aktif. Gunakan perintah yang sama yang ditunjukkan dalam prosedur penyebaran kenari sebelumnya.
-
Pisahkan lalu lintas secara merata di antara dua revisi.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-abc12", "weight": 50}, {"revisionId": "rev-def45", "weight": 50}]' -
Tunggu hingga pembaruan titik akhir selesai.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint -
Pantau kedua revisi melalui log aplikasi atau metrik khusus. Sertakan pengenal build atau revisi yang Anda kontrol di dalamnya. Ketika revisi baru memenuhi kriteria kesehatan yang Anda tentukan sebelum peluncuran, arahkan semua lalu lintas ke sana.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-def45", "weight": 100}]' -
Tunggu hingga pembaruan titik akhir selesai.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Berguling kembali
Jika Anda mendeteksi masalah dengan revisi baru (tingkat kesalahan tinggi, peningkatan latensi), Anda dapat memutar kembali dengan satu pembaruan titik akhir yang merutekan semua lalu lintas ke revisi yang diketahui baik sebelumnya.
Bergulir kembali dalam LatestRevision mode
Meskipun mode penerapan otomatis titik akhir adalah LatestRevision, permintaan yang hanya menetapkan bobot revisi gagal. Prosedur berikut menyetel mode penerapan otomatis ke Dinonaktifkan dan bobot revisi dalam permintaan yang sama, sehingga berfungsi di salah satu mode.
Titik akhir kemudian tetap dalam mode Dinonaktifkan sampai Anda mengubahnya.
Untuk memutar kembali ke revisi sebelumnya (AWS CLI)
-
Perbarui titik akhir untuk merutekan 100% lalu lintas ke revisi yang diketahui baik dan atur mode penerapan otomatis ke Dinonaktifkan.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --auto-deployment-mode Disabled \ --revision-weights '[{"revisionId": "rev-abc12", "weight": 100}]' -
Tunggu hingga pembaruan titik akhir selesai.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Setelah pembaruan berhasil, Lambda berhenti merutekan permintaan baru ke revisi yang bermasalah. In-flight permintaan pada revisi itu selesai secara normal. Untuk informasi selengkapnya tentang status pembaruan titik akhir, lihatStatus titik akhir.
Jika revisi yang Anda putar kembali memiliki sedikit atau tidak ada lingkungan eksekusi yang berjalan, Lambda meningkatkannya saat lalu lintas bergeser ke sana. Permintaan dapat menunggu saat lingkungan eksekusi diinisialisasi, yang meningkatkan latensi. Permintaan masih dapat gagal karena kegagalan startup, batas tingkat titik akhir atau lingkungan maksimum, atau kuota vCPU akun. Beberapa kegagalan ini mengembalikan respons HTTP 429.
Pertimbangan deployment
- Apa yang memicu revisi baru?
-
Lambda membuat revisi baru saat Anda menelepon.
CreateWebFunctionRevisionIni termasuk menerapkan kode aplikasi baru dan mengubah pengaturan konfigurasi seperti batas waktu, konkurensi, atau variabel lingkungan. Setiap perubahan menghasilkan revisi yang tidak dapat diubah. - Dapatkah saya menguji revisi baru sebelum merutekan lalu lintas produksi ke sana?
-
Ya. Anda hanya dapat menjalankan revisi melalui titik akhir, jadi ada dua pendekatan:
-
Titik akhir pengujian khusus - Buat titik akhir terpisah untuk pengujian. Rutekan lalu lintas ke revisi baru pada titik akhir pengujian terlebih dahulu (dengan menyetel bobot revisi titik akhir pengujian), memvalidasinya, dan kemudian memperbarui bobot titik akhir produksi untuk menyertakan revisi baru.
-
Bobot minimal — Tetapkan revisi baru bobot 1% pada titik akhir produksi. Ini mengirimkan sebagian kecil lalu lintas produksi ke revisi baru sehingga Anda dapat memantau kesalahan dengan dampak pelanggan minimal.
-
- Apa yang terjadi pada revisi yang tidak ada dalam bobot revisi?
-
Revisi yang tidak berada dalam bobot revisi titik akhir tidak menerima lalu lintas dari titik akhir tersebut. Titik akhir lain dari Fungsi Web yang sama masih dapat merutekan ke sana. Revisi tetap Aktif sampai Anda menghapusnya atau sampai pembersihan otomatis menghapusnya. Ini pindah ke Gagal jika Lambda kehilangan akses ke objek Amazon S3-nya. Untuk pembersihan otomatis, lihatBatas revisi dan pembersihan otomatis.
- Bagaimana cara mengidentifikasi revisi mana yang terbaru?
-
Panggil
ListWebFunctionRevisions. Respons mencantumkan revisi dalam urutan menuruncreatedAt, jadi revisi pertama dalam daftar adalah yang terbaru. - Bisakah saya menghapus titik akhir saat merutekan lalu lintas?
-
Ya. Saat Anda menghapus titik akhir, Lambda berhenti merutekan permintaan baru ke titik akhir tersebut, dan permintaan ke nama domain titik akhir ditolak setelah penghapusan diterapkan. Revisi itu sendiri tidak terpengaruh dan masih dapat digunakan oleh titik akhir lainnya.
- Dapatkah saya menghapus revisi saat menerima lalu lintas?
-
Tidak. Jika ada titik akhir yang merutekan lalu lintas ke revisi, termasuk ketika
regionalEndpointspropertiMultiRegionatauPerRegiontitik akhir mereferensikan revisi,DeleteWebFunctionRevisionpermintaan gagal dengan kesalahan konflik. Untuk menghapus revisi, pertama-tama perbarui bobot revisi titik akhir untuk menghapusnya dari perutean lalu lintas di setiap titik akhir, lalu hapus. Karena Lambda memblokir penghapusan sementara revisi memiliki bobot yang ditetapkan, menghapus revisi tidak pernah mengubah distribusi lalu lintas titik akhir.