Eliminazione di prodotti utilizzando il AWS CLI - AWS Service Catalog

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Eliminazione di prodotti utilizzando il AWS CLI

AWS Service Catalogti consente di utilizzare il AWS Command Line Interface(AWS CLI) per eliminare prodotti dal tuo portafoglio. AWS CLI è uno strumento open source che consente di interagire con i servizi AWS utilizzando i comandi nella shell a riga di comando. La funzione AWS Service Catalog force-delete richiede un AWS CLIalias, che è una scorciatoia che puoi creare AWS CLI per abbreviare i comandi o gli script che usi di frequente.

Prerequisiti

Per eliminare correttamente un prodotto, devi prima dissociare tutte le risorse associate al prodotto. Esempi di associazioni di risorse di prodotto includono associazioni di portafoglio, budget, opzioni di tag e azioni di servizio. Quando si utilizza la CLI per eliminare un prodotto, l'force-delete-productalias CLI consente di chiamare l'DisassociateAPI per dissociare tutte le risorse che potrebbero impedire l'API. DeleteProduct In questo modo si evita una chiamata separata per le disassociazioni individuali.

Nota

I percorsi dei file illustrati nelle procedure seguenti possono variare a seconda del sistema operativo utilizzato per eseguire queste azioni.

Creazione di un AWS CLI alias per eliminare i prodotti AWS Service Catalog

Quando si utilizza AWS CLI per eliminare un AWS Service Catalog prodotto, l'force-delete-productalias CLI consente di chiamare l'DisassociateAPI per dissociare tutte le risorse che potrebbero impedire la chiamata. DeleteProduct

Crea un alias file nella tua cartella di configurazione AWS CLI
  1. Nella AWS CLI console, accedi alla cartella di configurazione. Per impostazione predefinita, il percorso della cartella di configurazione è ~/.aws/ su Linux e macOS o %USERPROFILE%\.aws\ su Windows.

  2. Crea una sottocartella denominata cli utilizzando la navigazione dei file o inserendo il seguente comando nel tuo terminale preferito:

    $ mkdir -p ~/.aws/cli

    Il percorso predefinito della cli cartella risultante è ~/.aws/cli/ su Linux e macOS o %USERPROFILE%\.aws\cli su Windows.

  3. Nella nuova cli cartella, create un file di testo denominato alias senza estensione. È possibile creare il alias file utilizzando la navigazione dei file o inserendo il seguente comando nel terminale preferito:

    $ touch ~/.aws/cli/alias
  4. Inserisci [toplevel] sulla prima riga.

  5. Salvare il file.

Successivamente, puoi aggiungere l' force-delete-product alias al tuo alias file incollando manualmente lo script di alias nel file o utilizzando un comando nella finestra del terminale.

Aggiungi manualmente l' force-delete-product alias al tuo file alias
  1. Nella AWS CLI console, accedi alla cartella di AWS CLI configurazione e apri il alias file.

  2. Inserisci il seguente alias di codice nel file, sotto la [toplevel] riga:

    [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. Salvare il file.

Usa la finestra del terminale per aggiungere l' force-delete-product alias al tuo file alias
  1. Apri la finestra del terminale ed esegui il seguente comando

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

  2. Incolla lo script di alias nella finestra del terminale, quindi premi CTRL+D per uscire dal comando. cat

Chiama l' force-delete-product alias
  1. Nella finestra del terminale, esegui il comando seguente per richiamare l'alias di eliminazione del prodotto

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

    L'esempio seguente mostra il comando force-delete-product alias e la risposta risultante

    $ 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. Inserisci y per confermare che desideri eliminare il prodotto.

Dopo aver eliminato con successo il prodotto, la finestra del terminale visualizza i seguenti risultati

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

Risorse aggiuntive

Per ulteriori informazioni sull'AWS CLIutilizzo degli alias e sull'eliminazione AWS Service Catalog dei prodotti, consulta le seguenti risorse: