

# Cómo iniciar un escaneo de recursos con el generador de IaC de CloudFormation
<a name="iac-generator-start-resource-scan"></a>

Antes de crear una plantilla a partir de recursos existentes, primero debe iniciar un escaneo de recursos para descubrir los recursos actuales y sus relaciones.

Puede iniciar un escaneo de recursos a través de una de las siguientes opciones. Recomendamos la primera opción para quienes utilizan el generador de IaC por primera vez.
+ **Escanear todos los recursos (escaneo completo)**: escanea todos los recursos existentes en la cuenta y región actuales. Este proceso de escaneo puede tardar hasta 10 minutos para 1000 recursos.
+ **Escanear recursos específicos (escaneo parcial)**: seleccione manualmente qué tipos de recursos escanear en la cuenta y la región actuales. Esta opción ofrece un proceso de escaneo más rápido y enfocado, lo que la hace ideal para el desarrollo iterativo de plantillas.

Una vez que se completa el escaneo, puede elegir qué recursos y sus recursos relacionados incluir al generar la plantilla. Al utilizar el escaneo parcial, los recursos relacionados solo estarán disponibles durante la generación de la plantilla si se cumple alguna de las siguientes condiciones:
+ Los seleccionó específicamente antes de iniciar el escaneo, o
+ Fueron necesarios para detectar los tipos de recursos que seleccionó. 

Por ejemplo, si selecciona un `AWS::EKS::Nodegroup` sin seleccionar el `AWS::EKS::Cluster`, el generador de IaC incluye automáticamente los recursos del `AWS::EKS::Cluster` en el escaneo, ya que para detectar el grupo de nodos es necesario detectar primero el clúster. En todos los demás casos, el escaneo solo incluirá los recursos que seleccione específicamente.

**nota**  
Antes de continuar, confirme que cuenta con los permisos necesarios para trabajar con el generador de IaC. Para obtener más información, consulte [Permisos de IAM necesarios para escanear recursos](generate-IaC.md#iac-generator-permissions).

**Topics**
+ [Inicio de un escaneo de recursos (consola)](#start-resource-scan-console)
+ [Inicio de un escaneo de recursos (AWS CLI)](#start-resource-scan-cli)

## Inicio de un escaneo de recursos (consola)
<a name="start-resource-scan-console"></a>

**Para iniciar un escaneo de recursos de todos los tipos de recursos (escaneo completo)**

1. Abra la [página del generador de IaC](https://console.aws.amazon.com/cloudformation/home?#iac-generator) de la consola de CloudFormation.

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS que contenga los recursos que desea escanear.

1. En el panel **Escaneos**, elija **Iniciar un nuevo escaneo** y, a continuación, elija **Escanear todos los recursos**. 

**Para iniciar un escaneo de recursos de tipos de recursos específicos (escaneo parcial)**

1. Abra la [página del generador de IaC](https://console.aws.amazon.com/cloudformation/home?#iac-generator) de la consola de CloudFormation.

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS que contenga los recursos que desea escanear.

1. En el panel **Escaneos**, elija **Iniciar un nuevo escaneo** y, a continuación, elija **Escanear recursos específicos**. 

1. En el cuadro de diálogo **Iniciar escaneo parcial**, seleccione hasta 100 tipos de recursos y, a continuación, elija **Iniciar escaneo**. 

## Inicio de un escaneo de recursos (AWS CLI)
<a name="start-resource-scan-cli"></a>

**Para iniciar un escaneo de recursos de todos los tipos de recursos (escaneo completo)**  
Utilice el siguiente comando [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html). Sustituya *us-east-1* por la Región de AWS que contenga los recursos que desea escanear.

```
aws cloudformation start-resource-scan --region us-east-1
```

Si se ejecuta correctamente, este comando devolverá el ARN del escaneo. Tenga en cuenta el ARN de la propiedad `ResourceScanId`. Lo necesita para crear la plantilla.

```
{
    "ResourceScanId":
      "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"
}
```

**Para iniciar un escaneo de recursos de tipos de recursos específicos (escaneo parcial)**

1. Use el comando [cat](https://en.wikipedia.org/wiki/Cat_(Unix)) para almacenar los tipos de recursos que desea escanear en un archivo JSON con el nombre `config.json` en el directorio principal. A continuación se muestra un ejemplo de configuración de escaneo que busca instancias de Amazon EC2, grupos de seguridad y todos los recursos de Amazon S3.

   ```
   $ cat > config.json
   [
     {
       "Types":[
         "AWS::EC2::Instance",
         "AWS::EC2::SecurityGroup",
         "AWS::S3::*"
       ]
     }
   ]
   ```

1. Utilice el comando [start-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/start-resource-scan.html) con la opción `--scan-filters`, junto con el archivo `config.json` que creó, para iniciar el análisis parcial. Sustituya *us-east-1* por la Región de AWS que contenga los recursos que desea escanear.

   ```
   aws cloudformation start-resource-scan --scan-filters file://config.json --region us-east-1
   ```

   Si se ejecuta correctamente, este comando devolverá el ARN del escaneo. Tenga en cuenta el ARN de la propiedad `ResourceScanId`. Lo necesita para crear la plantilla.

   ```
   {
       "ResourceScanId":
         "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60"
   }
   ```

**Para monitorear el progreso de un análisis de recursos**  
Utilice el comando [describe-resource-scan](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-resource-scan.html). Para la opción `--resource-scan-id`, reemplace el ARN de muestra por el ARN real.

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

Si se ejecuta correctamente, este comando proporciona información similar a la siguiente: 

```
{
    "ResourceScanId": "arn:aws:cloudformation:region:account-id: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::CloudFront::CachePolicy",
        "AWS::CloudFront::OriginRequestPolicy",
        "AWS::EC2::DHCPOptions",
        "AWS::EC2::InternetGateway",
        "AWS::EC2::KeyPair",
        "AWS::EC2::NetworkAcl",
        "AWS::EC2::NetworkInsightsPath",
        "AWS::EC2::NetworkInterface",
        "AWS::EC2::PlacementGroup",
        "AWS::EC2::Route",
        "AWS::EC2::RouteTable",
        "AWS::EC2::SecurityGroup",
        "AWS::EC2::Subnet",
        "AWS::EC2::SubnetCidrBlock",
        "AWS::EC2::SubnetNetworkAclAssociation",
        "AWS::EC2::SubnetRouteTableAssociation",
        ...
    ],
    "ResourcesRead": 676
}
```

Así luce la salida generada por un escaneo parcial: 

```
{
    "ResourceScanId": "arn:aws:cloudformation:region:account-id:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60",
    "Status": "COMPLETE",
    "StartTime": "2025-03-06T18:24:19.542000+00:00",
    "EndTime": "2025-03-06T18:25:23.142000+00:00",
    "PercentageCompleted": 100.0,
    "ResourceTypes": [
        "AWS::EC2::Instance",
        "AWS::EC2::SecurityGroup",
        "AWS::S3::Bucket",
        "AWS::S3::BucketPolicy"
    ],
    "ResourcesRead": 65,
    "ScanFilters": [
        {
            "Types": [
                "AWS::EC2::Instance",
                "AWS::EC2::SecurityGroup",
                "AWS::S3::*"
            ]
        }
    ]
}
```

Para obtener una descripción de los campos de la salida, consulte [DescribeResourceScan](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeResourceScan.html) en la *Referencia de la API de AWS CloudFormation*.