Merampingkan pengembangan dan penyebaran bot Amazon Lex dengan menggunakan alur kerja otomatis - AWS Prescriptive Guidance

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

Merampingkan pengembangan dan penyebaran bot Amazon Lex dengan menggunakan alur kerja otomatis

Balaji Panneerselvam, Attila Dancso, Pavan Dusanapudi, Anand Jumnani, dan James O'Hara, Amazon Web Services

Ringkasan

Mengembangkan dan menerapkan bot percakapan Amazon Lex dapat menjadi tantangan saat Anda mencoba mengelola beberapa fitur, pengembang, dan lingkungan. Alur kerja otomatis menggunakan prinsip infrastruktur sebagai kode (IAc) dapat membantu merampingkan proses. Pola ini dapat membantu meningkatkan produktivitas pengembang Amazon Lex dan memungkinkan manajemen siklus hidup bot yang efisien dengan cara berikut:

  • Aktifkan pengembangan beberapa fitur secara bersamaan - Dengan alur kerja otomatis, pengembang dapat mengerjakan berbagai fitur secara paralel di cabang terpisah. Perubahan kemudian dapat digabungkan dan digunakan tanpa memblokir pekerjaan lain.

  • Gunakan UI konsol Amazon Lex - Pengembang dapat menggunakan konsol Amazon Lex yang mudah digunakan untuk membuat dan menguji bot. Bot kemudian dijelaskan dalam kode infrastruktur untuk penerapan.

  • Promosikan bot di seluruh lingkungan - Alur kerja mengotomatiskan mempromosikan versi bot dari lingkungan yang lebih rendah seperti pengembangan dan pengujian hingga produksi. Pendekatan ini mengurangi risiko dan overhead promosi manual.

  • Pertahankan kontrol versi - Mengelola definisi bot di Git, bukan hanya melalui layanan Amazon Lex memberi Anda kontrol versi dan jejak audit. Perubahan dilacak ke pengembang individu, tidak seperti ketika hanya menggunakan AWS Management Console atau APIs untuk memodifikasi bot yang disimpan di dalamnya. AWS

Dengan mengotomatiskan proses rilis bot Amazon Lex, tim dapat memberikan fitur lebih cepat dengan mengurangi risiko dan usaha. Bot tetap di bawah kontrol versi daripada diisolasi di konsol Amazon Lex.

Prasyarat dan batasan

Prasyarat

  • Alur kerja melibatkan beberapa Akun AWS untuk lingkungan yang berbeda (pengembangan, produksi, dan DevOps), yang memerlukan manajemen akun dan konfigurasi akses lintas akun.

  • Python 3.9 tersedia di lingkungan penerapan atau pipeline Anda.

  • Git diinstal dan dikonfigurasi pada workstation lokal untuk kontrol sumber.

  • AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi untuk mengautentikasi dengan menggunakan baris perintah atau Python.

Keterbatasan

  • Akses repositori — Alur kerja mengasumsikan bahwa pipeline continuous integration and continuous delivery (CI/CD) memiliki izin yang diperlukan untuk melakukan perubahan pada repositori kode sumber.

  • Versi bot awal — Perkakas mengharuskan versi awal bot digunakan dengan menggunakan AWS CloudFormation templat. Anda harus membuat iterasi pertama bot dan mengkomitmennya ke repo sebelum alur kerja otomatis dapat mengambil alih.

  • Konflik gabungan — Meskipun alur kerja bertujuan untuk memungkinkan pengembangan bersamaan, masih ada kemungkinan konflik gabungan saat mengintegrasikan perubahan dari cabang yang berbeda. Menyelesaikan konflik dalam konfigurasi bot mungkin memerlukan intervensi manual.

Versi produk

Arsitektur

Diagram berikut menampilkan arsitektur tingkat tinggi dan komponen kunci dari solusi.

Alur kerja untuk mengotomatiskan pengembangan dan penyebaran bot Amazon Lex.

Komponen utama meliputi:

  • Lex bot repo — Sebuah repositori Git yang menyimpan definisi IAc untuk bot Amazon Lex.

  • DevOps— Akun AWS Didedikasikan untuk menampung CI/CD jaringan pipa dan sumber daya terkait untuk proses pengembangan dan penyebaran.

  • Pipelines — AWS CodePipeline Contoh yang mengotomatiskan berbagai tahap pengembangan bot dan siklus hidup penerapan, seperti membuat bot baru, mengekspor definisi bot, mengimpor definisi bot, dan menghapus bot.

  • Bot tiket dan bot utama — Sumber daya bot Amazon Lex, di mana bot tiket adalah bot khusus fitur yang dikembangkan oleh tim atau pengembang individu dan bot utama adalah bot dasar yang mengintegrasikan semua fitur.

Diagram arsitektur menggambarkan alur kerja berikut:

  1. Bot utama dasar - Titik awal alur kerja adalah untuk mendasarkan bot utama di lingkungan pengembangan (Dev). Bot utama berfungsi sebagai fondasi untuk pengembangan masa depan dan penambahan fitur.

  2. Buat bot tiket — Ketika fitur atau perubahan baru diperlukan, bot tiket dibuat. Bot tiket pada dasarnya adalah salinan atau cabang dari bot utama yang dapat dikerjakan pengembang tanpa memengaruhi versi utama.

  3. Bot tiket ekspor - Setelah bekerja pada bot tiket selesai, itu diekspor dari layanan Amazon Lex. Kemudian, cabang yang berisi bot tiket didasarkan ulang dari cabang utama. Langkah ini memastikan bahwa setiap perubahan yang dilakukan pada bot utama saat bot tiket sedang dalam pengembangan dimasukkan, mengurangi potensi konflik.

  4. Impor bot tiket berbasis ulang dan validasi - Bot tiket berbasis ulang diimpor kembali ke lingkungan pengembangan dan divalidasi untuk memastikannya berfungsi dengan benar dengan perubahan terbaru dari cabang utama. Jika validasi berhasil, permintaan tarik (PR) dibuat untuk menggabungkan perubahan bot tiket ke cabang utama.

  5. Hapus bot tiket — Setelah perubahan berhasil digabungkan ke cabang utama, bot tiket tidak lagi diperlukan. Bot tiket dapat dihapus untuk menjaga lingkungan tetap bersih dan mudah dikelola.

  6. Terapkan bot utama ke lingkungan pengembangan dan uji — Bot utama yang diperbarui, sekarang termasuk fitur atau perubahan baru, diterapkan ke lingkungan pengembangan. Di sini, ia menjalani pengujian menyeluruh untuk memastikan semua fungsi berfungsi seperti yang diharapkan.

  7. Menyebarkan bot utama ke lingkungan produksi - Setelah pengujian di lingkungan pengembangan selesai dan berhasil, bot utama dikerahkan ke lingkungan produksi. Langkah ini adalah tahap akhir dari alur kerja, di mana fitur-fitur baru menjadi tersedia untuk pengguna akhir.

Otomatisasi dan skala

Alur kerja otomatis memungkinkan pengembang untuk mengerjakan berbagai fitur secara paralel, masing-masing di cabang terpisah. Ini memfasilitasi pengembangan bersamaan, memungkinkan tim untuk berkolaborasi secara efektif dan memberikan fitur lebih cepat. Dengan cabang yang terisolasi satu sama lain, perubahan dapat digabungkan dan digunakan tanpa memblokir atau mengganggu pekerjaan lain yang sedang berlangsung.

Alur kerja mengotomatiskan penerapan dan promosi versi bot di berbagai lingkungan, seperti pengembangan, pengujian, dan produksi.

Menyimpan definisi bot dalam sistem kontrol versi seperti Git menyediakan jejak audit yang komprehensif dan memungkinkan kolaborasi yang efisien. Perubahan dilacak ke pengembang individu, memastikan transparansi dan akuntabilitas di seluruh siklus pengembangan. Pendekatan ini juga memfasilitasi tinjauan kode, memungkinkan tim untuk mengidentifikasi dan mengatasi masalah sebelum menerapkan ke produksi.

Dengan menggunakan AWS CodePipeline dan lainnya Layanan AWS, alur kerja otomatis dapat diskalakan untuk mengakomodasi peningkatan beban kerja dan ukuran tim.

Alat

Layanan AWS

  • AWS Cloud Development Kit (AWS CDK)adalah kerangka pengembangan perangkat lunak open-source untuk mendefinisikan AWS Cloud infrastruktur dalam kode dengan menggunakan bahasa pemrograman yang sudah dikenal dan menyediakannya. AWS CloudFormation Implementasi sampel dalam pola ini menggunakan Python.

  • AWS CDK Command Line Interface (AWS CDK CLI) - AWS CDK Toolkit adalah alat utama untuk berinteraksi dengan aplikasi Anda. AWS CDK Ini mengeksekusi aplikasi Anda, menginterogasi model aplikasi yang Anda tentukan, dan menghasilkan serta menerapkan AWS CloudFormation template yang dihasilkan oleh CDK.

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS Pola ini digunakan CloudFormation untuk menyebarkan konfigurasi bot Amazon Lex dan sumber daya terkait menggunakan infrastruktur sebagai kode.

  • AWS CodeBuildadalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan. Pola ini digunakan CodeBuild untuk membangun dan mengemas artefak penyebaran.

  • AWS CodePipelinemembantu Anda dengan cepat memodelkan dan mengkonfigurasi berbagai tahapan rilis perangkat lunak dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus. Pola ini digunakan CodePipeline untuk mengatur pipa pengiriman kontinu.

  • AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • Amazon Lex V2 adalah Layanan AWS untuk membangun antarmuka percakapan (bot) untuk aplikasi menggunakan suara dan teks.

  • AWS SDK untuk Python (Boto3)adalah kit pengembangan perangkat lunak yang membantu Anda mengintegrasikan aplikasi, perpustakaan, atau skrip Python Anda. Layanan AWS

Alat lainnya

  • Git adalah sistem kontrol versi terdistribusi open source.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub management-framework-sample-for-amazon-lex. Kode repo berisi folder dan file berikut:

  • prerequisitefolder - Berisi definisi CloudFormation tumpukan (menggunakan AWS CDK) untuk menyiapkan sumber daya dan lingkungan yang diperlukan.

  • prerequisite/lexmgmtworkflowfolder — Direktori utama untuk proyek Alur Kerja Manajemen Lex, termasuk definisi tumpukan dan kode Python.

  • prerequisite/tests— Berisi unit test.

  • srcfolder — Direktori kode sumber, termasuk pembungkus dan utilitas manajemen bot Amazon Lex.

  • src/dialogue_lambda— Direktori kode sumber dari fungsi Lambda kait dialog yang mencegat dan memproses input pengguna selama percakapan dengan bot Amazon Lex.

Praktik terbaik

  • Pemisahan kekhawatiran

    • Mempertahankan pemisahan tanggung jawab yang jelas antara lingkungan DevOps, pengembangan, dan produksi.

    • Gunakan terpisah Akun AWS untuk setiap lingkungan untuk menegakkan batasan isolasi dan keamanan yang tepat.

    • Gunakan peran lintas akun dan prinsip akses paling tidak memiliki hak istimewa untuk memastikan akses terkontrol antar lingkungan.

  • Infrastruktur sebagai kode

    • Tinjau dan perbarui kode infrastruktur secara teratur agar selaras dengan praktik terbaik dan persyaratan yang berkembang.

    • Menetapkan strategi percabangan dan penggabungan yang jelas untuk repositori kode sumber

  • Pengujian dan validasi

    • Menerapkan pengujian otomatis pada berbagai tahap pipeline untuk menangkap masalah di awal siklus pengembangan.

    • Gunakan konsol Amazon Lex atau kerangka kerja pengujian otomatis untuk memvalidasi konfigurasi dan fungsionalitas bot sebelum mempromosikan ke lingkungan yang lebih tinggi.

    • Pertimbangkan untuk menerapkan gerbang persetujuan manual untuk penyebaran ke produksi atau lingkungan kritis.

  • Pemantauan dan pencatatan

    • Siapkan mekanisme pemantauan dan pencatatan untuk pipeline, penerapan, dan interaksi bot.

    • Pantau peristiwa pipeline, status penerapan, dan metrik kinerja bot untuk mengidentifikasi dan mengatasi masalah dengan segera.

    • Gunakan layanan AWS seperti Amazon CloudWatch AWS CloudTrail, dan AWS X-Ray untuk pencatatan dan pemantauan terpusat.

    • Secara teratur meninjau dan menganalisis kinerja, efisiensi, dan efektivitas alur kerja otomatis.

  • Keamanan dan kepatuhan

    • Terapkan praktik pengkodean yang aman dan ikuti praktik terbaik AWS keamanan untuk pengembangan dan penerapan bot Amazon Lex.

    • Tinjau dan perbarui peran, kebijakan, dan izin IAM secara berkala agar selaras dengan prinsip hak istimewa paling sedikit.

    • Pertimbangkan untuk mengintegrasikan pemindaian keamanan dan pemeriksaan kepatuhan ke dalam jaringan pipa.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan lingkungan CDK lokal.

  1. Untuk mengkloning repo pola ini dan menavigasi ke prerequisite direktori, jalankan perintah berikut:

    git clone https://github.com/aws-samples/management-framework-sample-for-amazon-lex.git cd management-framework-sample-for-amazon-lex
  2. Untuk menginstal dan mengaktifkan lingkungan virtual Python, jalankan perintah berikut yang menginstal dependensi CDK secara lokal di folder proyek, bukan secara global:

    pip install virtualenv python<version> -m venv .venv source .venv/bin/activate python -m pip install -r requirements.txt
