Liberación de recursos de AWS - Guía del usuario de Lumberyard

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.

Liberación de recursos de AWS

Después de un tiempo de pruebas intensivas o de desarrollo de proyectos de juegos de Lumberyard que utilizan Cloud Canvas, intentos de crear recursos enAWSpodría fallar o provocar bucles de reversión. Por ejemplo, es posible que reciba mensajes de error similares al siguiente:

CREATE_FAILED for Configuration (AWS::S3::Bucket with ID "bucket_id"). You have attempted to create more buckets than allowed.
CREATE_FAILED for ServiceApi (Custom::ServiceApi with ID "api_id"). Failed to create resource. Unexpected RuntimeError occurred: [...] An error occurred (BadRequestException) when calling the ImportRestApi operation: Maximum number of API operations has been reached. Please contact AWS if you need additional API operations.

Estos errores se producen cuando se superan los límites que algunos servicios de AWS tienen sobre la cantidad de recursos que puede crear por cuenta. El número de recursos permitidos por cuenta varía en función del servicio y del recurso. En la siguiente tabla, se muestran algunos límites para algunosAWSrecursos de que se utilizan habitualmente con Cloud Canvas:

Servicio de AWS Límite Enlace de información
Amazon S3 100 buckets por cuenta. Límites de Amazon Simple Storage Service (Amazon S3)
Amazon API Gateway 60 API por cuenta por región. Límites, precios y problemas conocidos de Amazon API Gateway
Amazon DynamoDB Inicialmente, 256 tablas por región. Límites en DynamoDB

Para obtener más información sobre los límites de recursos de una personaAWSservicios, consulte laAWSLímites del servicioen laAWSReferencia general de.

Si es necesario, puede ponerse en contacto con el servicio de atención al cliente de AWS para aumentar los límites de recursos para algunos servicios. Sin embargo, si dispone de recursos que ya no necesita, es posible que resulte más fácil simplemente quitarlos de la cuenta.

Para eliminar los recursos no utilizados de AWS, están disponibles las siguientes herramientas:

De ellas, la herramienta de limpieza de Cloud Canvas es la forma más rápida de eliminar recursos.

La herramienta de limpieza de Cloud Canvas

La instalación de Lumberyard incluye la herramienta de limpieza de Cloud Canvas. Puede utilizar la herramienta de limpieza de Cloud Canvas para eliminarAWSrecursos de su cuenta que tengan el prefijo que especifique. La herramienta se encuentra en el directorio lumberyard_version\dev\Tools\lmbr_aws\test.

Prerequisites

Para utilizar la herramienta de limpieza, debe cumplir los siguientes requisitos:

  • Tener acceso a un equipo Windows.

  • Instale Lumberyard en su equipo.

  • Instalar y configurar unAWSperfil de IAM de administrador de y establecer un nombre de perfil de administrador de forma predeterminada en su equipo.

    Para obtener más información, consultePaso 2: Cree un usuario de IAM para administrar el proyecto de Cloud CanvasyPaso 4: Añadir credenciales de administrador a Lumberyarden laTutorial de Cloud Canvas.

  • Instalación delAWS CLI,configurecon un perfil de IAM de administrador y establézcalo en su región preferida.

    Para obtener instrucciones acerca de cómo instalar la AWS CLI en Windows, consulte Instalación de la AWS Command Line Interface. La AWS CLI requiere Python. Puede utilizar la versión de Python distribuida como parte de Lumberyard, siempre que esté disponible en el de su sistemaPATH.

  • Utilice el administrador de recursos de Cloud Canvas o lalmbr_awspara crear una pila de proyectos de Cloud Canvas.

    nota

    Si utiliza una instalación nueva de Lumberyard y necesita limpiar los recursos para poder crear una pila de proyecto, siga los pasos que se describen a continuación.

    Para utilizar la herramienta de limpieza sin necesidad de crear una pila de proyecto

    1. En Project Configurator, establezca como proyecto predeterminado un proyecto que tenga habilitada la gema Common en Cloud Canvas.

    2. Determine el nombre del perfil de AWS que desee utilizar. Para detectar los perfiles existentes, puede examinar el archivo credentials o config en el directorio %SystemDrive%\Users\user_name\.aws\.

    3. Escriba el siguiente comando para configurar la AWS CLI para utilizar el perfil.

      aws configure --profile profile_name
    4. En el directorio lumberyard_installation\dev, ejecute el siguiente comando.

      lmbr_aws profile default --set profile_name

      De esta forma, se agrega el perfil a la sección DefaultProfile del archivo user-settings.json. A partir de la versión 1.15 de Lumberyard, la herramienta de limpieza de Cloud Canvas requiere que se establezca un perfil predeterminado en eluser-settings.jsonfile.

      Example

      El siguiente comando de ejemplo establece el perfil predeterminado de Cloud Canvas enCloudCanvasAdminpara el proyecto CloudGemDefectReportSample en la ubicación de instalación de LumberyardC:\Lumberyard\.

      C:\Lumberyard\dev>lmbr_aws profile default --set CloudCanvasAdmin

      El comando produce el resultado siguiente.

      [WAF] Engine Root: C:\Lumberyard\dev\ Saving C:\Lumberyard\dev\Cache\CloudGemDefectReportSample\pc\User\AWS\user-settings.json Default Profile: CloudCanvasAdmin

