Generación de plantillas para los recursos existentes - AWS CloudFormation

Generación de plantillas para los recursos existentes

Con el generador de IaC de AWS CloudFormation (generador de infraestructura como código), puede generar una plantilla con los recursos de AWS aprovisionados en su cuenta que CloudFormation aún no administra. Use la plantilla para importar recursos en CloudFormation o replicar recursos en una nueva cuenta o región.

El proceso de generación de la IaC consta de varios pasos:

  1. Inicie un escaneo de su cuenta.

  2. Cree una plantilla, ya sea desde cero o mediante la plantilla de una pila existente como punto de partida.

  3. Agregue los recursos escaneados y los recursos relacionados con la plantilla mediante el asistente para agregar recursos.

  4. Importe los recursos que CloudFormation administrará como una pila o migre los recursos a una aplicación AWS CDK.

La característica de generador de IaC está disponible en todas las regiones comerciales y es compatible con muchos tipos de recursos comunes de AWS. Para obtener una lista completa, consulte Tipo de recurso compatible.

Consideraciones

Puede generar plantillas JSON o YAML para los recursos de AWS publicados en el registro de CloudFormation para aquellos recursos sobre los que tiene permisos de lectura. Las plantillas para la función del generador de IaC modelan los recursos en la nube de forma fiable y rápida sin tener que describir un recurso propiedad por propiedad.

En la siguiente tabla, se enumeran las cuotas disponibles para la característica de generación de IaC.

Nombre Valor

Número máximo de recursos que se pueden procesar en un análisis de cuenta

100000

Número de escaneos por día (para cuentas con menos de 10 000 recursos)

3

Número de escaneos por día (para cuentas con más de 10 000 recursos)

1

Número simultáneo de plantillas generadas por cuenta

5

Número simultáneo de recursos modelados para la generación de una plantilla.

5

Número total de recursos que se pueden modelar en una plantilla

500

Número máximo de plantillas generadas por cuenta

1 000

importante

El generador IaC solo admite los recursos compatibles con la API de Cloud Control en tu región. Para obtener más información, consulte Determinar si un tipo de recurso admite la API de Cloud Control en la Guía del usuario de la API de Cloud Control

Generación de una plantilla (consola)

En esta sección se describe cómo crear una plantilla, añadir recursos a la plantilla e importar recursos de la plantilla a una pila mediante la característica de generador de IaC.

Apertura de una plantilla nueva mediante el generador de IaC
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. Elija Generador de IaC en el panel de navegación.

    Página de la consola del generador de IaC
  3. En el panel de Escaneos, seleccione Iniciar un nuevo escaneo. Los escaneos detectan los recursos aprovisionados en su cuenta y la relación entre los recursos. Cuantos más recursos tenga en su cuenta en la región, más tardará el escaneo.

    Escaneos del panel de la página de la consola del generador de IaC
  4. En el panel Plantillas, elija Crear plantilla.

    Especifique la página de detalles de la plantilla del generador de IaC
    1. Seleccione Comenzar desde una plantilla nueva.

    2. En el panel Nombre de la plantilla, escriba un nombre para la plantilla generada.

    3. (Opcional) Configure la Política de eliminación y Actualice la política de reemplazo.

    4. Seleccione Siguiente para añadir los recursos escaneados a la plantilla.

Ingreso de recursos a una plantilla
  1. En la lista de recursos escaneados, navegue a través de la lista de recursos escaneados. Puede filtrar los recursos por identificador de recurso, tipo de recurso o etiquetas. Los filtros se incluyen entre sí.

    Agregue el panel de recursos escaneados del generador de IaC
  2. Seleccione el recurso o los recursos que desee agregar.

    Repita los pasos 1 y 2 hasta que haya agregado todos los recursos necesarios a la plantilla.

    Selección de los recursos escaneados al añadir el generador de IaC
  3. Seleccione Siguiente para salir de la página Añadir recursos escaneados y pasar a la página Añadir recursos relacionados.

  4. Revise una lista recomendada de recursos relacionados. Los recursos relacionados, como las instancias de Amazon EC2 y los grupos de seguridad, son interdependientes y, por lo general, pertenecen a la misma carga de trabajo. Seleccione los recursos relacionados que desee incluir en la plantilla de generada.

    nota

    Le sugerimos que añada todos los recursos relacionados a esta plantilla.

    Agregue recursos relacionados en el generador de IaC
  5. Revise los detalles de la plantilla, los recursos escaneados y los recursos relacionados. Para realizar cualquier cambio, elija Editar.

  6. Seleccione Crear plantilla para salir de la página Revisar y crear y crear la plantilla.

    Revise y cree la plantilla en el generador de IaC

Resultados: ha empezado a crear su plantilla de CloudFormation y ha añadido los recursos escaneados y relacionados.

Cómo importar los recursos que CloudFormation administrará como una pila
  1. Seleccione Importar a la pila y después elija Siguiente.

  2. Introduzca el nombre de la pila en el panel Especificar pila de la página Especificar detalles de la pila. Elija Siguiente.

  3. Revise e introduzca los parámetros de la pila. Elija Siguiente.

  4. Revise sus opciones en la página Revisar cambios y seleccione Siguiente.

  5. Revise los detalles en la página Revisar e importar y seleccione Importar recursos.

Resultados: todos los recursos agregados a la plantilla con el generador de IaC se importan a una pila de CloudFormation.

Generación de una plantilla (AWS CLI)

En esta sección se describe cómo buscar recursos, crear una plantilla, añadir recursos a la plantilla y actualizarla, así como también eliminar una plantilla con AWS CLI.

Cómo escanear recursos en su cuenta
  • Para buscar recursos en su cuenta en la región seleccionada, utilice la operación start-resource-scan.

    $ aws cloudformation start-resource-scan

    El comando devuelve lo siguiente:

    { "ResourceScanId": \ "arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60" }
Cómo describir el escaneo de recursos de la cuenta
  • Para describir el escaneo de los recursos de su cuenta, utilice la operación describe-resource-scan.

    $ aws cloudformation describe-resource-scan \ --resource-scan-id \ "arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"

    El comando devuelve lo siguiente:

    { "ResourceScanId" : \ "arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60", "Status": "complete", "StartTime": "2023-08-21T03:10:38.485000+00:00", "EndTime": "2023-08-21T03:20:28.485000+00:00", "PercentageCompleted": 100.0, "ResourceTypes": [ "AWS::EKS::Cluster", "AWS::S3::Bucket" ], }
Cómo ver una lista de todos los recursos del escaneo
  • Para enumerar los recursos que se encuentran en el escaneo, utilice la operación list-resource-scan-resources. La respuesta incluye una columna que indica si CloudFormation ya administra el recurso.

    $ aws cloudformation list-resource-scan-resources \ --resource-scan-id \ "arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60" \ --resource-identifier exampleResource

    El comando devuelve lo siguiente:

    { "Resources": [ { "ResourceType": "AWS::EKS::Cluster", "ResourceIdentifier": { "ClusterName": "exampleResourceCluster" } }, "ManagedByStack": false { "ResourceType": "AWS::S3::Bucket", "ResourceIdentifier": { "BucketName": "exampleResourceBucket" }, "ManagedByStack": false } ] }

    En este ejemplo, asuma que el resultado de list-resource-scan-resources se guarda en un archivo JSON denominado resources.json.

Cómo enumerar todos los recursos relacionados con los recursos escaneados
  • Para enumerar los recursos relacionados con los recursos escaneados, cree lotes de hasta 100 recursos escaneados y utilice la operación list-resource-scan-related-resources para cada lote. Tenga en cuenta que el resultado puede contener recursos duplicados en la lista.

    La respuesta incluye una columna que indica si CloudFormation ya administra el recurso. Se recomienda añadir todos los recursos relacionados a la plantilla.

    $ aws cloudformation list-resource-scan-related-resources \ --resource-scan-id \ "arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60" \ --resources file://resources.json

    El comando devuelve lo siguiente:

    { "RelatedResources": [ { "ResourceType": "AWS::EKS::Nodegroup", "ResourceIdentifier": { "NodegroupName": "exampleNodegroup" }, "ManagedByStack": false }, { "ResourceType": "AWS::IAM::Role", "ResourceIdentifier": { "RoleId": "arn:aws::iam::123456789012:role/S3Access" }, "ManagedByStack": false } ] }
    nota

    La lista de recursos de entrada no puede superar una longitud de 100. Para enumerar los recursos relacionados de más de 100 recursos, ejecute la operación en lotes de 100 y consolide los resultados.

    Suponga que el resultado de list-resource-scan-related-resources también se agrega al archivo JSON denominado resources.json.

Cómo generar una plantilla
  • Para generar una plantilla nueva sin recursos, utilice la operación create-generated-template y especifique el nombre de la plantilla.

    $ aws cloudformation create-generated-template \ --generated-template-name TemplateName

    El comando create-generated-template devuelve lo siguiente.

    { "Arn": \ "arn:aws:cloudformation:us-east-1:123456789012:generatedtemplate/7fc8512c-d8cb-4e02-b266-d39c48344e48", "Name": "TemplateName" }
Cómo actualizar la plantilla generada con recursos
  • Para actualizar la plantilla recién creada, puede especificar una lista de recursos que desee agregar. En este ejemplo, usamos el archivo resources.json. A continuación se muestra el archivo de texto JSON para resources.json:

    [ { "ResourceType": "AWS::EKS::Cluster", "LogicalResourceId":"Cluster", "ResourceIdentifier": { "ClusterName": "exampleResourceCluster" } }, { "ResourceType": "AWS::S3::Bucket", "LogicalResourceId":"Bucket", "ResourceIdentifier": { "BucketName": "exampleResourceBucket" } }, { "ResourceType": "AWS::EKS::Nodegroup", "LogicalResourceId":"Nodegroup", "ResourceIdentifier": { "NodegroupName": "exampleNodegroup" } }, { "ResourceType": "AWS::IAM::Role", "LogicalResourceId":"Role", "ResourceIdentifier": { "RoleId": "arn:aws::iam::123456789012:role/S3Access" } } ]

    Para actualizar la plantilla, utilice la operación update-generated-template, especifique el nombre de la pila y especifique el archivo de texto para añadir recursos a la plantilla. La opción --cloud-formation-template-configuration no está incluida, por lo que las políticas UpdateReplacePolicy y DeletionPolicy están configuradas para Retain de forma predeterminada.

    $ aws cloudformation update-generated-template \ --generated-template-name TemplateName \ --add-resources file://resources.json

    El comando update-generated-template devuelve lo siguiente.

    { "Arn": "arn:aws:cloudformation:us-east-1:123456789012:template/equipment-sorter", "Name": "TemplateName" }
Cómo eliminar la plantilla especificada por nombre de pila
  • Para eliminar la plantilla generada, utilice la operación delete-generated-template y especifique el nombre de la generación de la plantilla o el ARN de generación de la plantilla.

    $ aws cloudformation delete-generated-template \ --generated-template-name TemplateName

Generación y administración de plantillas con el AWS CDK

AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software de código abierto que puede utilizar para desarrollar, administrar e implementar los recursos de AWS CloudFormation mediante lenguajes de programación populares.

La CLI de AWS CDK proporciona una integración con el generador de IaC. Use el comando AWS CDK de la CLI de cdk migrate para generar una plantilla de AWS CloudFormation y crear una nueva aplicación CDK que contenga los recursos. A continuación, puede utilizar el AWS CDK para administrar los recursos y las implementaciones para AWS CloudFormation.

Para obtener más información, consulte Migrar a AWS CDK en la Guía para desarrolladores de AWS Cloud Development Kit (AWS CDK).