Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyediakan produk Terraform AWS Service Catalog dengan menggunakan repositori kode
Dr. Rahul Sharad Gaikwad dan Tamilselvan P, Amazon Web Services
Ringkasan
AWS Service Catalog mendukung penyediaan layanan mandiri dengan tata kelola untuk konfigurasi Terraform Anda. HashiCorp
Pola ini membantu Anda menerapkan AWS sumber daya dengan menggunakan kode Terraform. Kode Terraform di GitHub repositori diakses melalui Service Catalog. Dengan menggunakan pendekatan ini, Anda mengintegrasikan produk dengan alur kerja Terraform yang ada. Administrator dapat membuat portofolio Service Catalog dan menambahkan AWS Launch Wizard produk ke dalamnya dengan menggunakan Terraform.
Berikut ini adalah manfaat dari solusi ini:
Karena fitur rollback di Service Catalog, jika terjadi masalah selama penerapan, Anda dapat mengembalikan produk ke versi sebelumnya.
Anda dapat dengan mudah mengidentifikasi perbedaan antara versi produk. Ini membantu Anda menyelesaikan masalah selama penerapan.
Anda dapat mengonfigurasi koneksi repositori di Service Catalog, seperti ke GitHub atau. GitLab Anda dapat membuat perubahan produk secara langsung melalui repositori.
Untuk informasi tentang manfaat keseluruhan AWS Service Catalog, lihat Apa itu Service Catalog.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
A GitHub, BitBucket, atau repositori lain yang berisi file konfigurasi Terraform dalam format ZIP.
AWS Serverless Application Model Antarmuka Baris Perintah (AWS SAM CLI), diinstal.
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi.
Pergi, terinstal
. Python versi 3.9, diinstal.
AWS SAM CLI membutuhkan versi Python ini. Izin untuk menulis dan menjalankan AWS Lambda fungsi dan izin untuk mengakses dan mengelola produk dan portofolio Service Catalog.
Arsitektur

Diagram menunjukkan alur kerja berikut:
Saat konfigurasi Terraform siap, pengembang membuat file.zip yang berisi semua kode Terraform. Pengembang mengunggah file.zip ke dalam repositori kode yang terhubung ke Service Catalog.
Administrator mengaitkan produk Terraform ke portofolio di Service Catalog. Administrator juga membuat batasan peluncuran yang memungkinkan pengguna akhir untuk menyediakan produk.
Di Service Catalog, pengguna akhir meluncurkan AWS resource dengan menggunakan konfigurasi Terraform. Mereka dapat memilih versi produk mana yang akan digunakan.
Alat
Layanan AWS
AWS Lambdaadalah 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 Service Catalogmembantu Anda mengelola katalog layanan TI secara terpusat yang disetujui. AWS Pengguna akhir dapat dengan cepat men-deploy hanya layanan IT yang disetujui yang mereka butuhkan, mengikuti batasan yang ditetapkan oleh organisasi Anda.
Layanan lainnya
Go
adalah bahasa pemrograman open source yang didukung Google. Python adalah bahasa
pemrograman komputer tujuan umum.
Repositori kode
Jika Anda memerlukan contoh konfigurasi Terraform yang dapat Anda terapkan melalui Service Catalog, Anda dapat menggunakan konfigurasi di Amazon Macie Organization Setup Using Terraform GitHub repositori
Praktik terbaik
Alih-alih memberikan nilai untuk variabel dalam file konfigurasi Terraform (
terraform.tfvars), konfigurasikan nilai variabel saat meluncurkan produk melalui Service Catalog.Berikan akses ke portofolio hanya untuk pengguna atau administrator tertentu.
Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Memberikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi AWS Identity and Access Management (IAM).
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
(Opsional) Instal Docker. | Jika Anda ingin menjalankan AWS Lambda fungsi di lingkungan pengembangan Anda, instal Docker. Untuk petunjuk, lihat Menginstal Docker Engine | DevOps insinyur |
Instal AWS Service Catalog Mesin untuk Terraform. |
| DevOps insinyur, administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat koneksi ke GitHub repositori. |
| Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat produk Service Catalog. |
| Administrator AWS |
Buat portofolio. |
| Administrator AWS |
Tambahkan produk Terraform ke portofolio. |
| Administrator AWS |
Buat kebijakan akses. |
| Administrator AWS |
Buat kebijakan kepercayaan khusus. |
| Administrator AWS |
Tambahkan batasan peluncuran ke produk Service Catalog. |
| Administrator AWS |
Berikan akses ke produk. |
| Administrator AWS |
Luncurkan produk. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Validasi penerapan. | Ada dua mesin AWS Step Functions status untuk alur kerja penyediaan Service Catalog:
Anda memeriksa log untuk mesin
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus produk yang disediakan. |
| DevOps insinyur |
Lepaskan AWS Service Catalog Mesin untuk Terraform. |
| Administrator AWS |
Sumber daya terkait
AWS dokumentasi
Dokumentasi Terraform
Informasi tambahan
Kebijakan akses
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/servicecatalog:provisioning": "true" } } }, { "Action": [ "s3:CreateBucket*", "s3:DeleteBucket*", "s3:Get*", "s3:List*", "s3:PutBucketTagging" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources", "resource-groups:DeleteGroup", "resource-groups:Tag" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" } ] }
Kebijakan kepercayaan
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GivePermissionsToServiceCatalog", "Effect": "Allow", "Principal": { "Service": "servicecatalog.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id:root" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*" ] } } } ] }