

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

# Menghapus produk
<a name="productmgmt-delete"></a>

Saat Anda menghapus produk, AWS Service Catalog hapus semua versi produk dari setiap portofolio yang berisi produk. 

AWS Service Catalog memungkinkan Anda untuk menghapus produk menggunakan AWS Service Catalog konsol atau AWS CLI. Agar berhasil menghapus produk, Anda harus memisahkan semua sumber daya yang terkait dengan produk terlebih dahulu. Contoh asosiasi sumber daya produk termasuk asosiasi portofolio, anggaran TagOptions, dan Tindakan Layanan. 

**penting**  
 Anda tidak dapat memulihkan produk setelah dihapus. 

**Untuk menghapus produk menggunakan AWS Service Catalog konsol**

1.  Arahkan ke halaman **Portofolio** dan pilih portofolio yang berisi produk yang ingin Anda hapus. 

1.  Pilih produk yang ingin Anda hapus, lalu pilih **Hapus** di kanan atas panel produk. 

1. Untuk produk *tanpa sumber daya terkait*, konfirmasikan produk yang ingin Anda **hapus dengan memasukkan hapus** di kotak teks, lalu pilih **Hapus**. 

   Untuk produk *dengan sumber daya terkait*, lanjutkan ke langkah 4. 

1. Di jendela **Hapus produk**, tinjau tabel **Asosiasi**, yang menampilkan semua sumber daya terkait produk. AWS Service Catalog mencoba untuk memisahkan sumber daya ini saat Anda menghapus produk. 

1. Konfirmasikan bahwa Anda ingin menghapus produk dan menghapus semua sumber daya terkait dengan memasukkan **hapus** di kotak teks. 

1. Pilih **Putuskan dan hapus**. 

Jika AWS Service Catalog tidak dapat memisahkan semua sumber daya produk, produk tidak dihapus. Jendela **Delete product** menampilkan jumlah disasosiasi yang gagal dan deskripsi untuk setiap kegagalan. Untuk informasi selengkapnya tentang menyelesaikan disasosiasi sumber daya yang gagal saat menghapus produk, lihat *Menyelesaikan disasosiasi sumber daya yang gagal saat* menghapus produk di bawah ini. 

**Topics**
+ [Menghapus produk menggunakan AWS CLI](product-delete-cli.md)
+ [Menyelesaikan disasosiasi sumber daya yang gagal saat menghapus produk](product-delete-exception.md)

# Menghapus produk menggunakan AWS CLI
<a name="product-delete-cli"></a>

AWS Service Catalog memungkinkan Anda menggunakan [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)(AWS CLI) untuk menghapus produk dari portofolio Anda. AWS CLI Ini adalah alat open source yang memungkinkan Anda berinteraksi dengan AWS layanan menggunakan perintah di shell baris perintah Anda. Fungsi AWS Service Catalog force-delete memerlukan [AWS CLI alias](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html), yang merupakan pintasan yang dapat Anda buat AWS CLI untuk mempersingkat perintah atau skrip yang sering Anda gunakan. 

## Prasyarat
<a name="product-delete-cli-requirements"></a>
+ Instal dan konfigurasikan AWS CLI. Untuk informasi selengkapnya, lihat [Menginstal atau memperbarui versi terbaru dari](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) [dasar-dasar Konfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) dan. Gunakan AWS CLI versi minimum 1.11.24 atau 2.0.0. 
+ Alias CLI produk hapus memerlukan terminal yang kompatibel dengan bass dan prosesor JSON baris perintah JQ. [Untuk informasi selengkapnya tentang menginstal prosesor JSON baris perintah, lihat Download jq.](https://stedolan.github.io/jq/download/) 
+ Buat AWS CLI Alias untuk mengumpulkan panggilan `Disassociation` API, memungkinkan Anda menghapus produk dalam satu perintah. 

Agar berhasil menghapus produk, Anda harus memisahkan semua sumber daya yang terkait dengan produk terlebih dahulu. Contoh asosiasi sumber daya produk termasuk asosiasi portofolio, anggaran, Opsi Tag, dan Tindakan Layanan. Saat menggunakan CLI untuk menghapus produk, `force-delete-product` alias CLI memungkinkan Anda memanggil API untuk memisahkan sumber daya apa pun yang akan mencegah `Disassociate` API. `DeleteProduct` Ini menghindari panggilan terpisah untuk disasosiasi individu. 

**catatan**  
Jalur file yang ditunjukkan dalam prosedur di bawah ini dapat bervariasi tergantung pada sistem operasi yang Anda gunakan untuk melakukan tindakan ini. 

## Membuat AWS CLI alias untuk menghapus produk AWS Service Catalog
<a name="product-delete-cli-alias"></a>

Saat menggunakan AWS CLI untuk menghapus AWS Service Catalog produk, `force-delete-product` alias CLI memungkinkan Anda memanggil `Disassociate` API untuk memisahkan sumber daya apa pun yang akan mencegah panggilan. `DeleteProduct` 

**Buat `alias` file di folder AWS CLI konfigurasi Anda**

1. Di AWS CLI konsol, arahkan ke folder configuraiton. Secara default, jalur folder konfigurasi ada `~/.aws/` di Linux dan macOS, atau `%USERPROFILE%\.aws\` di Windows. 

1. Buat sub-folder bernama `cli` menggunakan navigasi file atau dengan memasukkan perintah berikut di terminal pilihan Anda: 

   ```
                $ mkdir -p ~/.aws/cli
   ```

   Jalur default `cli` folder yang dihasilkan ada `~/.aws/cli/` di Linux dan macOS, atau `%USERPROFILE%\.aws\cli` di Windows. 

1. Di `cli` folder baru, buat file teks bernama `alias` tanpa ekstensi file. Anda dapat membuat `alias` file menggunakan navigasi file atau dengan memasukkan perintah berikut di terminal pilihan Anda: 

   ```
                 $ touch ~/.aws/cli/alias
   ```

1. Masukkan `[toplevel]` pada baris pertama.

1. Simpan file tersebut. 

Selanjutnya, Anda dapat menambahkan force-delete-product alias ke `alias` file Anda dengan menempelkan skrip alias secara manual ke dalam file, atau dengan menggunakan perintah di jendela terminal. 

**Tambahkan force-delete-product alias ke file Anda `alias` secara manual**

1. Di AWS CLI konsol, navigasikan ke folder AWS CLI konfigurasi Anda dan buka `alias` file. 

1. Masukkan alias kode berikut ke dalam file, di bawah `[toplevel]` baris: 

   ```
                [command servicecatalog]
             	 force-delete-product =
             	   !f() {
             	     if [ "$#" -ne 1 ]; then
             	         echo "Illegal number of parameters"
             	         exit 1
             	     fi
             	 
             	     if [[ "$1" != prod-* ]]; then
             	        echo "Please provide a valid product id."
             	        exit 1
             	     fi
             	 
             	     productId=$1
             	     describeProductAsAdminResponse=$(aws servicecatalog describe-product-as-admin --id $productId)
             	     listPortfoliosForProductResponse=$(aws servicecatalog list-portfolios-for-product --product-id $productId)
             	 
             	     tagOptions=$(echo "$describeProductAsAdminResponse" | jq -r '.TagOptions[].Id')
             	     budgetName=$(echo "$describeProductAsAdminResponse" | jq -r '.Budgets[].BudgetName')
             	     portfolios=$(echo "$listPortfoliosForProductResponse" | jq -r '.PortfolioDetails[].Id')
             	     provisioningArtifacts=$(echo "$describeProductAsAdminResponse" | jq -r '.ProvisioningArtifactSummaries[].Id')
             	     provisioningArtifactServiceActionAssociations=()
             	 
             	     for provisioningArtifactId in $provisioningArtifacts; do
             	       listServiceActionsForProvisioningArtifactResponse=$(aws servicecatalog list-service-actions-for-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId)
             	       serviceActions=$(echo "$listServiceActionsForProvisioningArtifactResponse" | jq -r '[.ServiceActionSummaries[].Id] | join(",")')
             	       if [[ -n "$serviceActions" ]]; then
             	         provisioningArtifactServiceActionAssociations+=("${provisioningArtifactId}:${serviceActions}")
             	       fi
             	     done
             	 
             	     echo "Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated."
             	 
             	     echo "Portfolios:"
             	     for portfolioId in $portfolios; do
             	       echo "\t${portfolioId}"
             	     done
             	 
             	     echo "Budgets:"
             	     if [[ -n "$budgetName" ]]; then
             	       echo "\t${budgetName}"
             	     fi
             	 
             	     echo "Tag Options:"
             	     for tagOptionId in $tagOptions; do
             	       echo "\t${tagOptionId}"
             	     done
             	 
             	     echo "Service Actions on Provisioning Artifact:"
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       echo "\t${association}"
             	     done
             	 
             	     read -p "Are you sure you want to delete ${productId}? y,n "
             	     if [[ ! $REPLY =~ ^[Yy]$ ]]; then
             	        exit
             	     fi
             	 
             	     for portfolioId in $portfolios; do
             	       echo "Disassociating ${portfolioId}"
             	       aws servicecatalog disassociate-product-from-portfolio --product-id $productId --portfolio-id $portfolioId
             	     done
             	 
             	     if [[ -n "$budgetName" ]]; then
             	       echo "Disassociating ${budgetName}"
             	       aws servicecatalog disassociate-budget-from-resource --budget-name "$budgetName" --resource-id $productId
             	     fi
             	 
             	     for tagOptionId in $tagOptions; do
             	       echo "Disassociating ${tagOptionId}"
             	       aws servicecatalog disassociate-tag-option-from-resource --tag-option-id $tagOptionId --resource-id $productId
             	     done
             	 
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       associationPair=(${association//:/ })
             	       provisioningArtifactId=${associationPair[0]}
             	       serviceActionsList=${associationPair[1]}
             	       serviceActionIds=${serviceActionsList//,/ }
             	       for serviceActionId in $serviceActionIds; do
             	         echo "Disassociating ${serviceActionId} from ${provisioningArtifactId}"
             	         aws servicecatalog disassociate-service-action-from-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId --service-action-id $serviceActionId
             	       done
             	     done
             	 
             	     echo "Deleting product ${productId}"
             	     aws servicecatalog delete-product --id $productId
             	 
             	   }; f
   ```

1. Simpan file tersebut. 

**Gunakan jendela terminal untuk menambahkan force-delete-product alias ke file Anda `alias`**

1. Buka jendela terminal Anda dan jalankan perintah berikut

   `$ cat >> ~/.aws/cli/alias`

1. Tempel skrip alias ke jendela terminal, lalu tekan *CTRL\$1D* untuk keluar dari perintah. `cat` 

**Panggil force-delete-product alias**

1. Di jendela terminal Anda, jalankan perintah berikut untuk memanggil alias delete product

   `$ aws servicecatalog force-delete-product {product-id} `

   Contoh di bawah ini menunjukkan perintah `force-delete-product` alias dan respons yang dihasilkan 

   ```
                 $ aws servicecatalog force-delete-product prod-123
   ```

   ```
                 Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated.
                 Portfolios:
                   port-123
                 Budgets:
                     budgetName
                 Tag Options:
                     tag-123
                 Service Actions on Provisioning Artifact:
                     pa-123:act-123
                 Are you sure you want to delete prod-123? y,n
   ```

1. Masukkan `y` untuk mengonfirmasi bahwa Anda ingin menghapus produk. 

Setelah berhasil menghapus produk, jendela terminal menampilkan hasil berikut

```
          Disassociating port-123
          Disassociating budgetName
          Disassociating tag-123
          Disassociating act-123 from pa-123
          Deleting product prod-123
```

## Sumber daya tambahan
<a name="product-delete-cli-resources"></a>

Untuk informasi selengkapnya tentang AWS CLI, menggunakan alias, dan menghapus AWS Service Catalog produk, tinjau sumber daya berikut:
+ [Membuat dan menggunakan AWS CLI alias](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html) dalam panduan pengguna *AWS Command Line Interface (CLI*). 
+ AWS CLI repositori [alias repositori git](https://github.com/awslabs/awscli-aliases). 
+ [Menghapus AWS Service Catalog produk](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html). 
+ [AWS Re: Invent 2016: Pengguna yang Efektif AWS CLI di](https://youtu.be/Xc1dHtWa9-Q?t=1593). *YouTube* 

# Menyelesaikan disasosiasi sumber daya yang gagal saat menghapus produk
<a name="product-delete-exception"></a>

Jika upaya Anda sebelumnya untuk [menghapus produk](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html) gagal karena pengecualian disasosiasi sumber daya, tinjau daftar pengecualian dan resolusinya di bawah ini. 

**catatan**  
Jika Anda menutup jendela **Menghapus produk** sebelum menerima pesan pemutusan sumber daya yang gagal, Anda dapat mengikuti langkah satu hingga tiga di bagian *Hapus produk* untuk membuka jendela lagi.

**Untuk mengatasi pemisahan sumber daya yang gagal**

Di jendela **Hapus produk**, tinjau kolom **Status** tabel Asosiasi. Identifikasi pengecualian pemisahan sumber daya yang gagal dan resolusi yang disarankan:


****  

| Jenis pengecualian status | Penyebab | Resolusi | 
| --- | --- | --- | 
| Produk prod-\$1\$1\$1\$1 | AWS Service Catalog tidak dapat menghapus produk karena produk masih terkait TagOptions, anggaran, setidaknya satu ProvisioningArtifact dengan tindakan terkait, produk masih ditetapkan ke Portofolio, produk memiliki pengguna, atau produk memiliki kendala.  | Cobalah untuk menghapus produk lagi. | 
| Pengguna: username tidak berwenang untuk melakukan: | Pengguna yang mencoba menghapus produk tidak memiliki izin yang diperlukan untuk memisahkan sumber daya produk.  | AWS Service Catalog merekomendasikan untuk menghubungi administrator akun Anda untuk informasi selengkapnya tentang pemutusan sumber daya produk yang saat ini tidak memiliki izin untuk memisahkan diri.  | 