Suppression de produits à l'aide du AWS CLI - AWS Service Catalog

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Suppression de produits à l'aide du AWS CLI

AWS Service Catalogvous permet d'utiliser le AWS Command Line Interface(AWS CLI) pour supprimer des produits de votre portefeuille. L'AWS CLI est un outil à code source libre qui vous permet d'interagir avec les services AWS à l'aide des commandes du shell de ligne de commande. La fonction AWS Service Catalog force-delete nécessite un AWS CLIalias, c'est-à-dire un raccourci que vous pouvez créer dans le AWS CLI pour raccourcir les commandes ou les scripts que vous utilisez fréquemment.

Prérequis

  • Installation et configuration de l'AWS CLI. Pour plus d'informations, consultez la section Installation ou mise à jour de la dernière version des principes de base de la configuration AWS CLI et de la configuration. Utilisez une AWS CLI version minimale de 1.11.24 ou 2.0.0.

  • L'alias CLI de suppression du produit nécessite un terminal compatible avec bash et le processeur JSON de ligne de commande JQ. Pour plus d'informations sur l'installation du processeur JSON en ligne de commande, consultez Download jq.

  • Créez un AWS CLI alias pour les appels d'DisassociationAPI par lots, ce qui vous permet de supprimer un produit en une seule commande.

Pour réussir à supprimer un produit, vous devez d'abord dissocier toutes les ressources associées au produit. Parmi les exemples d'associations de ressources de produits, citons les associations de portefeuilles, les budgets, les options de balise et les actions de service. Lorsque vous utilisez la CLI pour supprimer un produit, l'force-delete-productalias de la CLI vous permet d'appeler l'DisassociateAPI pour dissocier toutes les ressources susceptibles d'empêcher l'DeleteProductAPI. Cela permet d'éviter un appel distinct à des dissociations individuelles.

Note

Les chemins de fichiers indiqués dans les procédures ci-dessous peuvent varier en fonction du système d'exploitation que vous utilisez pour effectuer ces actions.

Création d'un AWS CLI alias pour supprimer AWS Service Catalog des produits

Lorsque vous utilisez le AWS CLI pour supprimer un AWS Service Catalog produit, l'force-delete-productalias CLI vous permet d'appeler l'DisassociateAPI pour dissocier toutes les ressources susceptibles d'empêcher l'DeleteProductappel.

Créez un alias fichier dans votre dossier AWS CLI de configuration
  1. Dans la AWS CLI console, accédez au dossier de configuration. Par défaut, le chemin du dossier de configuration est ~/.aws/ sous Linux et macOS, ou %USERPROFILE%\.aws\ sous Windows.

  2. Créez un sous-dossier nommé à cli l'aide de la navigation dans les fichiers ou en saisissant la commande suivante dans votre terminal préféré :

    $ mkdir -p ~/.aws/cli

    Le chemin par défaut du cli dossier obtenu est ~/.aws/cli/ sous Linux et macOS, ou %USERPROFILE%\.aws\cli sous Windows.

  3. Dans le nouveau cli dossier, créez un fichier texte nommé alias sans extension de fichier. Vous pouvez créer le alias fichier à l'aide de la navigation dans les fichiers ou en saisissant la commande suivante dans le terminal de votre choix :

    $ touch ~/.aws/cli/alias
  4. Entrez [toplevel] sur la première ligne.

  5. Enregistrez le fichier.

Vous pouvez ensuite ajouter l' force-delete-product alias à votre alias fichier en collant manuellement le script d'alias dans le fichier ou en utilisant une commande dans la fenêtre du terminal.

Ajoutez manuellement l' force-delete-product alias à votre alias fichier
  1. Dans la AWS CLI console, accédez à votre dossier AWS CLI de configuration et ouvrez le alias fichier.

  2. Entrez l'alias de code suivant dans le fichier, sous la [toplevel] ligne :

    [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. Enregistrez le fichier.

Utilisez la fenêtre du terminal pour ajouter l' force-delete-product alias à votre alias fichier
  1. Ouvrez la fenêtre de votre terminal et exécutez la commande suivante

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

  2. Collez le script d'alias dans la fenêtre du terminal, puis appuyez sur CTRL+D pour quitter la cat commande.

Appelez l' force-delete-product alias
  1. Dans la fenêtre de votre terminal, exécutez la commande suivante pour appeler l'alias de produit de suppression

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

    L'exemple ci-dessous montre la commande force-delete-product alias et la réponse qui en résulte

    $ 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. Entrez y pour confirmer que vous souhaitez supprimer le produit.

Une fois le produit supprimé avec succès, la fenêtre du terminal affiche les résultats suivants

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

Ressources supplémentaires

Pour plus d'informations sur AWS CLI l'utilisation d'alias et la suppression de AWS Service Catalog produits, consultez les ressources suivantes :