Excluir produtos usando o AWS CLI - AWS Service Catalog

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

Excluir produtos usando o AWS CLI

AWS Service Catalog permite que você use o AWS Command Line Interface(AWS CLI) para excluir produtos do seu portfólio. A AWS CLI é uma ferramenta de código aberto que permite interagir com os serviços da AWS usando comandos no shell da linha de comando. O perfil AWS Service Catalog de exclusão forçada requer um alias da AWS CLI, que é um atalho que você pode criar na AWS CLI para encurtar comandos ou scripts que utiliza com frequência.

Pré-requisitos

  • 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 e Configuração básica. Usar, no mínimo, a AWS CLI versão 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.

  • Crie um alias da AWS CLI para chamadas de API Disassociation 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 alias AWS CLI para excluir produtos AWS Service Catalog

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

Crie um arquivo alias em sua pasta de configuração da AWS CLI.
  1. No console AWS CLI, 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.

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

  3. 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
  4. Entre [toplevel] na primeira linha.

  5. 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 console da AWS CLI, navegue até a pasta AWS CLI de configuração e abra o arquivo alias.

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

  2. Cole o script de alias na janela do terminal e pressione CTRL+D para sair do comando cat.

Ligue para o force-delete-product pseudônimo
  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 
                
  2. 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

Para obter mais informações sobre AWS CLI, usando aliases e excluindo produtos AWS Service Catalog, consulte os seguintes recursos: