

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Excluindo produtos usando o AWS CLI
<a name="product-delete-cli"></a>

AWS Service Catalog permite que você use o [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)(AWS CLI) para excluir produtos do seu portfólio. AWS CLI É uma ferramenta de código aberto que permite interagir com AWS serviços usando comandos em seu shell de linha de comando. A função AWS Service Catalog de exclusão forçada requer um [AWS CLI alias](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html), que é um atalho que você pode criar AWS CLI para encurtar comandos ou scripts que você usa com frequência. 

## Pré-requisitos
<a name="product-delete-cli-requirements"></a>
+ Instale e configure a AWS CLI. Para obter mais informações, consulte [Instalação ou atualização da versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Configuração básica](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html). Use uma AWS CLI versão mínima de 1.11.24 ou 2.0.0. 
+ O alias da CLI de exclusão do produto requer um terminal compatível com bash e o processador JQ de linha de comando JSON. Para obter mais informações sobre como instalar o processador JSON de linha de comando, consulte [Download jq](https://stedolan.github.io/jq/download/). 
+ Crie um AWS CLI alias para chamadas de `Disassociation` API em lote, permitindo que você exclua um produto em um único comando. 

Para excluir um produto com sucesso, você deve primeiro desassociar todos os recursos associados ao produto. Exemplos de associações de recursos de produtos incluem associações de portfólio, orçamentos, opções de tags e ações de atendimento. Ao usar a CLI para excluir um produto, o alias `force-delete-product` da CLI permite que você chame a API `Disassociate` para desassociar quaisquer recursos que impeçam a API `DeleteProduct`. Isso evita uma chamada separada para dissociações individuais. 

**nota**  
Os caminhos de arquivo mostrados nos procedimentos abaixo podem variar dependendo do sistema operacional usado para realizar essas ações. 

## Criação de um AWS CLI alias para excluir produtos AWS Service Catalog
<a name="product-delete-cli-alias"></a>

Ao usar o AWS CLI para excluir um AWS Service Catalog produto, o `force-delete-product` alias da CLI permite que você chame a `Disassociate` API para desassociar quaisquer recursos que impeçam a chamada. `DeleteProduct` 

**Crie um `alias` arquivo na sua pasta AWS CLI de configuração**

1. No AWS CLI console, navegue até a pasta de configuração. Por padrão, a pasta de configuração é `~/.aws/` no Linux e no macOS ou `%USERPROFILE%\.aws\` no Windows. 

1. Crie uma subpasta chamada `cli` usando a navegação de arquivos ou digitando o seguinte comando em seu terminal preferido: 

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

   O caminho padrão da pasta `cli` resultante é `~/.aws/cli/` no Linux e no macOS ou `%USERPROFILE%\.aws\cli` no Windows. 

1. Na nova pasta `cli`, crie um arquivo de texto chamado `alias` sem extensão de arquivo. Você pode criar o arquivo `alias` usando a navegação de arquivos ou digitando o seguinte comando no terminal de sua preferência: 

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

1. Entre `[toplevel]` na primeira linha.

1. Salve o arquivo. 

Em seguida, você pode adicionar o force-delete-product alias ao seu `alias` arquivo colando manualmente o script de alias no arquivo ou usando um comando na janela do terminal. 

**Adicione manualmente o force-delete-product alias ao seu arquivo `alias`**

1. No AWS CLI console, navegue até a pasta AWS CLI de configuração e abra o `alias` arquivo. 

1. Insira o seguinte alias de código no arquivo, abaixo da linha `[toplevel]`: 

   ```
                [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. Salve o arquivo. 

**Use a janela do terminal para adicionar o force-delete-product alias ao seu arquivo `alias`**

1. Abra uma janela de terminal e execute o seguinte comando:

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

1. Cole o script de alias na janela do terminal e pressione *CTRL\$1D* para sair do comando `cat`. 

**Ligue para o force-delete-product alias**

1. Na janela do terminal, execute os comandos seguintes para chamar o alias do produto excluído

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

   O exemplo abaixo mostra o comando alias `force-delete-product` e sua resposta resultante 

   ```
                 $ 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. Digite `y` para confirmar se você deseja excluir o produto. 

Depois de excluir o produto com sucesso, a janela do terminal exibe os seguintes resultados

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

## Recursos adicionais do
<a name="product-delete-cli-resources"></a>

Para obter mais informações sobre AWS CLI o uso de aliases e a exclusão de AWS Service Catalog produtos, consulte os seguintes recursos:
+ [Criação e uso de AWS CLI aliases](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html) no guia do *AWS Command Line Interface usuário (CLI*). 
+ AWS CLI repositório de [alias repositório](https://github.com/awslabs/awscli-aliases) git. 
+ [Excluir produtos do AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html). 
+ [AWS re:Invent 2016: O usuário AWS CLI efetivo](https://youtu.be/Xc1dHtWa9-Q?t=1593) em. *YouTube* 