Mengotomatiskan portofolio AWS Service Catalog dan penerapan produk dengan menggunakan 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.

Mengotomatiskan portofolio AWS Service Catalog dan penerapan produk dengan menggunakan AWS CDK

Sandeep Gawande, Viyoma Sachdeva, dan RAJNEESH TYAGI, Amazon Web Services

Ringkasan

AWS Service Catalog membantu Anda mengelola katalog layanan TI, atau produk secara terpusat, yang disetujui untuk digunakan di lingkungan AWS organisasi Anda. Kumpulan produk disebut portofolio, dan portofolio juga berisi informasi konfigurasi. Dengan AWS Service Catalog, Anda dapat membuat portofolio yang disesuaikan untuk setiap jenis pengguna di organisasi Anda dan kemudian memberikan akses ke portofolio yang sesuai. Pengguna tersebut kemudian dapat dengan cepat menyebarkan produk apa pun yang mereka butuhkan dari dalam portofolio.

Jika Anda memiliki infrastruktur jaringan yang kompleks, seperti arsitektur Multi-region dan multi-akun, Anda disarankan untuk membuat dan mengelola portofolio Service Catalog dalam satu akun sentral. Pola ini menjelaskan cara menggunakan AWS Cloud Development Kit (AWS CDK) untuk mengotomatiskan pembuatan portofolio Service Catalog di akun pusat, memberikan akses kepada pengguna akhir, dan kemudian, secara opsional, menyediakan produk dalam satu atau beberapa akun AWS target. ready-to-useSolusi ini membuat portofolio Service Catalog di akun sumber. Ini juga, secara opsional, menyediakan produk dalam akun target dengan menggunakan CloudFormation tumpukan AWS dan membantu Anda mengonfigurasi TagOptions produk:

  • AWS CloudFormation StackSets — Anda dapat menggunakannya StackSets untuk meluncurkan produk Service Catalog di beberapa Wilayah dan akun AWS. Dalam solusi ini, Anda memiliki opsi untuk menyediakan produk secara otomatis saat Anda menerapkan solusi ini. Untuk informasi selengkapnya, lihat Menggunakan AWS CloudFormation StackSets (Dokumentasi Service Catalog) dan StackSets konsep (CloudFormation dokumentasi).

  • TagOption library — Anda dapat mengelola tag pada produk yang disediakan dengan menggunakan TagOption library. A TagOptionadalah pasangan nilai kunci yang dikelola di AWS Service Catalog. Ini bukan tag AWS, tetapi berfungsi sebagai templat untuk membuat tag AWS berdasarkan tag TagOption. Untuk informasi selengkapnya, lihat TagOption library (Dokumentasi Service Catalog).

Prasyarat dan batasan

Prasyarat

  • Akun AWS aktif yang ingin Anda gunakan sebagai akun sumber untuk mengelola portofolio Service Catalog.

  • Jika Anda menggunakan solusi ini untuk menyediakan produk dalam satu atau beberapa akun target, akun target harus sudah ada dan aktif.

  • Izin AWS Identity and Access Management (IAM) untuk mengakses AWS Service Catalog, AWS CloudFormation, dan AWS IAM.

Versi produk

  • AWS CDK versi 2.27.0

Arsitektur

Tumpukan teknologi target

  • Portofolio Service Catalog di akun AWS terpusat

  • Produk Service Catalog dikerahkan di akun target

Arsitektur target

AWS CDK membuat portofolio Service Catalog dan menyediakan produk di akun target.
  1. Di akun portofolio (atau sumber), Anda memperbarui file config.json dengan akun AWS, Wilayah AWS, peran IAM, portofolio, dan informasi produk untuk kasus penggunaan Anda.

  2. Anda menerapkan aplikasi AWS CDK.

  3. Aplikasi AWS CDK mengasumsikan peran IAM penerapan dan membuat portofolio dan produk Service Catalog yang ditentukan dalam file config.json.

    Jika Anda mengonfigurasi StackSets untuk menyebarkan produk di akun target, proses akan berlanjut. Jika Anda tidak mengonfigurasi StackSets untuk menyediakan produk apa pun, maka prosesnya selesai.

  4. Aplikasi AWS CDK mengasumsikan peran StackSet administrator dan menerapkan set CloudFormation tumpukan AWS yang Anda tentukan dalam file config.json.

  5. Dalam akun target, StackSets mengasumsikan peran StackSet eksekusi dan ketentuan produk.

