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.
-
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. -
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. -
En la nueva carpeta
cli
, cree un archivo de texto con el nombrealias
sin extensión. Puede crear el archivoalias
mediante la navegación de archivos o introduciendo el siguiente comando en la terminal que prefiera:$ touch ~/.aws/cli/alias
-
Introduzca
[toplevel]
en la primera línea. -
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
-
En la consola AWS CLI, vaya a su carpeta de configuración AWS CLI y abra el archivo
alias
. -
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
-
Guarde el archivo.
Usa la ventana del terminal para añadir el force-delete-product alias a tu alias
archivo
-
Abra una ventana del terminal y ejecute el siguiente comando:
$ cat >> ~/.aws/cli/alias
-
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
-
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
-
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:
-
Creación y uso de alias de AWS CLI en la guía del usuario de (CLI) AWS Command Line Interface.
-
Repositorio git de Repositorio de alias de AWS CLI
.