

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.

# Grabación de configuraciones con AWS Config recursos de terceros mediante AWS CLI
<a name="customresources"></a>

Registre las configuraciones de recursos de terceros o tipos de recursos personalizados, como servidores locales, herramientas de monitoreo de SAAS y sistemas de control de versiones (por ejemplo GitHub).

Puede publicar los datos de configuración de recursos de terceros AWS Config y ver y supervisar el inventario de recursos y el historial de configuración mediante la AWS Config consola y APIs. Puede utilizarlos AWS Config para administrar todos sus recursos y evaluar la configuración de los recursos para comprobar si cumplen con las mejores prácticas de uso de AWS Config reglas. También puede crear AWS Config reglas o paquetes de conformidad para evaluar estos recursos de terceros comparándolos con las mejores prácticas, las políticas internas y las políticas reglamentarias. 

**nota**  
Si lo ha configurado AWS Config para registrar todos los tipos de recursos, los recursos de terceros que se administran (crean, actualizan o eliminan) a través de ellos CloudFormation se registran automáticamente AWS Config como elementos de configuración.

**Requisito previo:** los recursos de terceros o el tipo de recurso personalizado deben registrarse utilizando CloudFormation. 

**Topics**
+ [Adición de recursos](customresources-adding.md)
+ [Registro de elementos de configuración](add-custom-resource-type-cli.md)
+ [Lectura de elementos de configuración](view-custom-resource-type-cli.md)
+ [Eliminación de recursos](delete-custom-resource-type.md)

# Añadir recursos de terceros a AWS Config
<a name="customresources-adding"></a>

Siga estos pasos para añadir un recurso de terceros a AWS Config.

**Topics**
+ [Paso 1: Configure el entorno de desarrollo](#customresources-setupdevenvironment)
+ [Paso 2: Modele su recurso](#customresources-modelresource)
+ [Paso 3: Genere artefactos](#generateartifactsforcfnsubmit)
+ [Paso 4: Registre el recurso](#customresources-registerresource)
+ [Paso 5: Publique la configuración del recurso](#customresources-publishresourceconfiguration)

## Paso 1: Configure el entorno de desarrollo
<a name="customresources-setupdevenvironment"></a>

Instalar y configurar la CloudFormation AWS CLI. AWS CLI Le permite modelar y registrar sus recursos personalizados. Para obtener más información, consulte [Recursos personalizados](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) y [¿Qué es la interfaz de línea de CloudFormation comandos?](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html) .

## Paso 2: Modele su recurso
<a name="customresources-modelresource"></a>

Cree un esquema de proveedor de recursos que cumpla y valide la configuración del tipo de recurso.

1. Utilice el comando `init` para crear el proyecto de proveedor de recursos y generar los archivos necesarios.

   ```
   $ cfn init
   Initializing new project
   ```

1. El comando `init` inicia un asistente que le guía por la configuración del proyecto, incluida la especificación del nombre del recurso. En este tutorial, especifique `MyCustomNamespace::Testing::WordPress`.

   ```
   Enter resource type identifier (Organization::Service::Resource): MyCustomNamespace::Testing::WordPress
   ```

1. Especifique el nombre de paquete del recurso.

   ```
   Enter a package name (empty for default 'com.custom.testing.wordpress'): com.custom.testing.wordpress 
   Initialized a new project in /workplace/user/custom-testing-wordpress
   ```
**nota**  
Para garantizar que cualquier dependencia del proyecto se resuelva correctamente, puede importar el proyecto generado a su IDE con ayuda de Maven.  
Por ejemplo, si utiliza el esquema IntelliJ IDEA, debe hacer lo siguiente:  
En el menú **Archivo**, elija **Nuevo** y, a continuación, **Proyecto de orígenes existentes**.
Navegue hasta el directorio del proyecto.
En el cuadro de diálogo **Importar proyecto**, elija **Importar proyecto desde un modelo externo** y, a continuación, elija **Maven**.
Seleccione **Siguiente** y acepte los valores predeterminados para completar la importación del proyecto.

1. Abra el archivo `mycustomnamespace-testing-wordpress.json` que contiene el esquema del recurso. Copie y pegue el siguiente esquema en `mycustomnamespace-testing-wordpress.json`.

   ```
   {
     "typeName": "MyCustomNamespace::Testing::WordPress",
     "description": "An example resource that creates a website based on WordPress 5.2.2.",
     "properties": {
       "Name": {
         "description": "A name associated with the website.",
         "type": "string",
         "pattern": "^[a-zA-Z0-9]{1,219}\\Z",
         "minLength": 1, "maxLength": 219
       },
       "SubnetId": {
         "description": "A subnet in which to host the website.",
         "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z",
         "type": "string"
       },
       "InstanceId": {
         "description": "The ID of the instance that backs the WordPress site.",
         "type": "string"
       },
       "PublicIp": {
         "description": "The public IP for the WordPress site.",
         "type": "string"
       }
     },
     "required": [ "Name", "SubnetId" ],
     "primaryIdentifier": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "readOnlyProperties": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "additionalProperties": false
   }
   ```

1. Valide el esquema.

   ```
   $ cfn validate
   ```

1. Actualice los archivos generados automáticamente en el paquete del proveedor de recursos para ver las actualizaciones del esquema del proveedor de recursos. Al iniciar el proyecto del proveedor de recursos, AWS CLI genera los archivos y el código de apoyo para el proveedor de recursos. Vuelva a generar el código para ver el esquema actualizado.

   ```
   $ cfn generate
   ```
**nota**  
Al usar Maven, el comando `generate` se ejecuta automáticamente antes de compilar el código como parte del proceso de compilación. Por lo tanto, sus cambios nunca se desincronizarán con el código generado.  
Tenga en cuenta que la CloudFormation CLI debe estar en una ubicación que Maven/the el sistema pueda encontrar. Para obtener más información, consulte [Setting up your environment for developing extensions](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html#resource-type-setup).

Para obtener más información sobre todo el proceso, consulte [Modeling Resource Providers for Use in CloudFormation](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-model.html).

## Paso 3: Genere artefactos
<a name="generateartifactsforcfnsubmit"></a>

Ejecute el siguiente comando para generar artefactos para `cfn submit`.

```
$ mvn package
```

## Paso 4: Registre el recurso
<a name="customresources-registerresource"></a>

AWS Config no requiere que los controladores del proveedor de recursos realicen el seguimiento de la configuración del recurso. Ejecute el siguiente comando para registrar el recurso.

```
$ cfn submit
```

Para obtener más información, consulte [Registrar proveedores de recursos para su uso en CloudFormation plantillas](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-register.html).

## Paso 5: Publique la configuración del recurso
<a name="customresources-publishresourceconfiguration"></a>

Determine la configuración de MyCustomNamespace: :Testing::WordPress.

```
{
  "Name": "MyWordPressSite",
  "SubnetId": "subnet-abcd0123",
  "InstanceId": "i-01234567",
  "PublicIp": "my-wordpress-site.com"
}
```

Determine el identificador de versión del esquema desde CloudFormation `DescribeType`. 

En AWS Config, puede ver si se acepta esta configuración de recursos. Para evaluar el cumplimiento, puede escribir AWS Config reglas con este recurso.

(Opcional) Para automatizar el registro de la configuración, implemente recopiladores de configuración periódicos o basados en cambios.

# Registre los elementos de configuración con AWS Config recursos de terceros mediante el AWS CLI
<a name="add-custom-resource-type-cli"></a>

Registre un elemento de configuración de un recurso de terceros o un tipo de recurso personalizado mediante el procedimiento que se muestra a continuación:

No olvide registrar el tipo de recurso `MyCustomNamespace::Testing::WordPress` con su esquema correspondiente.

1. Abra un símbolo del sistema o una ventana de terminal.

1. Introduzca el siguiente comando:

   ```
   aws configservice put-resource-config --resource-type MyCustomNamespace::Testing::WordPress --resource-id resource-001 --schema-version-id 00000001 --configuration  '{
     "Id": "resource-001",
     "Name": "My example custom resource.",
     "PublicAccess": false
   }'
   ```

**nota**  
Tal como se define en el esquema de tipos, se `writeOnlyProperties` eliminará de la configuración antes de que se registre AWS Config. Esto significa que estos valores no estarán presentes cuando la configuración se obtenga de la lectura APIs. Para obtener más información sobre `writeOnlyProperties`, consulte [Resource type schema](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html).

# Lea los elementos de configuración con AWS Config recursos de terceros mediante el AWS CLI
<a name="view-custom-resource-type-cli"></a>

Lea un elemento de configuración de un recurso de terceros o un tipo de recurso personalizado mediante el procedimiento que se muestra a continuación:

1. Abra un símbolo del sistema o una ventana de terminal.

1. Introduzca el siguiente comando:

   ```
   aws configservice list-discovered-resources --resource-type MyCustomNamespace::Testing::WordPress
   ```

1. Pulse Intro.

   Debería ver una salida similar a esta:

   ```
   {
       "resourceIdentifiers": [
           {
               "resourceType": "MyCustomNamespace::Testing::WordPress",
               "resourceId": "resource-001"
           }
       ]
   }
   ```

1. Introduzca el siguiente comando:

   ```
   aws configservice batch-get-resource-config --resource-keys '[ { "resourceType": "MyCustomNamespace::Testing::WordPress", "resourceId": "resource-001" } ]'
   ```

1. Pulse Intro.

   Debería ver una salida similar a esta:

   ```
   {
       "unprocessedResourceKeys": [],
       "baseConfigurationItems": [
           {
               "configurationItemCaptureTime": 1569605832.673,
               "resourceType": "MyCustomNamespace::Testing::WordPress",
               "resourceId": "resource-001",
               "configurationStateId": "1569605832673",
               "awsRegion": "us-west-2",
               "version": "1.3",
               "supplementaryConfiguration": {},
               "configuration": "{\"Id\":\"resource-001\",\"Name\":\"My example custom resource.\",\"PublicAccess\":false}",
               "configurationItemStatus": "ResourceDiscovered",
               "accountId": "AccountId"
           }
       ]
   }
   ```

# Elimine los recursos de terceros para que no AWS Config utilicen la AWS CLI
<a name="delete-custom-resource-type"></a>

Para eliminar un recurso de terceros, introduzca siguiente comando:

```
aws configservice delete-resource-config --resource-type MyCustomNamespace::Testing::WordPress --resource-id resource-002
```

Si se ejecuta correctamente, el comando no muestra ninguna salida adicional.