Alat

Layanan AWS

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

  • 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 Service Catalog membantu Anda mengelola katalog layanan TI secara terpusat yang disetujui untuk AWS. Pengguna akhir dapat dengan cepat men-deploy hanya layanan IT yang disetujui yang mereka butuhkan, mengikuti batasan yang ditetapkan oleh organisasi Anda.

Repositori kode

Kode untuk pola ini tersedia di GitHub, di aws-cdk-servicecatalog-automationrepositori. Repositori kode berisi file dan folder berikut:

  • cdk-sevicecatalog-app— Folder ini berisi aplikasi AWS CDK untuk solusi ini.

  • config - Folder ini berisi file config.json dan CloudFormation template untuk menyebarkan produk dalam portofolio Service Catalog.

  • config/config.json - File ini berisi semua informasi konfigurasi. Anda memperbarui file ini untuk menyesuaikan solusi ini untuk kasus penggunaan Anda.

  • config/templates - Folder ini berisi CloudFormation template untuk produk Service Center.

  • setup.sh - Skrip ini menyebarkan solusi.

  • uninstall.sh - Skrip ini menghapus tumpukan dan semua sumber daya AWS yang dibuat saat menerapkan solusi ini.

Untuk menggunakan kode sampel, ikuti instruksi di bagian Epik.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Instal AWS CDK Toolkit.

Pastikan Anda telah menginstal AWS CDK Toolkit. Masukkan perintah berikut untuk mengonfirmasi apakah sudah diinstal dan periksa versinya. 

cdk --version

Jika AWS CDK Toolkit tidak diinstal, maka masukkan perintah berikut untuk menginstalnya.

npm install -g aws-cdk@2.27.0

Jika versi AWS CDK Toolkit lebih awal dari 2.27.0, maka masukkan perintah berikut untuk memperbaruinya ke versi 2.27.0.

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps insinyur

Kloning repositori.

Masukkan perintah berikut. Di Kloning repositori di bagian Informasi tambahan, Anda dapat menyalin perintah lengkap yang berisi URL untuk repositori. Ini mengkloning aws-cdk-servicecatalog-automationrepositori dari. GitHub

git clone <repository-URL>.git

Ini membuat cd aws-cdk-servicecatalog-automation folder di direktori target. Masukkan perintah berikut untuk menavigasi ke folder ini.

cd aws-cdk-servicecatalog-automation
AWS DevOps, DevOps insinyur

Siapkan kredensi AWS.

Masukkan perintah berikut. Ini mengekspor variabel berikut, yang menentukan akun AWS dan Wilayah tempat Anda menerapkan tumpukan.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

Kredensi AWS untuk AWS CDK disediakan melalui variabel lingkungan.

AWS DevOps, DevOps insinyur

Konfigurasikan izin untuk peran IAM pengguna akhir.

Jika Anda akan menggunakan peran IAM untuk memberikan akses ke portofolio dan produk di dalamnya, peran harus memiliki izin yang akan diambil oleh prinsipal layanan servicecatalog.amazonaws.com. Untuk petunjuk tentang cara memberikan izin ini, lihat Mengaktifkan akses tepercaya dengan Service Catalog (dokumentasi AWS Organizations).

AWS DevOps, DevOps insinyur

Konfigurasikan peran IAM yang dibutuhkan oleh StackSets.

Jika Anda menggunakan StackSets untuk secara otomatis menyediakan produk di akun target, Anda perlu mengonfigurasi peran IAM yang mengelola dan menjalankan kumpulan tumpukan.

  1. Di akun sumber, konfirmasikan apakah AWSCloudFormationStackSetAdministrationRole sudah ada. Di akun target, konfirmasikan apakah AWSCloudFormationStackSetExecutionRole sudah ada. Jika peran ini sudah ada, Anda dapat melompat ke epik berikutnya.

  2. Ikuti petunjuk dalam Berikan izin yang dikelola sendiri (dokumentasi IAM) untuk membuat peran administrasi set tumpukan di akun portofolio dan membuat peran eksekusi di setiap akun target.

AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Buat CloudFormation template.

Di config/templates folder, buat CloudFormation template untuk produk apa pun yang ingin Anda sertakan dalam portofolio Anda. Untuk informasi selengkapnya, lihat Bekerja dengan CloudFormation templat AWS (CloudFormation dokumentasi).

Pengembang aplikasi, AWS DevOps, DevOps insinyur

Sesuaikan file konfigurasi.

Di config folder, buka file config.json dan tentukan parameter yang sesuai untuk kasus penggunaan Anda. Parameter berikut diperlukan kecuali dinyatakan lain:

Di portfolios bagian ini, tentukan parameter berikut untuk membuat satu atau beberapa portofolio Service Catalog:

  • portfolioName— Nama portofolio.

  • providerNameNama orang, tim, atau organisasi yang mengelola portofolio.

  • description— Penjelasan singkat tentang portofolio.

  • roles— (Opsional) Nama dari setiap peran IAM yang harus memiliki akses ke portofolio ini. Pengguna yang memiliki peran ini dapat mengakses produk dalam portofolio ini.

  • users— (Opsional) Nama setiap pengguna IAM yang harus memiliki akses ke portofolio ini dan produknya.

  • groups— (Opsional) Nama setiap grup pengguna IAM yang harus memiliki akses ke portofolio ini dan produknya.

Awas

Pengguna IAM memiliki kredensi jangka panjang, yang menghadirkan risiko keamanan. Untuk membantu mengurangi risiko ini, kami menyarankan agar Anda memberikan pengguna ini hanya izin yang mereka perlukan untuk melakukan tugas dan menghapus pengguna ini ketika mereka tidak lagi diperlukan.

penting

roles,users, dan groups semua parameter opsional, tetapi jika Anda tidak menentukan salah satu parameter ini, maka tidak ada yang dapat melihat produk portofolio di konsol Service Catalog. Tentukan setidaknya satu dari parameter ini. Untuk informasi selengkapnya, lihat Memberikan izin kepada pengguna akhir Service Catalog (Dokumentasi Service Catalog).

  • (Opsional) Di tagOption bagian ini, tentukan TagOptions untuk produk:

    • key— Nama TagOption kuncinya

    • value— Nilai string yang diizinkan untuk TagOption

    Untuk informasi selengkapnya, lihat TagOption library (Dokumentasi Service Catalog).

  • Di productsbagian ini, tentukan parameter berikut untuk produk:

    • portfolioName— Nama portofolio tempat Anda ingin menambahkan produk. Anda hanya dapat menentukan satu portofolio.

    • productName— Nama produk.

    • owner— Pemilik produk.

    • productVersionName— Nama versi produk dalam nilai string, sepertiv1.

    • templatePath— Jalur file untuk CloudFormation template untuk produk.

    • deployWithStackSets— (Opsional) Tentukan satu atau beberapa akun dan Wilayah tempat Anda ingin menggunakan StackSets untuk secara otomatis menyediakan produk dalam portofolio. Jika Anda menggunakan opsi penerapan ini, semua parameter berikut di bagian ini diperlukan:

      • accounts— Akun target.

      • regions— Daerah sasaran.

      • stackSetAdministrationRoleName— Nama peran IAM yang digunakan untuk mengelola konfigurasi. StackSets Jangan ubah nilai ini. Peran ini harus memiliki nama yang tepat ini.

      • stackSetExecutionRoleName— Nama peran IAM di akun target yang menyebarkan instance tumpukan. Jangan ubah nilai ini. Peran ini harus memiliki nama yang tepat ini.

Untuk contoh file konfigurasi yang telah selesai, lihat Contoh file konfigurasi di bagian Informasi tambahan.

Pengembang aplikasi, DevOps insinyur, AWS DevOps

Menyebarkan solusinya.