AWS DevOps

Buat peran lintas akun di devops lingkungan.

devopsAkun bertanggung jawab untuk hosting dan mengelola CI/CD jaringan pipa. Untuk mengaktifkan CI/CD pipeline berinteraksi dengan dev dan prod lingkungan, jalankan perintah berikut untuk membuat peran lintas akun di devops akun.

cdk bootstrap --profile=devops cdk deploy LexMgmtDevopsRoleStack -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops
AWS DevOps

Buat peran lintas akun di dev lingkungan.

Buat peran IAM di dev akun dengan izin yang diperlukan untuk memungkinkan devops akun mengambil peran ini. CI/CD Pipeline menggunakan peran ini untuk melakukan tindakan di dev akun, seperti menerapkan dan mengelola sumber daya bot Amazon Lex.

Untuk membuat peran IAM, jalankan perintah berikut:

cdk bootstrap --profile=dev cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=dev
AWS DevOps

Buat peran lintas akun di prod lingkungan.

Buat peran IAM di prod akun dengan izin yang diperlukan untuk memungkinkan devops akun mengambil peran ini. CI/CD Pipeline menggunakan peran ini untuk melakukan tindakan di prod akun, seperti menerapkan dan mengelola sumber daya bot Amazon Lex.

cdk bootstrap --profile=prod cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=prod
AWS DevOps

Buat jaringan pipa di devops lingkungan.

Untuk mengelola alur kerja pengembangan untuk bot Amazon Lex, jalankan perintah berikut untuk menyiapkan pipeline di lingkungan. devops

cdk deploy LexMgmtWorkflowStack -c devops-account-id=1111111111111 -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops
AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Tentukan versi awal bot utama.

Untuk menentukan versi awal bot utama, picu BaselineBotPipeline pipeline.

Pipeline menyebarkan definisi bot dasar yang didefinisikan dalam CloudFormation template, mengekspor definisi bot utama sebagai file.json. dan menyimpan kode bot utama dalam sistem kontrol versi.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat bot tiket untuk mengembangkan dan menguji fitur.

TicketBotadalah instance bot baru yang diimpor dari definisi bot utama yang ada di cabang fitur. Pendekatan ini memastikan bahwa bot baru memiliki semua fungsionalitas dan konfigurasi saat ini dari bot utama.

Untuk menentukan versi awal bot tiket, picu CreateTicketBotPipeline pipeline.

Pipeline membuat cabang fitur baru di sistem kontrol versi dan membuat instance bot tiket baru berdasarkan bot utama.

Lex Bot Pengembang

Kembangkan dan uji fitur bot tiket.

Untuk mengembangkan dan menguji fitur, masuk ke AWS Management Console dan buka konsol Amazon Lex di https://console.aws.amazon.com/lex/. Untuk informasi selengkapnya, lihat Menguji bot menggunakan konsol di dokumentasi Amazon Lex.

Dengan TicketBot instance, Anda sekarang dapat menambahkan, memodifikasi, atau memperluas fungsionalitas bot untuk mengimplementasikan fitur baru. Misalnya, Anda dapat membuat atau memodifikasi maksud, ucapan, slot, dan alur dialog. Untuk informasi selengkapnya, lihat Menambahkan maksud dalam dokumentasi Amazon Lex.

Lex Bot Pengembang

Ekspor definisi bot tiket.

Definisi bot yang diekspor pada dasarnya adalah representasi dari konfigurasi dan fungsionalitas bot dalam format JSON.

Untuk mengekspor definisi bot tiket, picu ExportTicketBotPipeline pipeline.

Pipeline mengekspor definisi bot tiket sebagai file.json dan menyimpan kode bot tiket di cabang fitur di sistem kontrol versi.

Lex Bot Pengembang

Rebase cabang fitur dari cabang utama terbaru.

