Eliminar productos mediante la AWS CLI - AWS Service Catalog

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Eliminar productos mediante la AWS CLI

AWS Service Catalog le permite usar AWS Command Line Interface (AWS CLI) para eliminar productos de su cartera. La AWS CLI es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante el uso de comandos en el shell de la línea de comandos. La función AWS Service Catalog de eliminación forzada requiere un alias de AWS CLI, que es un acceso directo que se puede crear en la AWS CLI para acortar los comandos o los scripts que utiliza con frecuencia.

Requisitos previos

  • Instalar y configurar la AWS CLI. Para obtener más información, consulte Instalación o actualización de la versión más reciente AWS CLI y Configuración básica. Utilice como mínimo una versión de 1.11.24 o 2.0.0 de AWS CLI.

  • El alias CLI para eliminar el producto requiere un terminal compatible con bash y el procesador JSON de línea de comandos JQ. Para obtener más información sobre la instalación del procesador JSON de línea de comandos, consulte Descargar jq.

  • Cree un alias de AWS CLI para agrupar las llamadas a la API Disassociation, lo que le permitirá eliminar un producto con un solo comando.

Para eliminar correctamente un producto, primero debe disociar todos los recursos asociados al producto. Algunos ejemplos de asociaciones de recursos de productos incluyen las asociaciones de carteras, presupuestos, opciones de etiquetas y acciones de servicio. Cuando se utiliza la CLI para eliminar un producto, el alias force-delete-product de la CLI le permite llamar a la API Disassociate para disociar cualquier recurso que pudiera impedir la API DeleteProduct. Esto evita tener que llamar por separado a las disociaciones individuales.

nota

Las rutas de los archivos que se muestran en los procedimientos siguientes pueden variar en función del sistema operativo que utilice para realizar estas acciones.

Crear un alias de AWS CLI para eliminar productos AWS Service Catalog

Cuando se utiliza la AWS CLI para eliminar un producto AWS Service Catalog, el alias force-delete-product de la CLI le permite llamar a la API Disassociate para disociar cualquier recurso que impida la llamada DeleteProduct.

Cree un alias archivo en su AWS CLI archivo de configuración.
  1. En la consola AWS CLI, vaya a la carpeta de configuración. De forma predeterminada, la carpeta de configuración es ~/.aws/ en Linux o macOS o %USERPROFILE%\.aws\ en Windows.

  2. Cree una subcarpeta denominada cli mediante la navegación de archivos o introduciendo el siguiente comando en su terminal preferido:

    $ mkdir -p ~/.aws/cli

    La ruta predeterminada resultante de la carpeta cli es ~/.aws/cli/ en Linux o macOS o %USERPROFILE%\.aws\cli en Windows.

  3. En la nueva carpeta cli, cree un archivo de texto con el nombre alias sin extensión. Puede crear el archivo alias mediante la navegación de archivos o introduciendo el siguiente comando en la terminal que prefiera:

    $ touch ~/.aws/cli/alias
  4. Introduzca [toplevel] en la primera línea.

  5. Guarde el archivo.

A continuación, puede añadir el force-delete-product alias al alias archivo pegando manualmente el script del alias en el archivo o utilizando un comando en la ventana del terminal.

Añada manualmente el force-delete-product alias al archivo alias
  1. En la consola AWS CLI, vaya a su carpeta de configuración AWS CLI y abra el archivo alias.

  2. Introduzca el siguiente alias de código en el archivo, debajo de la línea [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. Guarde el archivo.

Usa la ventana del terminal para añadir el force-delete-product alias a tu alias archivo
  1. Abra una ventana del terminal y ejecute el siguiente comando:

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

  2. Pegue el script del alias en la ventana del terminal y, a continuación, pulse CTRL+D para salir del comando cat.

Llama al force-delete-product alias
  1. Ejecute los siguientes comandos en una ventana de su terminal para borrar el alias del producto.

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

    El siguiente ejemplo muestra el comando alias force-delete-product y su respuesta 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. Introduzca y para confirmar que desea eliminar el producto.

Tras eliminar correctamente el producto, la ventana de terminal mostrará los siguientes resultados

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

Recursos adicionales

Para obtener más información sobre AWS CLI, el uso de alias y la eliminación de productos AWS Service Catalog, consulte los siguientes recursos: