Otomatiskan penerapan aplikasi bersarang menggunakan AWS SAM - AWS Prescriptive Guidance

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.

Operasi POST dan PUT dari API Gateway ke fungsi Lambda ke DynamoDB dan Layanan Produk.

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.

Proses empat langkah menggunakan AWS SAM CLI dengan induk dan tiga CloudFormation tumpukan anak.
  1. Bangun dan gunakan tumpukan.

  2. CloudFormation Tumpukan Auth berisi Amazon Cognito.

  3. CloudFormation Tumpukan Produk berisi fungsi Lambda dan Amazon API Gateway

  4. CloudFormation Tumpukan Belanja berisi fungsi Lambda, Amazon API Gateway, antrean SQS, dan database Amazon DynamoDB.

Alat

Alat

Kode

Kode untuk pola ini tersedia di repositori GitHub AWS SAM Nested Stack Sample.

Epik

TugasDeskripsiKeterampilan 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 aws configure perintah dan ikuti petunjuknya.

$aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:

Untuk informasi selengkapnya tentang menyiapkan kredensil Anda, lihat Otentikasi dan akses kredensil.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori kode AWS SAM.

  1. Kloning repositori sampel tumpukan bersarang aws sam untuk pola ini dengan memasukkan perintah berikut.

    git clone https://github.com/aws-samples/aws-sam-nested-stack-sample.git
  2. Arahkan ke direktori kloning dengan memasukkan perintah berikut.

    cd aws-sam-nested-stack-sample
DevOps insinyur

Menyebarkan template untuk menginisialisasi proyek.

Untuk menginisialisasi proyek, jalankan SAM init perintah. Ketika diminta untuk memilih sumber template, pilihCustom Template Location.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Tinjau template aplikasi AWS SAM.

Tinjau template untuk aplikasi bersarang. Contoh ini menggunakan template aplikasi bersarang berikut:

  • auth.yaml— Template ini menyiapkan sumber daya terkait otentikasi, seperti Amazon Cognito dan AWS Systems Manager Parameter Store.

  • product-mock.yaml— Template ini menyebarkan sumber daya terkait produk, seperti fungsi Lambda dan Amazon API Gateway.

  • shoppingcart-service.yaml— Template ini menyiapkan sumber daya terkait keranjang belanja, seperti AWS Identity and Access Management (IAM), tabel DynamoDB, dan fungsi Lambda.

DevOps insinyur

Tinjau template induk.

Tinjau template yang akan memanggil template aplikasi bersarang. Dalam contoh ini, template induk adalahtemplate.yml. Semua aplikasi terpisah bersarang di template template.yml induk tunggal.

DevOps insinyur

Kompilasi dan buat kode template AWS SAM.

Menggunakan AWS SAM CLI, jalankan perintah berikut.

sam build
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan aplikasi.

Untuk meluncurkan kode template SAM yang membuat CloudFormation tumpukan aplikasi bersarang dan menyebarkan kode di lingkungan AWS, jalankan perintah berikut.

sam deploy --guided --stack-name shopping-cart-nested-stack --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

Perintah akan meminta dengan beberapa pertanyaan. Jawab semua pertanyaan dengany.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Verifikasi tumpukan.

Untuk meninjau CloudFormation tumpukan AWS dan sumber daya AWS yang ditentukan dalam templat AWS SAM, lakukan hal berikut:

  1. Masuk ke AWS Management Console, dan navigasikan ke CloudFormationkonsol.

  2. Verifikasi bahwa tumpukan induk dan anak terdaftar.

    Dalam contoh ini, sam-shopping-cart adalah tumpukan induk yang memanggil tumpukan Auth, Produk, dan Belanja bersarang.

    Tumpukan produk memberikan tautan URL Product API Gateway sebagai output.

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.py Lapisan 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.