Uso de la herramienta de limpieza de Cloud Canvas

Antes de utilizar la herramienta de limpieza, tenga en cuenta los siguientes puntos:

  • No utilice la herramienta de limpieza si tiene un nombre de pila de proyecto que comience por un nombre de usuario de IAM que no desea eliminar. Si lo hace, puede dar lugar a la eliminación del usuario de IAM, de sus roles y de sus perfiles.

  • Cuando se elimina un recurso de AWS, elimina permanentemente los objetos que están almacenados en dicho recurso. Por ejemplo, si elimina un bucket de S3, se eliminan también todos los objetos que hay dentro del bucket.

Para utilizar la herramienta de limpieza de Cloud Canvas

  1. Abra una ventana del símbolo del sistema.

  2. Vaya al directorio lumberyard_version\dev.

  3. Determine el prefijo de la cadena (completo o parcial) que desea especificar para eliminar recursos. Para obtener más información, consulte Identificación de prefijos de Cloud Canvas.

  4. Escriba el siguiente comando:

    lmbr_aws --cleanup --prefix prefix_string

    Por ejemplo, el siguiente comando elimina recursos de AWS que empiezan por el prefijo cloudgemsamples.

    lmbr_aws --cleanup --prefix cloudgemsamples

    En función del número de recursos, el comando podría tardar un tiempo en completarse.

  5. Repita el comando hasta que la herramienta de limpieza ya no encuentre elementos que eliminar. Es posible que se requieran varias ejecuciones. La herramienta de limpieza intenta eliminar los recursos a medida que estén disponibles para su eliminación. Sin embargo, dado que la herramienta de limpieza intenta eliminar los recursos en orden de tipo, algunos recursos no están disponibles para su eliminación hasta que termine el script.

La--cleanupargumento tendrá prioridad sobre otroslmbr_awsargumentos.

nota

Lalmbr_aws --cleanupejecuta el mismo script que el comandocleanupscript de comandos que se encuentra en ellumberyard_version\dev\Tools\lmbr_awsdirectory. Cualquiera de los dos se puede utilizar con la misma lista de argumentos opcionales descritos en la lista siguiente.

Argumentos opcionales
Argumento Descripción
--aws-access-key La clave de acceso de AWS que se debe utilizar.
--aws-secret-key La clave de acceso secreta de AWS que se debe utilizar.
--delete-global-resources

Si el archivo de--regionSe especifica, elimina los recursos globales como, por ejemplo, funciones de IAM y buckets de Amazon S3. Si no se especifica el argumento --region, se hace caso omiso al argumento --delete-global-resources.

Este argumento es nuevo en Lumberyard versión 1.16.

--except exception [exception …] No elimine los recursos que comienzan por los prefijos especificados.
-h, --help Muestra un mensaje de ayuda y termina.
--prefix prefix [prefix ...] Elimina las pilas y buckets de Amazon S3 enAWSque tienen los prefijos especificados.
--profile profile El perfil de AWS que se va a utilizar. Se establece de forma predeterminada en el perfil de AWS predeterminado.
--region region La región de AWS que se va a utilizar. El valor predeterminado es us-east-1.

Identificación de prefijos de Cloud Canvas

Use las convenciones de recursos de Cloud Canvas de la en esta sección para identificar los recursos que desea eliminar. En general, elAWS Management Consoleutiliza los nombres que ha proporcionado para sus recursos al crearlos en Cloud Canvas Resource Manager olmbr_aws.

Pilas de proyecto

En Cloud Canvas, los nombres de pila de proyectos corresponden aAWS CloudFormationnombres de pila. Por ejemplo, si crea una pila de proyecto de Cloud Canvas denominadaCloudGemSamples, la pila de proyectos aparece en elAWS CloudFormationConsola decomoCloudGemSamples.

Recursos de pila de proyecto