Masukkan perintah berikut. Ini menerapkan aplikasi AWS CDK dan menyediakan portofolio dan produk Service Catalog sebagaimana ditentukan dalam file config.json.

sh +x setup.sh
Pengembang aplikasi, DevOps insinyur, AWS DevOps

Verifikasi penyebaran.

Verifikasi penerapan yang berhasil dengan melakukan hal berikut:

  1. Masuk ke AWS Management Console dengan kredensyal yang dapat mengakses satu atau beberapa portofolio yang Anda tetapkan dalam file konfigurasi.

  2. Buka konsol Service Catalog di https://console.aws.amazon.com/servicecatalog/

  3. Di panel navigasi, di bawah Penyediaan, pilih Produk. Verifikasi bahwa Anda melihat daftar produk yang Anda tentukan untuk portofolio.

  4. Ikuti petunjuk dalam Meluncurkan produk (dokumentasi Service Catalog) untuk meluncurkan salah satu produk yang tersedia. Konfirmasikan bahwa versi dan tag produk yang tersedia cocok dengan nilai yang Anda berikan di file konfigurasi.

  5. Jika Anda memilih untuk secara otomatis menyediakan produk dalam satu atau beberapa akun target dengan menggunakan StackSets, lakukan hal berikut:

    1. Masuk dengan kredensyal yang memberi Anda izin untuk melihat produk yang disediakan di salah satu akun target.

    2. Di konsol Service Catalog, di panel navigasi, di bawah Penyediaan, pilih Produk yang disediakan.

    3. Konfirmasikan bahwa produk yang diharapkan muncul dalam daftar.

AWS Umum

(Opsional) Perbarui portofolio dan produk.

Jika Anda ingin menggunakan solusi ini untuk memperbarui portofolio atau produk atau untuk menyediakan produk baru:

  1. Buat perubahan yang diperlukan dalam file config.json.

  2. Tambahkan atau ubah CloudFormation templat apa pun sesuai kebutuhan di config/template folder.

  3. Menerapkan kembali solusinya.

Misalnya, Anda dapat menambahkan portofolio tambahan atau menyediakan lebih banyak sumber daya. Aplikasi AWS CDK hanya mengimplementasikan perubahan. Jika tidak ada perubahan pada portofolio atau produk yang digunakan sebelumnya, pemindahan tidak akan memengaruhi portofolio atau produk tersebut.

Pengembang aplikasi, DevOps insinyur, AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

(Opsional) Hapus sumber daya AWS yang digunakan oleh solusi ini.

Jika Anda ingin menghapus produk yang disediakan, ikuti petunjuk di Menghapus produk yang disediakan (dokumentasi Service Catalog).

Jika Anda ingin menghapus semua sumber daya yang dibuat oleh solusi ini, masukkan perintah berikut.

sh uninstall.sh
AWS DevOps, DevOps insinyur, Pengembang aplikasi

Sumber daya terkait

Informasi tambahan

Kloning repositori

Masukkan perintah berikut untuk mengkloning repositori dari. GitHub

git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git

Contoh file konfigurasi

Berikut ini adalah contoh file config.json dengan nilai contoh.

{ "portfolios": [ { "displayName": "EC2 Product Portfolio", "providerName": "User1", "description": "Test1", "roles": [ "<Names of IAM roles that can access the products>" ], "users": [ "<Names of IAM users who can access the products>" ], "groups": [ "<Names of IAM user groups that can access the products>" ] }, { "displayName": "Autoscaling Product Portfolio", "providerName": "User2", "description": "Test2", "roles": [ "<Name of IAM role>" ] } ], "tagOption": [ { "key": "Group", "value": [ "finance", "engineering", "marketing", "research" ] }, { "key": "CostCenter", "value": [ "01", "02", "03", "04" ] }, { "key": "Environment", "value": [ "dev", "prod", "stage" ] } ], "products": [ { "portfolioName": "EC2 Product Profile", "productName": "Ec2", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template1.json" }, { "portfolioName": "Autoscaling Product Profile", "productName": "autoscaling", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template2.json", "deployWithStackSets": { "accounts": [ "012345678901", ], "regions": [ "us-west-2" ], "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole", "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole" } } ] }