Rantai layanan AWS bersama-sama menggunakan pendekatan tanpa server - AWS Prescriptive Guidance

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

Rantai layanan AWS bersama-sama menggunakan pendekatan tanpa server

Aniket Braganza, Amazon Web Services

Ringkasan

Pola ini menunjukkan pendekatan tanpa server yang dapat diskalakan untuk memproses file yang diunggah dengan menyatukan Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon SNS), Amazon Simple Queue Service (Amazon Simple Queue Service), Amazon Simple Queue Service (Amazon SQS), dan AWS Lambda. Contoh file yang diunggah adalah untuk tujuan demonstrasi. Anda dapat menggunakan pendekatan tanpa server untuk menyelesaikan tugas lain dengan menggabungkan kombinasi layanan AWS yang diperlukan untuk memenuhi tujuan bisnis Anda. Pendekatan tanpa server menggunakan alur kerja asinkron yang bergantung pada notifikasi berbasis peristiwa, penyimpanan tangguh, dan komputasi fungsi sebagai layanan (FaaS) untuk memproses permintaan. Anda dapat menggunakan pendekatan tanpa server untuk skala untuk memenuhi permintaan sambil meminimalkan biaya.

catatan

Ada beberapa opsi untuk menyatukan layanan AWS melalui pendekatan tanpa server. Misalnya, Anda dapat menggunakan pendekatan yang menggabungkan Lambda dengan Amazon S3 alih-alih Amazon SNS dan Amazon SQS. Namun, pola ini menggunakan Amazon SNS dan Amazon SQS karena pendekatan ini memungkinkan untuk menambahkan beberapa titik integrasi ke dalam proses pemanggilan Lambda selama pemberitahuan acara dan untuk memperluas implementasi untuk menyertakan beberapa pendengar dalam orkestrasi tanpa server sambil meminimalkan jumlah overhead pemrosesan.

Prasyarat dan batasan

Prasyarat

Versi produk

  • AWS CDK 2.x

  • Python 3.9

Arsitektur

Diagram berikut menggambarkan bagaimana layanan AWS yang dirantai dapat memungkinkan pengguna mengunggah file ke bucket S3 untuk diproses.

Alur kerja untuk mengunggah file ke bucket S3 dengan menggunakan layanan AWS berantai.

Diagram menunjukkan alur kerja berikut:

  1. Pengguna mengunggah file ke bucket S3.

  2. Unggahan memulai acara S3 yang menerbitkan pesan ke topik SNS. Pesan tersebut berisi rincian acara S3.

  3. Pesan yang dipublikasikan ke topik SNS dimasukkan ke dalam antrean SQS, yang berlangganan dan menerima pemberitahuan untuk topik tersebut.

  4. Sebuah fungsi Lambda polling antrian SQS (sebagai sumber acara) dan menunggu pesan untuk diproses.

  5. Ketika fungsi Lambda menerima pesan dari antrian SQS, ia memprosesnya dan mengakui penerimaan pesan tersebut.

  6. Jika pesan tidak diproses oleh Lambda, maka pesan tersebut dikembalikan ke antrean SQS dan akhirnya ditransfer ke antrean huruf mati SQS.

Tumpukan teknologi

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWS Lambda

Alat

Layanan AWS

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

  • Amazon Simple Notification Service (Amazon SNS) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.

  • 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.

  • 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.

Alat lainnya

  • AWS Cloud Development Kit (AWS CDK) adalah alat utama untuk berinteraksi dengan aplikasi AWS CDK Anda. Ini mengeksekusi aplikasi Anda, menginterogasi model aplikasi yang Anda tentukan, dan memproduksi serta menerapkan template AWS yang dihasilkan oleh CloudFormation AWS CDK.

  • AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.

  • Python adalah bahasa pemrograman tujuan umum tingkat tinggi yang ditafsirkan.

Kode

Kode untuk pola ini tersedia di GitHub Chaining S3 ke SNS ke SQS ke repositori Lambda.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Kloning repositori dan arahkan ke folder. python/s3-sns-sqs-lambda-chain

Pengembang aplikasi

Siapkan lingkungan virtual.

  1. Di AWS CDK, jalankan python3 -m venv .venv perintah.

  2. Jalankan source .venv/bin/activate perintah pada MacOS/Linux atau .venv\Scripts\activate.bat di Windows.

Pengembang aplikasi

Instal dependensi.

Jalankan perintah pip install -r requirements.txt.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Jalankan pengujian unit.

  1. Jalankan perintah pip install -r requirements-dev.txt.

  2. penting

    (Opsional) Jalankan cdk synth --no-staging > template.yml perintah untuk menghasilkan CloudFormation tumpukan. Anda dapat memeriksa tumpukan, tetapi hindari menghasilkan sumber daya dan artefak yang dipentaskan.

  3. Jalankan pytest perintah untuk menjalankan semua pengujian unit.

  4. (Opsional) Jalankan pytest tests/unit/<test_filename> perintah untuk menjalankan tes untuk file tertentu.

Pengembang aplikasi, Insinyur uji
TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan lingkungan bootstrap.

Ikuti petunjuk di Bootstrapping dalam dokumentasi AWS untuk mem-bootstrap lingkungan untuk penerapan AWS CDK di setiap Wilayah AWS tempat tumpukan CloudFormation akan diterapkan.

catatan

Langkah ini mengharuskan Anda memiliki kredensyal dengan akses terprogram.

Pengembang aplikasi, DevOps insinyur, insinyur data

Menyebarkan CloudFormation tumpukan.

Jalankan cdk deploy perintah untuk membangun dan menyebarkan tumpukan ke akun AWS.

Pengembang aplikasi, DevOps insinyur, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus CloudFormation tumpukan dan hapus sumber daya terkait.

Untuk menghapus CloudFormation tumpukan yang dibuat dan menghapus semua sumber daya terkait, jalankan perintah run cdk hancurkan.

Pengembang aplikasi