Orientasi penyewa dalam arsitektur SaaS untuk model silo menggunakan C# dan AWS CDK - AWS Prescriptive Guidance

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

Orientasi penyewa dalam arsitektur SaaS untuk model silo menggunakan C# dan AWS CDK

Tabby Ward, Susmitha Reddy Gankidi, dan Vijai Anand Ramalingam, Amazon Web Services

Ringkasan

Aplikasi perangkat lunak sebagai layanan (SaaS) dapat dibangun dengan berbagai model arsitektur yang berbeda. Model silo mengacu pada arsitektur di mana penyewa disediakan sumber daya khusus.

Aplikasi SaaS mengandalkan model tanpa gesekan untuk memperkenalkan penyewa baru ke lingkungan mereka. Ini sering membutuhkan orkestrasi sejumlah komponen untuk berhasil menyediakan dan mengkonfigurasi semua elemen yang diperlukan untuk membuat penyewa baru. Proses ini, dalam arsitektur SaaS, disebut sebagai penyewa on-boarding. On-boarding harus sepenuhnya otomatis untuk setiap lingkungan SaaS dengan memanfaatkan infrastruktur sebagai kode dalam proses on-boarding Anda.

Pola ini memandu Anda melalui contoh pembuatan penyewa dan penyediaan infrastruktur dasar untuk penyewa di Amazon Web Services (AWS). Pola ini menggunakan C# dan AWS Cloud Development Kit (AWS CDK).

Karena pola ini menciptakan alarm penagihan, sebaiknya gunakan tumpukan di US East (Virginia N.), atau us-east-1, Wilayah AWS. Untuk informasi selengkapnya, lihat dokumentasi AWS.

Prasyarat dan batasan

Prasyarat

Keterbatasan

  • AWS CDK menggunakan AWS CloudFormation, sehingga aplikasi AWS CDK tunduk pada kuota CloudFormation layanan. Untuk informasi selengkapnya, lihat CloudFormation kuota AWS

  • CloudFormation Tumpukan penyewa dibuat dengan peran CloudFormation infra-cloudformation-role layanan dengan karakter wildcard pada tindakan (sns* dansqs*) tetapi dengan sumber daya yang dikunci ke awalan. tenant-cluster Untuk kasus penggunaan produksi, evaluasi pengaturan ini dan berikan hanya akses yang diperlukan ke peran layanan ini. Fungsi InfrastructureProvision Lambda juga menggunakan karakter wildcard (cloudformation*) untuk menyediakan CloudFormation tumpukan tetapi dengan sumber daya yang dikunci ke awalan. tenant-cluster

  • Contoh docker build kode ini digunakan --platform=linux/amd64 untuk memaksa gambar linux/amd64 berbasis. Ini untuk memastikan bahwa artefak gambar akhir akan cocok untuk Lambda, yang secara default menggunakan arsitektur x86-64. Jika Anda perlu mengubah arsitektur Lambda target, pastikan untuk mengubah kode Dockerfiles dan AWS CDK. Untuk informasi selengkapnya, lihat posting blog Memigrasi fungsi AWS Lambda ke prosesor AWS Graviton2 berbasis ARM.

  • Proses penghapusan tumpukan tidak akan membersihkan CloudWatch Log (grup log dan log) yang dihasilkan oleh tumpukan. Anda harus membersihkan log secara manual melalui konsol AWS Management CloudWatch Console Amazon atau melalui API.

Pola ini diatur sebagai contoh. Untuk penggunaan produksi, evaluasi pengaturan berikut dan buat perubahan berdasarkan kebutuhan bisnis Anda:

  • Bucket AWS Simple Storage Service (Amazon S3) dalam contoh ini tidak mengaktifkan versi untuk kesederhanaan. Evaluasi dan perbarui pengaturan sesuai kebutuhan.

  • Contoh ini menyiapkan titik akhir Amazon API Gateway REST API tanpa autentikasi, otorisasi, atau pembatasan untuk kesederhanaan. Untuk penggunaan produksi, kami merekomendasikan mengintegrasikan sistem dengan infrastruktur keamanan bisnis. Evaluasi pengaturan ini dan tambahkan pengaturan keamanan yang diperlukan sesuai kebutuhan.

  • Untuk contoh infrastruktur penyewa ini, Amazon Simple Notification Service (Amazon SNS) dan Amazon Simple Queue Service (Amazon SQS) hanya memiliki pengaturan minimum. AWS Key Management Service (AWS KMS) untuk setiap penyewa terbuka untuk layanan Amazon dan Amazon CloudWatch SNS di akun untuk dikonsumsi berdasarkan kebijakan kunci AWS KMS. Pengaturan hanya contoh placeholder. Sesuaikan pengaturan sesuai kebutuhan berdasarkan kasus penggunaan bisnis Anda.

  • Seluruh penyiapan, yang mencakup tetapi tidak terbatas pada titik akhir API dan penyediaan dan penghapusan penyewa backend dengan menggunakan AWS CloudFormation, hanya mencakup kasus happy path dasar. Evaluasi dan perbarui pengaturan dengan logika coba lagi yang diperlukan, logika penanganan kesalahan tambahan, dan logika keamanan berdasarkan kebutuhan bisnis Anda.

  • Kode contoh diuji dengan up-to-date cdk-nag untuk memeriksa kebijakan pada saat penulisan ini. Kebijakan baru mungkin ditegakkan di masa depan. Kebijakan baru ini mungkin mengharuskan Anda untuk memodifikasi tumpukan secara manual berdasarkan rekomendasi sebelum tumpukan dapat diterapkan. Tinjau kode yang ada untuk memastikan bahwa itu selaras dengan kebutuhan bisnis Anda.

  • Kode bergantung pada AWS CDK untuk menghasilkan akhiran acak alih-alih mengandalkan nama fisik statis yang ditetapkan untuk sebagian besar sumber daya yang dibuat. Pengaturan ini untuk memastikan bahwa sumber daya ini unik dan tidak bertentangan dengan tumpukan lain. Untuk informasi selengkapnya, lihat dokumentasi AWS CDK. Sesuaikan ini berdasarkan kebutuhan bisnis Anda.

  • Contoh kode ini mengemas artefak .NET Lambda ke dalam gambar berbasis Docker dan berjalan dengan runtime image Container yang disediakan Lambda. Runtime image container memiliki keunggulan untuk mekanisme transfer dan penyimpanan standar (pendaftar kontainer) dan lingkungan pengujian lokal yang lebih akurat (melalui image container). Anda dapat mengganti proyek untuk menggunakan runtime .NET yang disediakan Lambda untuk mengurangi waktu pembuatan gambar Docker, tetapi Anda kemudian perlu mengatur mekanisme transfer dan penyimpanan dan memastikan bahwa pengaturan lokal cocok dengan pengaturan Lambda. Sesuaikan kode agar selaras dengan persyaratan bisnis pengguna.

Versi produk

  • AWS CDK versi 2.45.0 atau yang lebih baru

  • Studio Visual 2022

Arsitektur

Tumpukan teknologi

  • Amazon API Gateway

  • AWS CloudFormation

  • Amazon CloudWatch

  • Amazon DynamoDB

  • AWS Identity and Access Management (IAM)

  • AWS KMS

  • AWS Lambda

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

Arsitektur

Diagram berikut menunjukkan aliran pembuatan tumpukan penyewa. Untuk informasi selengkapnya tentang tumpukan teknologi pesawat kontrol dan penyewa, lihat bagian Informasi tambahan.

Alur kerja untuk membuat penyewa dan menyediakan infrastruktur dasar untuk penyewa di AWS.

Aliran pembuatan tumpukan penyewa

  1. Pengguna mengirimkan permintaan POST API dengan payload penyewa baru (nama penyewa, deskripsi penyewa) di JSON ke REST API yang dihosting oleh Amazon API Gateway. API Gateway memproses permintaan dan meneruskannya ke fungsi backend Lambda Tenant On-boarding. Dalam contoh ini, tidak ada otorisasi atau otentikasi. Dalam pengaturan produksi, API ini harus diintegrasikan dengan sistem keamanan infrastruktur SaaS.

  2. Fungsi Tenant On-boarding memverifikasi permintaan. Kemudian mencoba untuk menyimpan catatan penyewa, yang mencakup nama penyewa, pengidentifikasi unik universal penyewa (UUID) yang dihasilkan, dan deskripsi penyewa, ke dalam tabel On-boarding Amazon DynamoDB Tenant. 

  3. Setelah DynamoDB menyimpan catatan, aliran DynamoDB memulai fungsi Infrastruktur Penyewa Lambda hilir.

  4. Fungsi Lambda Infrastruktur Penyewa bertindak berdasarkan aliran DynamoDB yang diterima. Jika aliran untuk acara INSERT, fungsi menggunakan NewImage bagian aliran (catatan pembaruan terbaru, bidang Nama Penyewa) untuk memanggil CloudFormation untuk membuat infrastruktur penyewa baru menggunakan templat yang disimpan di bucket S3. CloudFormation Template membutuhkan parameter Nama Penyewa. 

  5. AWS CloudFormation membuat infrastruktur penyewa berdasarkan CloudFormation template dan parameter input.

  6. Setiap pengaturan infrastruktur penyewa memiliki CloudWatch alarm, alarm penagihan, dan acara alarm.

  7. Acara alarm menjadi pesan ke topik SNS, yang dienkripsi oleh kunci AWS KMS penyewa.

  8. Topik SNS meneruskan pesan alarm yang diterima ke antrean SQS, yang dienkripsi oleh AWS KMS penyewa untuk kunci enkripsi.

Sistem lain dapat diintegrasikan dengan Amazon SQS untuk melakukan tindakan berdasarkan pesan dalam antrian. Dalam contoh ini, untuk menjaga kode generik, pesan masuk tetap dalam antrian dan memerlukan penghapusan manual.

Aliran penghapusan tumpukan penyewa

  1. Pengguna mengirimkan permintaan DELETE API dengan payload penyewa baru (nama penyewa, deskripsi penyewa) di JSON ke REST API yang dihosting oleh Amazon API Gateway, yang akan memproses permintaan dan meneruskan ke fungsi Tenant On-boarding. Dalam contoh ini, tidak ada otorisasi atau otentikasi. Dalam pengaturan produksi, API ini akan diintegrasikan dengan sistem keamanan infrastruktur SaaS.

  2. Fungsi Tenant On-Boarding akan memverifikasi permintaan dan kemudian mencoba menghapus catatan penyewa (nama penyewa) dari meja On-Boarding Penyewa. 

  3. Setelah DynamoDB berhasil menghapus catatan (catatan ada di tabel dan dihapus), aliran DynamoDB memulai fungsi Infrastruktur Penyewa Lambda hilir.

  4. Fungsi Lambda Infrastruktur Penyewa bertindak berdasarkan catatan aliran DynamoDB yang diterima. Jika aliran untuk acara REMOVE, fungsi menggunakan OldImage bagian rekaman (informasi rekaman dan bidang Nama Penyewa, sebelum perubahan terbaru, yang dihapus) untuk memulai penghapusan tumpukan yang ada berdasarkan informasi rekaman tersebut.

  5. AWS CloudFormation menghapus tumpukan penyewa target sesuai dengan input.

Alat

Layanan AWS

  • Amazon API Gateway membantu Anda membuat, menerbitkan, memelihara, memantau, dan mengamankan REST, HTTP, dan WebSocket APIs dalam skala apa pun.

  • AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.

  • AWS CDK Toolkit adalah kit pengembangan cloud baris perintah yang membantu Anda berinteraksi dengan aplikasi AWS Cloud Development Kit (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.

  • 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 DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.

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

  • AWS Key Management Service (AWS KMS) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.

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

  • 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 Toolkit for Visual Studio adalah plugin untuk lingkungan pengembangan terintegrasi Visual Studio (IDE). Toolkit for Visual Studio mendukung pengembangan, debugging, dan penerapan aplikasi.NET yang menggunakan layanan AWS.

Alat-alat lainnya

  • Visual Studio adalah IDE yang mencakup kompiler, alat penyelesaian kode, desainer grafis, dan fitur lain yang mendukung pengembangan perangkat lunak.

Kode

Kode untuk pola ini ada di orientasi Tenant di SaaS Architecture for Silo Model APG Example repository.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Verifikasi instalasi Node.js.

Untuk memverifikasi bahwa Node.js diinstal pada mesin lokal Anda, jalankan perintah berikut.

node --version
Administrator AWS, AWS DevOps

Instal AWS CDK Toolkit.

Untuk menginstal AWS CDK Toolkit di komputer lokal Anda, jalankan perintah berikut.

npm install -g aws-cdk

Jika npm tidak diinstal, Anda dapat menginstalnya dari situs Node.js.

Administrator AWS, AWS DevOps

Verifikasi versi AWS CDK Toolkit.

Untuk memverifikasi bahwa versi AWS CDK Toolkit diinstal dengan benar di mesin Anda, jalankan perintah berikut.  

cdk --version
Administrator AWS, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Kloning repositori, dan arahkan ke folder. \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example

Di Visual Studio 2022, buka \src\TenantOnboardingInfra.sln solusinya. Buka TenantOnboardingInfraStack.cs file dan tinjau kodenya.

Sumber daya berikut dibuat sebagai bagian dari tumpukan ini:

  • Tabel DynamoDB

  • Bucket S3 (Unggah CloudFormation template ke bucket S3.)

  • Peran eksekusi Lambda

  • Fungsi Lambda

  • API Gateway API

  • Sumber acara ke fungsi Lambda

Administrator AWS, AWS DevOps

Tinjau CloudFormation template.

Di \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\template folder, bukainfra.yaml, dan tinjau CloudFormation template. Template ini akan terhidrasi dengan nama penyewa diambil dari tabel DynamoDB orientasi penyewa.

Template menyediakan infrastruktur khusus penyewa. Dalam contoh ini, ia menyediakan kunci AWS KMS, Amazon SNS, Amazon SQS, dan alarm. CloudWatch

Pengembang aplikasi, AWS DevOps

Tinjau fungsi orientasi penyewa.

BukaFunction.cs, dan tinjau kode untuk fungsi orientasi penyewa, yang dibuat dengan templat Visual Studio AWS Lambda Project (.NET Core- C#) dengan cetak biru .NET 6 (Gambar Kontainer).

BukaDockerfile, dan tinjau kodenya. DockerfileIni adalah file teks yang terdiri dari instruksi untuk membangun gambar wadah Lambda.

Perhatikan bahwa NuGet paket-paket berikut ditambahkan sebagai dependensi ke proyek: TenantOnboardingFunction

  • Amazon.Lambda.APIGatewayEvents

  • AWSSDK.DynamoDBv2

  • Newtonsoft.Json

Pengembang aplikasi, AWS DevOps

Tinjau InfraProvisioning fungsi Penyewa.

Navigasi ke \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\InfraProvisioningFunction.

BukaFunction.cs, dan tinjau kode untuk fungsi penyediaan infrastruktur penyewa, yang dibuat dengan templat Visual Studio AWS Lambda Project (.NET Core- C#) dengan cetak biru .NET 6 (Gambar Kontainer).

BukaDockerfile, dan tinjau kodenya.

Perhatikan bahwa NuGet paket-paket berikut ditambahkan sebagai dependensi ke proyek: InfraProvisioningFunction

  • Amazon.Lambda.DynamoDBEvents

  • AWSSDK.DynamoDBv2

  • AWSSDK.Cloudformation

Pengembang aplikasi, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Bangun solusinya.

Untuk membangun solusi, lakukan langkah-langkah berikut:

  1. Di Visual Studio 2022, buka \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\TenantOnboardingInfra.sln solusinya. 

  2. Buka menu konteks (klik kanan) untuk solusinya, dan pilih Build solution.

catatan

Pastikan Anda memperbarui Amazon.CDK.Lib NuGet paket ke versi terbaru dalam \tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\TenantOnboardingInfra proyek sebelum Anda membuat solusi.

Pengembang aplikasi

Bootstrap lingkungan AWS CDK.

Buka prompt perintah Windows dan arahkan ke folder root aplikasi AWS CDK tempat cdk.json file tersedia (\tenant-onboarding-in-saas-architecture-for-silo-model-apg-example). Jalankan perintah berikut untuk bootstrap.

cdk bootstrap

Jika Anda telah membuat profil AWS untuk kredensialnya, gunakan perintah dengan profil Anda.

cdk bootstrap --profile <profile name>
Administrator AWS, AWS DevOps

Buat daftar tumpukan AWS CDK.

Untuk daftar semua tumpukan yang akan dibuat sebagai bagian dari proyek ini, jalankan perintah berikut.

cdk ls cdk ls --profile <profile name>

Jika Anda telah membuat profil AWS untuk kredensialnya, gunakan perintah dengan profil Anda.

cdk ls --profile <profile name>
Administrator AWS, AWS DevOps

Tinjau sumber daya AWS mana yang akan dibuat.

Untuk meninjau semua sumber daya AWS yang akan dibuat sebagai bagian dari proyek ini, jalankan perintah berikut.

cdk diff

Jika Anda telah membuat profil AWS untuk kredensialnya, gunakan perintah dengan profil Anda.

cdk diff --profile <profile name>
Administrator AWS, AWS DevOps

Terapkan semua sumber daya AWS dengan menggunakan AWS CDK.

Untuk menerapkan semua sumber daya AWS, jalankan perintah berikut.

cdk deploy --all --require-approval never

Jika Anda telah membuat profil AWS untuk kredensialnya, gunakan perintah dengan profil Anda.

cdk deploy --all --require-approval never --profile <profile name>

Setelah penerapan selesai, salin URL API dari bagian output di prompt perintah, yang ditampilkan dalam contoh berikut.

Outputs: TenantOnboardingInfraStack.TenantOnboardingAPIEndpoint42E526D7 = https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/
Administrator AWS, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat penyewa baru.

Untuk membuat penyewa baru, kirim permintaan curl berikut.

curl -X POST <TenantOnboardingAPIEndpoint* from CDK Output>tenant -d '{"Name":"Tenant123", "Description":"Stack for Tenant123"}'

Ubah pemegang tempat <TenantOnboardingAPIEndpoint* from CDK Output> ke nilai aktual dari AWS CDK, seperti yang ditunjukkan pada contoh berikut.

curl -X POST https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/tenant -d '{"Name":"Tenant123", "Description":"test12"}'

Contoh berikut menunjukkan output.

{"message": "A new tenant added - 5/4/2022 7:11:30 AM"}
Pengembang aplikasi, administrator AWS, AWS DevOps

Verifikasi detail penyewa yang baru dibuat di DynamoDB.

Untuk memverifikasi detail penyewa yang baru dibuat di DynamoDB, lakukan langkah-langkah berikut.

  1. Buka AWS Management Console, dan navigasikan ke layanan Amazon DynamoDB.

  2. Di navigasi kiri, pilih Jelajahi item, dan pilih TenantOnboarding tabel.

    catatan

    Nama penyewa akan ditambahkan dengan. tenantcluster- Untuk informasi selengkapnya, lihat bagian Informasi tambahan.

  3. Verifikasi bahwa item baru dibuat dengan detail penyewa.

Pengembang aplikasi, administrator AWS, AWS DevOps

Verifikasi pembuatan tumpukan untuk penyewa baru.

Verifikasi bahwa tumpukan baru berhasil dibuat dan disediakan dengan infrastruktur untuk penyewa yang baru dibuat sesuai dengan template. CloudFormation

  1. Buka CloudFormation konsol.

  2. Di navigasi kiri, pilih Tumpukan, dan verifikasi bahwa tumpukan dengan nama penyewa berhasil dibuat.

  3. Pilih tumpukan penyewa yang baru dibuat, lalu pilih tab Resources. Perhatikan sumber daya alarm dan sumber daya Amazon SQS.

  4. Buka terminal baru dengan kredensi AWS yang dikonfigurasi, dan arahkan ke Wilayah yang benar. Untuk menaikkan alarm pengujian, masukkan kode berikut, ganti <alarm resource name> dengan nama sumber daya alarm yang tercantum pada langkah 3.

    aws cloudwatch set-alarm-state --alarm-name <alarm resource name> --state-value ALARM --state-reason 'Test setup'

    Contoh berikut menunjukkan kode dengan nama sumber daya alarm.

    aws cloudwatch set-alarm-state --alarm-name tenantcluster-tenant123-alarm --state-value ALARM --state-reason 'Test setup'
  5. Buka konsol dan arahkan ke konsol Amazon SQS. Pilih nama sumber daya Amazon SQS yang diidentifikasi pada langkah 3. Ikuti petunjuk dokumentasi AWS untuk menerima dan menghapus pesan pengujian dari alarm yang dimunculkan pada langkah 4.

Pengembang aplikasi, administrator AWS, AWS DevOps

Hapus tumpukan penyewa.

Untuk menghapus tumpukan penyewa, kirim permintaan curl berikut.

curl -X DELETE <TenantOnboardingAPIEndpoint* from CDK Output>tenant/<Tenant Name from previous step>

Ubah pemegang tempat <TenantOnboardingAPIEndpoint* from CDK Output> ke nilai aktual dari AWS CDK, dan ubah <Tenant Name from previous step> ke nilai aktual dari langkah pembuatan penyewa sebelumnya, seperti yang ditunjukkan pada contoh berikut.

curl -X DELETE https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/tenant/Tenant123

Contoh berikut menunjukkan output.

{"message": "Tenant destroyed - 5/4/2022 7:14:48 AM"}
Pengembang aplikasi, AWS DevOps, administrator AWS

Verifikasi penghapusan tumpukan untuk penyewa yang ada.

Untuk memverifikasi bahwa tumpukan penyewa yang ada telah dihapus, lakukan langkah-langkah berikut:

  1. Buka konsol dan navigasikan ke CloudFormation konsol.

  2. Di navigasi kiri, verifikasi bahwa tumpukan yang ada dengan nama penyewa tidak lagi ada di konsol (jika CloudFormation konsol diatur untuk hanya menampilkan tumpukan Aktif) atau sedang dalam proses dihapus. Jika tumpukan tidak lagi ada di CloudFormation konsol, gunakan daftar tarik-turun untuk mengubah pengaturan konsol dari Aktif ke Dihapus untuk melihat tumpukan yang dihapus dan verifikasi bahwa tumpukan berhasil dihapus.

Pengembang aplikasi, administrator AWS, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Hancurkan lingkungan.

Sebelum tumpukan dibersihkan, pastikan hal berikut:

  • Semua catatan di DynamoDB dihapus baik melalui operasi penghapusan penyewa sebelumnya atau melalui konsol DynamoDB atau API. Setiap penghapusan catatan penyewa akan memulai pembersihan mitra AWS-nya. CloudFormation  

  • Semua CloudFormation tumpukan AWS berbasis penyewa dibersihkan (jika logika pembersihan pemicu DynamoDB gagal) di konsol AWS. CloudFormation

Setelah pengujian selesai, AWS CDK dapat digunakan untuk menghancurkan semua tumpukan dan sumber daya terkait dengan menjalankan perintah berikut.

cdk destroy --all;

Jika Anda membuat profil AWS untuk kredensialnya, gunakan profil tersebut.

Konfirmasikan prompt penghapusan tumpukan untuk menghapus tumpukan.

Administrator AWS, AWS DevOps

Bersihkan CloudWatch Log Amazon.

Proses penghapusan tumpukan tidak akan membersihkan CloudWatch Log (grup log dan log) yang dihasilkan oleh tumpukan. Bersihkan CloudWatch sumber daya secara manual dengan menggunakan CloudWatch konsol atau API.

Pengembang aplikasi, AWS DevOps, administrator AWS

Sumber daya terkait

Informasi tambahan

Tumpukan teknologi bidang kontrol

Kode CDK yang ditulis dalam.NET digunakan untuk menyediakan infrastruktur bidang kontrol, yang terdiri dari sumber daya berikut:

  1. API Gateway

    Berfungsi sebagai titik masuk REST API untuk tumpukan bidang kontrol.

  2. Fungsi Lambda on-boarding penyewa

    Fungsi Lambda ini diprakarsai oleh API Gateway menggunakan metode m.

    Permintaan API metode POST menghasilkan (tenant name,tenant description) yang dimasukkan ke dalam tabel DynamoDBTenant Onboarding.

    Dalam contoh kode ini, nama penyewa juga digunakan sebagai bagian dari nama tumpukan penyewa dan nama sumber daya dalam tumpukan itu. Ini untuk membuat sumber daya ini lebih mudah diidentifikasi. Nama penyewa ini harus unik di seluruh pengaturan untuk menghindari konflik atau kesalahan. Pengaturan validasi masukan terperinci dijelaskan dalam dokumentasi peran IAM dan bagian Batasan.

    Proses persistensi ke tabel DynamoDB akan berhasil hanya jika nama penyewa tidak digunakan dalam catatan lain dalam tabel.

    Nama penyewa dalam hal ini adalah kunci partisi untuk tabel ini, karena hanya kunci partisi yang dapat digunakan sebagai ekspresi PutItem kondisi.

    Jika nama penyewa tidak pernah direkam sebelumnya, catatan akan berhasil disimpan ke dalam tabel.

    Namun, jika nama penyewa sudah digunakan oleh catatan yang ada dalam tabel, operasi akan gagal dan memulai pengecualian DynamoDB. ConditionalCheckFailedException Pengecualian akan digunakan untuk mengembalikan pesan kegagalan (HTTP BadRequest) yang menunjukkan bahwa nama penyewa sudah ada.

    Permintaan DELETE metode API akan menghapus catatan untuk nama penyewa tertentu dari tabel Tenant Onboardin g.

    Penghapusan catatan DynamoDB dalam contoh ini akan berhasil bahkan jika catatan tidak ada.

    Jika catatan target ada dan dihapus, itu akan membuat catatan aliran DynamoDB. Jika tidak, tidak ada catatan hilir yang akan dibuat.

  3. Penyewa on-boarding DynamoDB, dengan Amazon DynamoDB Streams diaktifkan

    Ini mencatat informasi metadata penyewa, dan penyimpanan atau penghapusan catatan apa pun akan mengirim aliran hilir ke fungsi Lambda. Tenant Infrastructure 

  4. Infrastruktur penyewa fungsi Lambda

    Fungsi Lambda ini diprakarsai oleh catatan aliran DynamoDB dari langkah sebelumnya. Jika record adalah untuk suatu INSERT peristiwa, ia memanggil AWS CloudFormation untuk membuat infrastruktur penyewa baru dengan CloudFormation template yang disimpan dalam bucket S3. Jika catatan untukREMOVE, itu memulai penghapusan tumpukan yang ada berdasarkan bidang rekaman aliran. Tenant Name

  5. Ember S3

    Ini untuk menyimpan CloudFormation template.

  6. Peran IAM untuk setiap fungsi Lambda dan peran layanan untuk CloudFormation

    Setiap fungsi Lambda memiliki peran IAM yang unik dengan izin hak istimewa paling sedikit untuk mencapai tugasnya. Misalnya, fungsi Tenant On-boarding Lambda memiliki read/write akses ke DynamoDB, dan fungsi Tenant Infrastructure Lambda hanya dapat membaca aliran DynamoDB.

    Peran CloudFormation layanan khusus dibuat untuk penyediaan tumpukan penyewa. Peran layanan ini berisi izin tambahan untuk penyediaan CloudFormation tumpukan (misalnya, kunci AWS KMS). Ini membagi peran antara Lambda CloudFormation dan untuk menghindari semua izin pada satu peran (peran Lambda Infrastruktur).

    Izin yang memungkinkan tindakan kuat (seperti membuat dan menghapus CloudFormation tumpukan) dikunci dan hanya diizinkan pada sumber daya yang dimulai. tenantcluster- Pengecualiannya adalah AWS KMS, karena konvensi penamaan sumber dayanya. Nama penyewa yang dicerna dari API akan ditambahkan tenantcluster- bersama dengan pemeriksaan validasi lainnya (alfanumerik dengan tanda hubung saja, dan dibatasi hingga kurang dari 30 karakter agar sesuai dengan sebagian besar penamaan sumber daya AWS). Ini memastikan bahwa nama penyewa tidak akan secara tidak sengaja mengakibatkan gangguan tumpukan infrastruktur inti atau sumber daya.

Tumpukan teknologi penyewa

CloudFormation Template disimpan dalam ember S3. Template menyediakan kunci AWS KMS khusus penyewa, CloudWatch alarm, topik SNS, antrian SQS, dan kebijakan SQS.

Kunci AWS KMS digunakan untuk enkripsi data oleh Amazon SNS dan Amazon SQS untuk pesan mereka. Praktik keamanan untuk AwsSolutions- SNS2 dan AwsSolutions - SQS2 merekomendasikan agar Anda mengatur Amazon SNS dan Amazon SQS dengan enkripsi. Namun, CloudWatch alarm tidak berfungsi dengan Amazon SNS saat menggunakan kunci yang dikelola AWS, jadi Anda harus menggunakan kunci yang dikelola pelanggan dalam kasus ini. Untuk informasi selengkapnya, lihat Pusat Pengetahuan AWS.

Kebijakan SQS digunakan pada antrean Amazon SQS untuk memungkinkan topik SNS yang dibuat mengirimkan pesan ke antrian. Tanpa kebijakan SQS, akses akan ditolak. Untuk informasi selengkapnya, lihat dokumentasi Amazon SNS.