Menghapus produk menggunakan AWS CLI - AWS Service Catalog

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

Menghapus produk menggunakan AWS CLI

AWS Service Catalogmemungkinkan Anda menggunakan AWS Command Line Interface(AWS CLI) untuk menghapus produk dari portofolio Anda. AWS CLIIni 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 CLIalias, yang merupakan pintasan yang dapat Anda buat AWS CLI untuk mempersingkat perintah atau skrip yang sering Anda gunakan.

Prasyarat

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

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.

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

  3. 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
  4. Masukkan [toplevel] pada baris pertama.

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

  2. 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
  3. 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

  2. Tempel skrip alias ke jendela terminal, lalu tekan CTRL+D 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 
                
  2. 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

Untuk informasi selengkapnya tentangAWS CLI, menggunakan alias, dan menghapus AWS Service Catalog produk, tinjau sumber daya berikut: