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 el AWS CLI
AWS Service Catalog le permite usar AWS Command Line Interface(AWS CLI) para eliminar productos de su cartera. AWS CLI Se trata de una herramienta de código abierto que permite interactuar con los AWS servicios mediante comandos de la consola de la línea de comandos. La función AWS Service Catalog force-delete requiere un AWS CLI alias, que es un atajo que se puede crear AWS CLI para abreviar los comandos o scripts que se utilizan 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 de la AWS CLI y Configuración básica. Utilice una AWS CLI versión mínima de 1.11.24 o 2.0.0.
-
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 AWS CLI alias para agrupar las llamadas a la
Disassociation
API, 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 AWS CLI alias para eliminar AWS Service Catalog productos
Cuando se utiliza AWS CLI para eliminar un AWS Service Catalog producto, el force-delete-product
alias de la CLI le permite llamar a la Disassociate
API para desasociar cualquier recurso que impida la DeleteProduct
llamada.
Cree un alias
archivo en la carpeta AWS CLI de configuración
-
En la AWS CLI consola, navegue hasta 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 sin extensión con el nombrealias
. 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 AWS CLI consola, vaya a la carpeta AWS CLI de configuración y abra el
alias
archivo. -
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.
Utilice la ventana del terminal para añadir el force-delete-product alias al 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 AWS Service Catalog productos, consulta los siguientes recursos:
-
Creación y uso de AWS CLI alias en la guía del usuario AWS Command Line Interface (CLI).
-
AWS CLI repositorio de alias (repositorio
git).