Men-deploy aplikasi nirserver secara bertahap - AWS Serverless Application Model

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

Men-deploy aplikasi nirserver secara bertahap

AWS Serverless Application Model (AWS SAM) dilengkapi dengan CodeDeployuntuk menyediakan AWS Lambda penerapan bertahap. Dengan hanya beberapa baris konfigurasi, AWS SAM lakukan hal berikut untuk Anda:

  • Men-deploy versi baru fungsi Lambda Anda, dan secara otomatis membuat alias yang mengarah ke versi baru.

  • Secara bertahap menggeser lalu lintas pelanggan ke versi baru sampai Anda puas bahwa itu berfungsi seperti yang diharapkan. Jika pembaruan tidak berfungsi dengan benar, Anda dapat memutar kembali perubahan.

  • Mendefinisikan fungsi uji pra-lalu lintas dan pasca-lalu lintas untuk memverifikasi bahwa kode yang baru digunakan dikonfigurasi dengan benar dan aplikasi Anda beroperasi seperti yang diharapkan.

  • Secara otomatis memutar kembali penerapan jika CloudWatch alarm dipicu.

catatan

Jika Anda mengaktifkan penerapan bertahap melalui AWS SAM template Anda, CodeDeploy sumber daya secara otomatis dibuat untuk Anda. Anda dapat melihat CodeDeploy sumber daya secara langsung melalui AWS Management Console.

Contoh

Contoh berikut menunjukkan penggunaan CodeDeploy untuk secara bertahap mengalihkan pelanggan ke versi fungsi Lambda yang baru Anda gunakan:

Resources: MyLambdaFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs12.x CodeUri: s3://bucket/code.zip AutoPublishAlias: live DeploymentPreference: Type: Canary10Percent10Minutes Alarms: # A list of alarms that you want to monitor - !Ref AliasErrorMetricGreaterThanZeroAlarm - !Ref LatestVersionErrorMetricGreaterThanZeroAlarm Hooks: # Validation Lambda functions that are run before & after traffic shifting PreTraffic: !Ref PreTrafficLambdaFunction PostTraffic: !Ref PostTrafficLambdaFunction

Revisi AWS SAM template ini melakukan hal berikut:

  • AutoPublishAlias: Dengan menambahkan properti ini dan menentukan nama alias,: AWS SAM

  • Deployment Preference TypePada contoh sebelumnya, 10 persen lalu lintas pelanggan Anda segera bergeser ke versi baru Anda. Setelah 10 menit, semua lalu lintas dialihkan ke versi baru. Namun, jika tes pra-lalu lintas atau pasca-lalu lintas Anda gagal, atau jika CloudWatch alarm dipicu, putar CodeDeploy kembali penerapan Anda. Anda dapat menentukan bagaimana lalu lintas harus digeser antar versi dengan cara berikut:

    • Canary: Lalu lintas digeser dalam dua peningkatan. Anda dapat memilih dari opsi canary yang telah ditentukan sebelumnya. Opsi menentukan persentase lalu lintas yang dialihkan ke versi fungsi Lambda Anda yang diperbarui pada kenaikan pertama, dan interval, dalam menit, sebelum lalu lintas yang tersisa dialihkan pada kenaikan kedua.

    • Linear: Lalu lintas digeser dalam peningkatan yang sama dengan jumlah menit yang sama antara setiap kenaikan. Anda dapat memilih dari opsi linier yang telah ditentukan sebelumnya yang menentukan persentase lalu lintas yang dialihkan di setiap kenaikan dan jumlah menit di antara setiap kenaikan.

    • AllAtOnce: Semua lalu lintas digeser dari fungsi Lambda asli ke versi fungsi Lambda yang diperbarui sekaligus.

    Tabel berikut menguraikan opsi pergeseran lalu lintas lainnya yang tersedia di luar yang digunakan dalam contoh.

    Tipe Preferensi Deployment

    Canary10Percent30Minutes

    Canary10Percent5Minutes

    Canary10Percent10Minutes

    Canary10Percent15Minutes

    Linear10 10 PercentEvery Menit

    Linear10 1 PercentEvery Menit

    Linear10 PercentEvery 2Menit

    Linear10 PercentEvery 3Menit

    AllAtOnce

  • Alarms: Ini adalah CloudWatch alarm yang dipicu oleh kesalahan yang ditimbulkan oleh penerapan. Saat ditemui, mereka secara otomatis memutar kembali penerapan Anda. Misalnya, jika kode yang diperbarui yang Anda gunakan menyebabkan kesalahan dalam aplikasi. Contoh lain adalah jika ada AWS Lambdaatau CloudWatch metrik khusus yang Anda tentukan telah melanggar ambang alarm.

  • Hooks: Ini adalah fungsi uji pra-lalu lintas dan pasca-lalu lintas yang menjalankan pemeriksaan sebelum pergeseran lalu lintas mulai ke versi baru, dan setelah pergeseran lalu lintas selesai.

    • PreTraffic: Sebelum perpindahan lalu lintas dimulai, CodeDeploy memanggil fungsi Lambda kait pra-lalu lintas. Fungsi Lambda ini harus memanggil kembali CodeDeploy dan menunjukkan keberhasilan atau kegagalan. Jika fungsi gagal, fungsi dibatalkan dan melaporkan kegagalan kembali ke AWS CloudFormation. Jika fungsi berhasil, CodeDeploy lanjutkan ke perpindahan lalu lintas.

    • PostTraffic: Setelah perpindahan lalu lintas selesai, CodeDeploy memanggil fungsi Lambda kait pasca-lalu lintas. Ini mirip dengan hook pra-lalu lintas, di mana fungsi harus menelepon kembali CodeDeploy untuk melaporkan keberhasilan atau kegagalan. Gunakan hook pasca-lalu lintas untuk menjalankan pengujian integrasi atau tindakan validasi lainnya.

    Untuk informasi selengkapnya, lihat Referensi SAM untuk Deployment yang Aman.

Secara bertahap menerapkan fungsi Lambda untuk pertama kalinya

Saat menerapkan fungsi Lambda secara bertahap CodeDeploy , memerlukan versi fungsi yang digunakan sebelumnya untuk mengalihkan lalu lintas dari. Oleh karena itu, penerapan pertama Anda harus diselesaikan dalam dua langkah:

  • Langkah 1: Menyebarkan fungsi Lambda Anda dan secara otomatis membuat alias dengan. AutoPublishAlias

  • Langkah 2: Lakukan penyebaran bertahap Anda dengan. DeploymentPreference

Melakukan penerapan bertahap pertama Anda dalam dua langkah memberikan CodeDeploy versi fungsi Lambda sebelumnya untuk mengalihkan lalu lintas dari.

Langkah 1: Terapkan fungsi Lambda Anda

Resources: MyLambdaFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs12.x CodeUri: s3://bucket/code.zip AutoPublishAlias: live

Langkah 2: Lakukan penyebaran bertahap

Resources: MyLambdaFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs12.x CodeUri: s3://bucket/code.zip AutoPublishAlias: live DeploymentPreference: Type: Canary10Percent10Minutes Alarms: # A list of alarms that you want to monitor - !Ref AliasErrorMetricGreaterThanZeroAlarm - !Ref LatestVersionErrorMetricGreaterThanZeroAlarm Hooks: # Validation Lambda functions that are run before and after traffic shifting PreTraffic: !Ref PreTrafficLambdaFunction PostTraffic: !Ref PostTrafficLambdaFunction

Pelajari selengkapnya

Untuk contoh langsung mengonfigurasi penerapan bertahap, lihat Modul 5 - Penerapan Canary di Lokakarya Lengkap. AWS SAM