Selama pengembangan fitur baru, cabang utama mungkin telah menerima perubahan lain dari pengembang atau tim yang berbeda.

Untuk memasukkan perubahan ini ke dalam cabang fitur, lakukan rebase operasi Git. Operasi ini pada dasarnya memutar ulang komit dari cabang fitur di atas komit terbaru dari cabang utama, memastikan bahwa cabang fitur mencakup semua perubahan terbaru

Lex Bot Pengembang

Impor dan validasi bot tiket berbasis ulang.

Setelah Anda rebase cabang fitur, Anda harus mengimpornya ke instance bot tiket. Impor ini memperbarui bot tiket yang ada dengan perubahan terbaru dari cabang berbasis ulang.

Untuk mengimpor bot tiket berbasis ulang, picu ImportTicketBotPipeline pipeline.

Pipeline mengimpor file definisi.json ticket bot di cabang fitur di sistem kontrol versi ke dalam instance. TicketBot

Lex Bot Pengembang

Validasi definisi bot berbasis ulang.

Setelah Anda mengimpor definisi bot berbasis ulang, sangat penting untuk memvalidasi fungsinya. Anda ingin memastikan bahwa fitur baru berfungsi seperti yang diharapkan dan tidak bertentangan dengan fungsionalitas yang ada.

Validasi ini biasanya melibatkan pengujian bot dengan berbagai skenario masukan, memeriksa tanggapan, dan memverifikasi bahwa bot berperilaku sebagaimana dimaksud. Anda dapat melakukan validasi dengan salah satu cara berikut:

  • Uji bot secara manual dengan menggunakan konsol Amazon Lex.

  • Gunakan pendekatan otomatis dengan menggunakan kerangka kerja pengujian dan alat yang dapat mensimulasikan interaksi pengguna dan menegaskan respons yang diharapkan.

Lex Bot Pengembang

Gabungkan cabang fitur ke cabang utama.

Setelah Anda mengembangkan dan menguji fitur baru dalam TicketBot instance terisolasi, lakukan hal berikut:

  1. Komit perubahan ke cabang fitur yang sesuai dalam sistem kontrol versi.

  2. Untuk menggabungkan cabang fitur ke cabang utama, buat permintaan tarik (PR). PR ini berfungsi sebagai permintaan untuk meninjau dan memasukkan perubahan ke dalam basis kode utama.

Lex Bot Developer, Adminstrator Repositori

Hapus cabang fitur dan bot tiket.

Setelah cabang fitur berhasil digabungkan ke cabang utama, hapus cabang fitur dan bot tiket dari repo kode sumber.

Untuk menghapus cabang fitur dan bot tiket, picu DeleteTicketBotPipeline pipeline.

Pipeline menghapus sumber daya bot sementara yang dibuat selama proses pengembangan (misalnya, bot tiket). Tindakan ini membantu menjaga repo bersih dan mencegah kebingungan atau konflik dengan cabang fitur future.

Lex Bot Pengembang
TugasDeskripsiKeterampilan yang dibutuhkan

Impor definisi bot utama terbaru ke dev lingkungan.

Untuk mengimpor definisi bot utama terbaru di cabang utama ke dev lingkungan, picu DeployBotDevPipeline pipeline.

Pipeline juga membuat tag git pada persetujuan.

AWS DevOps

Impor definisi bot utama terbaru ke prod lingkungan.

Untuk mengimpor definisi bot terbaru di cabang utama ke prod lingkungan, berikan referensi tag dari tugas sebelumnya sebagai parameter dan picu DeployBotProdPipeline pipeline.

Pipeline mengimpor definisi bot terbaru dari tag tertentu ke prod lingkungan.

AWS DevOps

Pemecahan Masalah

IsuSolusi

Saat Anda menerapkan bot Amazon Lex ke berbagai Akun AWS, layanan perkakas harus memiliki izin yang diperlukan untuk mengakses sumber daya di akun tersebut.

Untuk memberikan akses lintas akun, gunakan peran dan kebijakan IAM. Buat peran IAM di akun target dan lampirkan kebijakan ke peran yang memberikan izin yang diperlukan. Kemudian, asumsikan peran ini dari akun tempat bot Amazon Lex digunakan.

Untuk informasi selengkapnya, lihat izin IAM yang diperlukan untuk mengimpor dan izin IAM diperlukan untuk mengekspor bot di Lex V2 dalam dokumentasi Amazon Lex.

Sumber daya terkait