Los recursos de una pila de proyecto de Cloud Canvas tienen el formato siguiente.

ProjectStackName-ResourceName

Por ejemplo, si unCloudGemSamplesLa pila de proyectos de Cloud Canvas tiene un bucket de Amazon S3 denominadoStorage, el depósito aparece en elConsola de Amazon S3comoCloudGemSamples-Storage.

Pilas de implementación

El nombre de una pila de implementación en AWS tiene el formato siguiente.

ProjectStackName-DeploymentStackName

Por ejemplo, si unCloudGemSamplesLa pila de proyecto de Cloud Canvas tiene una pila de implementación denominadaTestDeployment, la pila de despliegue aparece en elAWS CloudFormationConsola decomoCloudGemSamples-TestDeployment.

Recursos de pila de implementación

Los nombres de recurso de pila de implementación de Cloud Canvas tienen el formato siguiente.

ProjectStackName-DeploymentName-ResourceGroupOrGemName-ResourceName

Por ejemplo, suponga que unCloudGemSamplesLa pila de proyecto de Cloud Canvas tiene una pila de implementación denominadaTestDeployment. SiTestDeploymenttiene una gema en la nube llamadaTestGemque utiliza un bucket de Amazon S3 denominadoGemResourceBucket, el depósito aparece en elConsola de Amazon S3comoCloudGemSamples-TestDeployment-TestGem-GemResourceBucket.

Ver prefijos en la AWS Management Console

Puede utilizar la AWS Management Console para identificar los recursos que eliminar.

Para ver pilas de AWS CloudFormation

  1. Inicie sesión en la AWS Management Console y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. En la esquina superior derecha de la consola de administración, elija la región de AWS desde la que desea eliminar recursos.

  3. Identifique las pilas de AWS CloudFormation que ya no necesite.

  4. Utilice las reglas de nomenclatura de recursos de Cloud Canvas para determinar el prefijo que se va a utilizar con la herramienta de limpieza de Cloud Canvas.

Para identificar recursos huérfanos

  1. Abra el iconoAWSConsola depara el recurso que cree que está huérfano (por ejemplo, elConsola de Amazon S3o elAmazon API Gateway Console).

  2. En la esquina superior derecha de la consola de administración, elija la región de AWS desde la que desea eliminar recursos.

  3. Identifique un recurso que ya no necesite.

  4. Utilice las reglas de nomenclatura de recursos de Cloud Canvas para determinar el prefijo que se va a utilizar con la herramienta de limpieza de Cloud Canvas.

Notas relativas a la herramienta de limpieza

Cuando utilice la herramienta de limpieza de Cloud Canvas, tenga en cuenta lo siguiente.

  • No tiene que especificar un prefijo completo. La herramienta de limpieza toma la cadena que especifica y la hace coincidir con todos los recursos que tienen nombres que empiezan por dicha cadena. Por ejemplo, si especifica el prefijo Cloud, se eliminan todos los recursos que empiezan por Cloud (como CloudGemSamples), incluidos los recursos que ha creado AWS CloudFormation.

  • Un cubo de Amazon S3/aws_resourcePuede parecer que no se elimina a pesar de que está vacío y visible en la consola de administración.

    Un recurso que se ha eliminado puede tener una referencia obsoleta (fantasma) al mismo en la AWS Management Console. Si intenta utilizar la herramienta de limpieza o la AWS CLI para eliminar el recurso, recibe un error que indica que el recurso no existe. Por ejemplo, cuando intenta eliminar un bucket de S3 que ya se ha eliminado, se produce un mensaje de error similar al siguiente:

    ERROR An error occurred (NoSuchBucket) when calling the ListObjectVersion operation: The specified bucket does not exist.

    Este error confirma que el recurso se ha eliminado. El recurso ya no cuenta para calcular los límites de los recursos o los costos. AWS limpia automáticamente la referencia fantasma en un plazo de 24 a 72 horas.

  • Se pueden producir errores cuando se elimina un prefijo de pila de proyecto de Cloud Canvas para su proyecto de Lumberyard actual y, a continuación, utiliza el Administrador de recursos de Cloud Canvas olmbr_awscommands. Esto se debe a que los recursos que el proyecto espera ya no existen en AWS.

    Para resolver este problema, puede eliminar lalumberyard_version\dev\project_name\AWS\local-project-settings.json, que Cloud Canvas regenera automáticamente el Administrador de recursos de Cloud Canvas ylmbr_aws. Como alternativa, puede editar la sección ProjectStackId del archivo local-project-settings.json para eliminar los recursos enumerados que se han eliminado. También debería editar la sección Mappings del archivo lumberyard_version\dev\Cache\game\OS\user\AWS\user-settings.json para quitar referencias a recursos que se han eliminado.

AWS Command Line Interface (CLI)

Puede utilizar AWS Command Line Interface para quitar recursos de servicios de AWS específicos en su cuenta. En esta sección se enumeran algunos comandos útiles para lo siguiente:AWSservicios de que se utilizan habitualmente con Cloud Canvas:

Prerequisites

Para utilizar la AWS CLI, debe cumplir los siguientes requisitos:

Creación de archivos de script para eliminación por lotes

Una estrategia ad hoc generalmente útil consiste en utilizar un comando de AWS CLI específico del servicio para redirigir una lista de recursos a un archivo de texto. A continuación, puede utilizar el archivo de texto mediante programación o convertir el archivo en un script de shell de comandos de eliminación de AWS CLI. Las siguientes secciones ilustran esta técnica.

Amazon DynamoDB

Para mostrar la lista de las tablas de DynamoDB en la región actual en una ventana de símbolo del sistema, escriba el siguiente comando.

aws dynamodb list-tables

Para especificar una región distinta, utilice el argumento --region region_name, como en el ejemplo siguiente.

aws --region us-west-2 dynamodb list-tables

Para redirigir la lista de tablas a un archivo de texto, escriba un comando similar al siguiente.

aws dynamodb list-tables >ddb_table_list.txt

El comando de ejemplo redirige la salida a un archivo de texto denominado ddb_table_list.txt.

LaAWS CLIpara eliminar una tabla de DynamoDB utiliza la sintaxis siguiente.

aws dynamodb delete-table --table-name table_name

Para crear un script de shell que elimina muchas o todas las tablas a la vez, puede editar el archivo de texto que tiene la salida list-tables. Utilice una operación buscar y reemplazar para preceder cada nombre de tabla con el comando aws dynamodb delete-table. Realice otra búsqueda y reemplazo para quitar las comillas dobles y la coma al final de cada línea. El resultado es similar al siguiente ejemplo.

aws dynamodb delete-table --table-name CloudGemSamples-CGSamplesDeployment-CloudGemDynamicContent-hash-StagingSettingsTable aws dynamodb delete-table --table-name CloudGemSamples-CGSamplesDeployment-CloudGemInGameSurvey-hash-AnswerAggregations aws dynamodb delete-table --table-name CloudGemSamples-CGSamplesDeployment-CloudGemInGameSurvey-hash-Answers-hash aws dynamodb delete-table --table-name CloudGemSamples-CGSamplesDeployment-CloudGemInGameSurvey-hash-Questions aws dynamodb delete-table --table-name CloudGemSamples-CGSamplesDeployment-CloudGemInGameSurvey-hash-Surveys aws dynamodb delete-table --table-name CloudGemSamples-CGSamplesDeployment-CloudGemLeaderboard-hash-BannedPlayerTable

Después de cambiar el nombre del archivo con una extensión .cmd o .bat (Windows), puede ejecutar el script para eliminar todas las tablas de una sola vez.

Para obtener más información sobre los comandos de la CLI de DynamoDB, consultedynamodb.

AWS Lambda

Para enumerar las funciones de AWS Lambda, escriba el siguiente comando.

aws lambda list-functions

La sintaxis siguiente elimina una función Lambda.

aws lambda delete-function --function-name function_name

La sintaxis de eliminación solo requiere el nombre de la función, por lo tanto, para crear un script, filtre la salida JSON del comando list-functions en FunctionName. En Windows, puede utilizar la siguiente sintaxis para transferir la salida de list-functions al comando findstr y redirigir el resultado a un archivo de texto.

aws lambda list-functions | findstr /C:FunctionName >lambdafns.txt

El archivo resultante tiene este aspecto:

"FunctionName": "CloudGemSamples-CGSamplesDep-Clo-ServiceLambda-hash", "FunctionName": "CloudGemSamples-AH-CoreResourceTypes-AWS_SQS_Queue", "FunctionName": "CloudGemSamples-AH-CoreResourceTypes-Custom_ServiceApi", "FunctionName": "CloudGemSamples-CRH-CoreResourceTypes-Custom_Helper", "FunctionName": "CloudGemSamples-CRH-CoreResourceTypes-Custom_Interfac-hash", "FunctionName": "CloudGemSamples-CGSamplesDep-PackageVoiceLines-hash",

Como antes, utilice las operaciones de búsqueda y reemplazo para convertir el archivo en un script de eliminación, tal y como se muestra en el ejemplo siguiente.

aws lambda delete-function --function-name CloudGemSamples-CGSamplesDep13-Clo-ServiceLambda-hash aws lambda delete-function --function-name CloudGemSamples-AH-CoreResourceTypes-AWS_SQS_Queue aws lambda delete-function --function-name CloudGemSamples-AH-CoreResourceTypes-Custom_ServiceApi aws lambda delete-function --function-name CloudGemSamples-CRH-CoreResourceTypes-Custom_Helper aws lambda delete-function --function-name CloudGemSamples-CRH-CoreResourceTypes-Custom_Interfac-hash aws lambda delete-function --function-name CloudGemSamples-CGSamplesDep13-PackageVoiceLines-hash

Para obtener más información sobre los comandos de la CLI de AWS Lambda, consulte lambda.

Amazon API Gateway

Para eliminar una API de REST de API Gateway, debe especificar el ID de la API de REST.

aws apigateway delete-rest-api --rest-api-id rest_api_id

Para enumerar las API en API Gateway, utilice laget-rest-apiscomando.

aws apigateway get-rest-apis

En Windows, puede filtrar la salida del comando get-rest-apis por ID tal y como se muestra en el siguiente ejemplo.

aws apigateway get-rest-apis | findstr /C:id >gatewayapis.txt

Para obtener más información sobre los comandos de la CLI de API Gateway, consulteun pigateway.

Amazon S3

En Amazon S3, puededeletecubos vacíos pero debequitarCucharones no vacías.

nota

Los comandos presentados aquí solo funcionan en buckets sin control de versiones. Los buckets de Amazon S3 no tienen control de versiones de forma predeterminada. Para obtener más información, consulteUso del control de versionesen laGuía del usuario de Amazon Simple Storage Service.

Obtener una lista de nombres de bucket

Para obtener una lista de los nombres de bucket de S3, utilice el siguiente comando.

aws s3api list-buckets --query Buckets[].Name

Eliminación de un bucket

La siguiente sintaxis elimina un bucket de S3 vacío:

aws s3api delete-bucket --bucket bucket_name

Eliminación de un bucket

Para quitar un bucket no vacío, utilice el comando rb (quitar bucket) con el parámetro --force.

aws s3 rb s3://bucket_name --force

El siguiente comando de ejemplo elimina todos los objetos del bucket cloudgemsamples-cloudgemportal-hash y, a continuación, elimina el propio bucket.

aws s3 rb s3://cloudgemsamples-cloudgemportal-hash --force

Para obtener más información sobre los comandos de alto nivel de la CLI de Amazon S3, consultes3. Para obtener más información sobre los comandos de la CLI de Amazon S3 de más detallados, consultes3api.

Uso de AWS Management Console

Puede utilizar la AWS Management Console para eliminar manualmente recursos de AWS individuales de su cuenta. Sin embargo, si tiene muchos recursos para eliminar, la herramienta de limpieza de Cloud Canvas o laAWS CLIson alternativas más rápidas.

Para eliminar un bucket de Amazon S3

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Identifique un bucket que ya no necesite.

  3. Seleccione la entrada de línea del bucket identificado.

  4. Haga clic en el botón Empty Bucket (Vaciar bucket).

  5. Siga las instrucciones modales para vaciar el bucket y confirme.

  6. Haga clic en el botón Delete Bucket (Eliminar bucket).

  7. Siga las instrucciones modales para eliminar el bucket y confirme.

Para eliminar una API de API Gateway

  1. Inicie sesión en la AWS Management Console y abra la consola de API Gateway en https://console.aws.amazon.com/apigateway/.

  2. En la esquina superior derecha de la consola de administración, elija la región de AWS desde la que desea eliminar recursos.

  3. Identifique una API que ya no necesite.

  4. Haga clic en la API.

  5. Haga clic en el menú Actions (Acciones).

  6. Seleccione Delete API (Eliminar API) en el menú.

  7. Siga las instrucciones del cuadro de diálogo DeleteRestApi para confirmar la eliminación de la API.

Para eliminar pilas de AWS CloudFormation

  1. Inicie sesión en la AWS Management Console y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. En la esquina superior derecha de la consola de administración, elija la región de AWS desde la que desea eliminar recursos.

  3. Identifique una pila de AWS CloudFormation que ya no necesite.

  4. Seleccione la pila.

  5. Haga clic en el menú Actions (Acciones).

  6. Elija Delete Stack (Eliminar pila) en la lista desplegable.

    nota

    Si la protección de terminación está habilitada para la pila, debe quitar la protección antes de poder eliminar la pila.

  7. Siga las instrucciones para confirmar la eliminación de la pila.