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.
-
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. -
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. -
Na nova pasta
cli
, crie um arquivo de texto chamadoalias
sem extensão de arquivo. Você pode criar o arquivoalias
usando a navegação de arquivos ou digitando o seguinte comando no terminal de sua preferência:$ touch ~/.aws/cli/alias
-
Entre
[toplevel]
na primeira linha. -
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
-
No console da AWS CLI, navegue até a pasta AWS CLI de configuração e abra o arquivo
alias
. -
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
-
Salve o arquivo.
Use a janela do terminal para adicionar o force-delete-product alias ao seu arquivo alias
-
Abra uma janela de terminal e execute o seguinte comando:
$ cat >> ~/.aws/cli/alias
-
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
-
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
-
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:
-
Criação e uso de aliases AWS CLI no Guia do Usuário AWS Command Line Interface(CLI).
-
Repositório do alias AWS CLI
do repositório git. -
AWSre:Invent 2016: O usuário AWS CLI efetivo
em. YouTube