

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
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk"></a>

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

## Ringkasan
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-summary"></a>

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](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/using-stacksets.html) (Dokumentasi Service Catalog) dan [StackSets konsep](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation dokumentasi).
+ **TagOption library** — Anda dapat mengelola tag pada produk yang disediakan dengan menggunakan TagOption library. A *TagOption*adalah 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](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/tagoptions.html) (Dokumentasi Service Catalog).

## Prasyarat dan batasan
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-prereqs"></a>

**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
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-architecture"></a>

**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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/e8f217a7-aec4-4c85-8f6b-f91995506be0/images/1f027b82-14c3-485a-909b-1544e974b90a.png)


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.

1. Anda menerapkan aplikasi AWS CDK.

1. **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.

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

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

## Alat
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-tools"></a>

**Layanan AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
+ [AWS CDK Toolkit adalah kit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) pengembangan cloud baris perintah yang membantu Anda berinteraksi dengan aplikasi AWS CDK Anda.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 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-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git)repositori. 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](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics).

## Praktik terbaik
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-best-practices"></a>
+ Peran IAM yang digunakan untuk menerapkan solusi ini harus mematuhi [prinsip hak istimewa paling sedikit (dokumentasi IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Patuhi [praktik terbaik untuk mengembangkan aplikasi cloud dengan AWS CDK](https://aws.amazon.com/blogs/devops/best-practices-for-developing-cloud-applications-with-aws-cdk/) (postingan blog AWS).
+ Patuhi [praktik CloudFormation terbaik AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html) (CloudFormation dokumentasi).

## Epik
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics"></a>

### Siapkan lingkungan Anda
<a name="set-up-your-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Instal AWS CDK Toolkit. | Pastikan Anda telah menginstal AWS CDK Toolkit. Masukkan perintah berikut untuk mengonfirmasi apakah sudah diinstal dan periksa versinya. <pre>cdk --version</pre><br />Jika AWS CDK Toolkit tidak diinstal, maka masukkan perintah berikut untuk menginstalnya.<pre>npm install -g aws-cdk@2.27.0</pre><br />Jika versi AWS CDK Toolkit lebih awal dari 2.27.0, maka masukkan perintah berikut untuk memperbaruinya ke versi 2.27.0.<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps insinyur | 
| Kloning repositori. | Masukkan perintah berikut. Di *Kloning repositori* di bagian [Informasi tambahan](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional), Anda dapat menyalin perintah lengkap yang berisi URL untuk repositori. Ini mengkloning [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation)repositori dari. GitHub<pre>git clone <repository-URL>.git</pre><br />Ini membuat `cd aws-cdk-servicecatalog-automation` folder di direktori target. Masukkan perintah berikut untuk menavigasi ke folder ini.<pre>cd aws-cdk-servicecatalog-automation</pre> | AWS DevOps, DevOps insinyur | 
| Siapkan kredensi AWS. | Masukkan perintah berikut. Ini mengekspor variabel berikut, yang menentukan akun AWS dan Wilayah tempat Anda menerapkan tumpukan.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre><br />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](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-servicecatalog.html#integrate-enable-ta-servicecatalog) (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.[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS DevOps, DevOps insinyur | 

### Sesuaikan dan terapkan solusinya
<a name="customize-and-deploy-the-solution"></a>


| Tugas | Deskripsi | Keterampilan 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) (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:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)<br />Untuk contoh file konfigurasi yang telah selesai, lihat *Contoh file konfigurasi* di bagian [Informasi tambahan](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional). | 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.**<pre>sh +x setup.sh</pre> | Pengembang aplikasi, DevOps insinyur, AWS DevOps | 
| Verifikasi penyebaran. | Verifikasi penerapan yang berhasil dengan melakukan hal berikut: [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS Umum | 
| (Opsional) Perbarui portofolio dan produk. | Jika Anda ingin menggunakan solusi ini untuk memperbarui portofolio atau produk atau untuk menyediakan produk baru:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)<br />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 | 

### Bersihkan solusinya
<a name="clean-up-the-solution"></a>


| Tugas | Deskripsi | Keterampilan 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](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) Catalog).<br />Jika Anda ingin menghapus semua sumber daya yang dibuat oleh solusi ini, masukkan perintah berikut.<pre>sh uninstall.sh</pre> | AWS DevOps, DevOps insinyur, Pengembang aplikasi | 

## Sumber daya terkait
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-resources"></a>
+ [Perpustakaan Konstruksi AWS Service Catalog](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_servicecatalog-readme.html) (AWS API Referensi)
+ [StackSets konsep](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation dokumentasi)
+ [AWS Service Catalog](https://aws.amazon.com/servicecatalog) (AWS marketing)
+ [Menggunakan Service Catalog dengan AWS CDK](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US/4-builders-devs/sc-cdk) (AWS workshop)

## Informasi tambahan
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional"></a>

**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"
            }
        }
    ]
}
```