

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
<a name="product-delete-cli"></a>

AWS Service Catalog ti consente di utilizzare il [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)(AWS CLI) per eliminare prodotti dal tuo portafoglio. AWS CLI È uno strumento open source che consente di interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. La funzione AWS Service Catalog force-delete richiede un [AWS CLI alias](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html), che è una scorciatoia che è possibile creare AWS CLI per abbreviare i comandi o gli script che si utilizzano di frequente. 

## Prerequisiti
<a name="product-delete-cli-requirements"></a>
+ Istalla e configura la AWS CLI. [Per ulteriori informazioni, vedere [Installazione o aggiornamento della versione più recente di e Nozioni di base sulla configurazione](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) Usa una AWS CLI versione minima di 1.11.24 o 2.0.0. 
+ L'alias CLI di eliminazione del prodotto richiede un terminale compatibile con bash e il processore JSON a riga di comando JQ. [Per ulteriori informazioni sull'installazione del processore JSON a riga di comando, consulta Download jq.](https://stedolan.github.io/jq/download/) 
+ Crea un AWS CLI alias per le chiamate `Disassociation` API in batch, che ti consente di eliminare un prodotto con un solo comando. 

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-product`alias CLI consente di chiamare l'`Disassociate`API 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
<a name="product-delete-cli-alias"></a>

Quando si utilizza AWS CLI per eliminare un AWS Service Catalog prodotto, l'`force-delete-product`alias CLI consente di chiamare l'`Disassociate`API 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. 

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

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

1. Inserisci `[toplevel]` sulla prima riga.

1. Salvare il file. 

Successivamente, puoi aggiungere l' force-delete-productalias 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-productalias al tuo file `alias`**

1. Nella AWS CLI console, accedi alla cartella di AWS CLI configurazione e apri il `alias` file. 

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

1. Salvare il file. 

**Usa la finestra del terminale per aggiungere l' force-delete-productalias al tuo file `alias`**

1. Apri la finestra del terminale ed esegui il seguente comando

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

1. Incolla lo script di alias nella finestra del terminale, quindi premi *CTRL\$1D* per uscire dal comando. `cat` 

**Chiama l' force-delete-productalias**

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
   ```

1. 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
<a name="product-delete-cli-resources"></a>

Per ulteriori informazioni sull' AWS CLI utilizzo degli alias e sull'eliminazione AWS Service Catalog dei prodotti, consulta le seguenti risorse:
+ [Creazione e utilizzo di AWS CLI alias](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html) nella guida per l'*AWS Command Line Interface utente (CLI*). 
+ AWS CLI repository di [alias repository git](https://github.com/awslabs/awscli-aliases). 
+ [Eliminazione di prodotti. AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html) 
+ [AWS re:Invent 2016: The](https://youtu.be/Xc1dHtWa9-Q?t=1593) Effective User on. AWS CLI *YouTube* 