Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Otomatiskan penerapan aplikasi bersarang menggunakan AWS SAM
Dr. Rahul Sharad Gaikwad, Ishwar Chathaiwale, Dmitry Gulin, dan Tabby Ward, Amazon Web Services
Ringkasan
Di Amazon Web Services (AWS), AWS Serverless Application Model (AWS SAM) adalah kerangka kerja sumber terbuka yang menyediakan sintaks singkatan untuk mengekspresikan APIs fungsi, database, dan pemetaan sumber peristiwa. Dengan hanya beberapa baris untuk setiap sumber daya, Anda dapat menentukan aplikasi yang Anda inginkan dan memodelkannya dengan menggunakan YAMAL. Selama penerapan, SAM mengubah dan memperluas sintaks SAM menjadi sintaks CloudFormation AWS yang dapat Anda gunakan untuk membangun aplikasi tanpa server lebih cepat.
AWS SAM menyederhanakan pengembangan, penerapan, dan pengelolaan aplikasi tanpa server di platform AWS. Ini menyediakan kerangka kerja standar, penyebaran yang lebih cepat, kemampuan pengujian lokal, manajemen sumber daya, Integrasi tanpa batas dengan Alat Pengembangan, dan komunitas yang mendukung. Fitur-fitur ini menjadikannya alat yang berharga untuk membangun aplikasi tanpa server secara efisien dan efektif.
Pola ini menggunakan template AWS SAM untuk mengotomatiskan penerapan aplikasi bersarang. Aplikasi bersarang adalah aplikasi dalam aplikasi lain. Aplikasi induk memanggil aplikasi anak mereka. Ini adalah komponen yang digabungkan secara longgar dari arsitektur tanpa server.
Menggunakan aplikasi bersarang, Anda dapat dengan cepat membangun arsitektur tanpa server yang sangat canggih dengan menggunakan kembali layanan atau komponen yang ditulis dan dipelihara secara independen tetapi disusun menggunakan AWS SAM dan Serverless Application Repository. Aplikasi bersarang membantu Anda membangun aplikasi yang lebih kuat, menghindari pekerjaan duplikat, dan memastikan konsistensi dan praktik terbaik di seluruh tim dan organisasi Anda. Untuk mendemonstrasikan aplikasi bersarang, pola tersebut menerapkan contoh aplikasi keranjang belanja tanpa server AWS
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Virtual Private Cloud (VPC) dan subnet
Lingkungan pengembangan terintegrasi seperti Visual Studio Code (untuk informasi selengkapnya, lihat Alat untuk Dibangun di AWS
) Pustaka roda Python diinstal menggunakan pip install wheel, jika belum diinstal
Batasan
Jumlah maksimum aplikasi yang dapat di-nest dalam aplikasi nirserver adalah 200.
Jumlah maksimum parameter untuk aplikasi bersarang dapat memiliki 60.
Versi produk
Solusi ini dibangun di atas antarmuka baris perintah AWS SAM (AWS SAM CLI) versi 1.21.1, tetapi arsitektur ini harus bekerja dengan versi AWS SAM CLI yang lebih baru.
Arsitektur
Tumpukan teknologi target
Amazon API Gateway
AWS SAM
Amazon Cognito
Amazon DynamoDB
AWS Lambda
Antrean Amazon Simple Queue Service (Amazon SQS)
Arsitektur target
Diagram berikut menunjukkan bagaimana permintaan pengguna dibuat ke layanan belanja dengan menelepon APIs. Permintaan pengguna, termasuk semua informasi yang diperlukan, dikirim ke Amazon API Gateway dan otorisasi Amazon Cognito, yang melakukan mekanisme otentikasi dan otorisasi untuk. APIs
Ketika item ditambahkan, dihapus, atau diperbarui di DynamoDB, peristiwa dimasukkan ke DynamoDB Streams, yang pada gilirannya memulai fungsi Lambda. Untuk menghindari penghapusan langsung item lama sebagai bagian dari alur kerja sinkron, pesan dimasukkan ke antrian SQS, yang memulai fungsi pekerja untuk menghapus pesan.

Dalam pengaturan solusi ini, AWS SAM CLI berfungsi sebagai antarmuka untuk tumpukan CloudFormation AWS. Template AWS SAM secara otomatis menyebarkan aplikasi bersarang. Template SAM induk memanggil template anak, dan CloudFormation tumpukan induk menyebarkan tumpukan anak. Setiap tumpukan anak membangun sumber daya AWS yang ditentukan dalam CloudFormation templat AWS SAM.

Bangun dan gunakan tumpukan.
CloudFormation Tumpukan Auth berisi Amazon Cognito.
CloudFormation Tumpukan Produk berisi fungsi Lambda dan Amazon API Gateway
CloudFormation Tumpukan Belanja berisi fungsi Lambda, Amazon API Gateway, antrean SQS, dan database Amazon DynamoDB.
Alat
Alat
Amazon API Gateway membantu Anda membuat, menerbitkan, memelihara, memantau, dan mengamankan REST, HTTP, dan WebSocket APIs dalam skala apa pun.
AWS CloudFormation membantu Anda menyiapkan sumber daya AWS, menyediakannya dengan cepat dan konsisten, serta mengelolanya sepanjang siklus hidupnya di seluruh akun dan Wilayah AWS.
Amazon Cognito menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk aplikasi web dan seluler.
Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.
AWS Lambda adalah 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.
AWS Serverless Application Model (AWS SAM) adalah kerangka kerja sumber terbuka yang membantu Anda membangun aplikasi tanpa server di AWS Cloud.
Amazon Simple Queue Service (Amazon Simple Queue Service) menyediakan antrian host yang aman, tahan lama, dan tersedia yang membantu Anda mengintegrasikan dan memisahkan sistem dan komponen perangkat lunak terdistribusi.
Kode
Kode untuk pola ini tersedia di repositori GitHub AWS SAM Nested Stack Sample
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Instal AWS SAM CLI. | Untuk menginstal AWS SAM CLI, lihat instruksi dalam dokumentasi AWS SAM. | DevOps insinyur |
Siapkan kredensil AWS. | Untuk menyetel kredensi AWS sehingga AWS SAM CLI dapat melakukan panggilan ke layanan AWS atas nama Anda, jalankan
Untuk informasi selengkapnya tentang menyiapkan kredensil Anda, lihat Otentikasi dan akses kredensil. | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori kode AWS SAM. |
| DevOps insinyur |
Menyebarkan template untuk menginisialisasi proyek. | Untuk menginisialisasi proyek, jalankan | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tinjau template aplikasi AWS SAM. | Tinjau template untuk aplikasi bersarang. Contoh ini menggunakan template aplikasi bersarang berikut:
| DevOps insinyur |
Tinjau template induk. | Tinjau template yang akan memanggil template aplikasi bersarang. Dalam contoh ini, template induk adalah | DevOps insinyur |
Kompilasi dan buat kode template AWS SAM. | Menggunakan AWS SAM CLI, jalankan perintah berikut.
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan aplikasi. | Untuk meluncurkan kode template SAM yang membuat CloudFormation tumpukan aplikasi bersarang dan menyebarkan kode di lingkungan AWS, jalankan perintah berikut.
Perintah akan meminta dengan beberapa pertanyaan. Jawab semua pertanyaan dengan | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Verifikasi tumpukan. | Untuk meninjau CloudFormation tumpukan AWS dan sumber daya AWS yang ditentukan dalam templat AWS SAM, lakukan hal berikut:
| DevOps insinyur |
Sumber daya terkait
Referensi
Tutorial dan video
Informasi tambahan
Setelah semua kode ada, contoh memiliki struktur direktori berikut:
sam_stacks — Folder ini berisi layer.
shared.pyLapisan adalah arsip file yang berisi pustaka, runtime kustom, atau dependensi lainnya. Dengan lapisan, Anda dapat menggunakan pustaka dalam fungsi Anda tanpa perlu memasukkannya ke dalam paket penerapan.product-mock-service— Folder ini berisi semua fungsi dan file Lambda terkait produk.
shopping-cart-service- Folder ini berisi semua fungsi dan file Lambda terkait belanja.