Löschen von Produkten mit der AWS CLI - AWS Service Catalog

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Löschen von Produkten mit der AWS CLI

AWS Service Catalog ermöglicht Ihnen die Verwendung von AWS Command Line Interface (AWS CLI), um Produkte aus Ihrem Portfolio zu löschen. Die AWS CLI ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit den AWS-Services interagieren können. Die Funktion zum Löschen AWS Service Catalogerzwingen erfordert einen AWS CLI Alias . Dabei handelt es sich um eine Verknüpfung, die Sie in der erstellen können, AWS CLI um Befehle oder Skripts zu verkürzen, die Sie häufig verwenden.

Voraussetzungen

  • Installieren und Konfigurieren der AWS CLI. Weitere Informationen finden Sie unter Installieren oder Aktualisieren der neuesten Version von AWS CLI und Konfigurationsgrundlagen. Verwenden Sie eine AWS CLI-Mindestversion von 1.11.24 oder 2.0.0.

  • Der CLI-Alias für das Löschen von Produkten erfordert ein Bash-kompatibles Terminal und den JQ-Befehlszeilen-JSON-Prozessor. Weitere Informationen zur Installation des Befehlszeilen-JSON-Prozessors finden Sie unter Download jq.

  • Erstellen Sie einen AWS CLI Alias für BatchDisassociation-API-Aufrufe, sodass Sie ein Produkt in einem einzigen Befehl löschen können.

Um ein Produkt erfolgreich zu löschen, müssen Sie zuerst alle dem Produkt zugeordneten Ressourcen trennen. Beispiele für Produktressourcenzuordnungen sind Portfoliozuordnungen, Budgets, Tag-Optionen und Service-Aktionen. Wenn Sie die CLI zum Löschen eines Produkts verwenden, können Sie mit dem CLIforce-delete-product-Alias die Disassociate API aufrufen, um die Zuordnung aller Ressourcen aufzuheben, die die DeleteProduct API verhindern würden. Dadurch wird ein separater Aufruf für einzelne Zuordnungen vermieden.

Anmerkung

Die in den folgenden Verfahren gezeigten Dateipfade können je nachdem, welches Betriebssystem Sie für die Ausführung dieser Aktionen verwenden, variieren.

Erstellen eines AWS CLI Alias zum Löschen von AWS Service Catalog Produkten

Wenn Sie die AWS CLI zum Löschen eines AWS Service Catalog Produkts verwenden, können Sie mit dem CLIforce-delete-product-Alias die Disassociate API aufrufen, um die Zuordnung aller Ressourcen aufzuheben, die den DeleteProduct Aufruf verhindern würden.

Erstellen einer -aliasDatei in Ihrem AWS CLI Konfigurationsordner
  1. Navigieren Sie in der -AWS CLIKonsole zum Konfigurationsordner. Standardmäßig ist der Konfigurationsordnerpfad ~/.aws/ unter Linux und macOS oder %USERPROFILE%\.aws\ unter Windows.

  2. Erstellen Sie mithilfe der cli Dateinavigation oder durch Eingabe des folgenden Befehls in Ihrem bevorzugten Terminal einen Unterordner mit dem Namen :

    $ mkdir -p ~/.aws/cli

    Der resultierende Standardpfad für den cli Ordner ist ~/.aws/cli/ unter Linux und MacOS oder %USERPROFILE%\.aws\cli unter Windows.

  3. Erstellen Sie im neuen cli Ordner eine Textdatei alias mit dem Namen ohne Dateierweiterung. Sie können die alias Datei mithilfe der Dateinavigation oder durch Eingabe des folgenden Befehls in Ihrem bevorzugten Terminal erstellen:

    $ touch ~/.aws/cli/alias
  4. Geben Sie [toplevel] in die erste Zeile ein.

  5. Speichern Sie die Datei.

Als Nächstes können Sie den force-delete-product Alias zu Ihrer alias Datei hinzufügen, indem Sie das Aliasskript manuell in die Datei einfügen oder einen Befehl im Terminalfenster verwenden.

Manuelles Hinzufügen des force-delete-product Alias zu Ihrer alias Datei
  1. Navigieren Sie in der -AWS CLIKonsole zu Ihrem AWS CLI Konfigurationsordner und öffnen Sie die -aliasDatei.

  2. Geben Sie den folgenden Code-Alias in die Datei unter der [toplevel] Zeile ein:

    [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. Speichern Sie die Datei.

Verwenden Sie das Terminalfenster, um den force-delete-product Alias zu Ihrer alias Datei hinzuzufügen
  1. Öffnen Sie Ihr Terminalfenster und führen Sie den folgenden Befehl aus

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

  2. Fügen Sie das Aliasskript in das Terminalfenster ein und drücken Sie dann STRG+D, um den cat Befehl zu beenden.

Aufrufen des force-delete-product Alias
  1. Führen Sie in Ihrem Terminalfenster den folgenden Befehl aus, um den Alias Produkt löschen aufzurufen

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

    Das folgende Beispiel zeigt den force-delete-product Aliasbefehl und die daraus resultierende Antwort

    $ 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. Geben Sie einy, um zu bestätigen, dass Sie das Produkt löschen möchten.

Nach erfolgreichem Löschen des Produkts werden im Terminalfenster die folgenden Ergebnisse angezeigt

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

Weitere Ressourcen

Weitere Informationen zu AWS CLI, zur Verwendung von Aliassen und zum Löschen von AWS Service Catalog Produkten finden Sie in den folgenden Ressourcen: