

# Utilización de extensiones públicas de terceros del registro de CloudFormation
<a name="registry-public"></a>

Para utilizar una extensión pública de terceros en su plantilla, antes debe *activar* la extensión para la cuenta y región en la que desea utilizarla. Al activar una extensión, esta se podrá utilizar en operaciones de pila en la cuenta y la región en la que se active. 

Cuando se activa una extensión pública de terceros, CloudFormation crea una entrada en el registro de extensiones de su cuenta para la extensión activada como una extensión privada. Esto le permite establecer cualquier propiedad de configuración que incluya la extensión. Las propiedades de configuración definen cómo se configura la extensión para una Cuenta de AWS y región determinadas.

Además de establecer las propiedades de configuración, también puede personalizar la extensión de las siguientes maneras:
+ Especifique el rol de ejecución que CloudFormation utiliza para activar la extensión, además de configurar el registro para la extensión.
+ Especifique si la extensión se actualiza automáticamente cuando esté disponible una nueva versión secundaria o de parche.
+ Especifique un alias para usar en lugar del nombre de la extensión pública de terceros. Esto puede ayudar a evitar colisiones de nombres entre extensiones de terceros.

**Topics**
+ [Configure un rol de ejecución con permisos de IAM y una política de confianza para el acceso a las extensiones públicas](#registry-public-enable-execution-role)
+ [Utilice automáticamente nuevas versiones de extensiones](#registry-public-enable-auto)
+ [Utilización de alias para hacer referencia a extensiones](#registry-public-enable-alias)
+ [Comandos de la AWS CLI de uso común para trabajar con extensiones públicas](#registry-commonly-used-commands-public-extensions)
+ [Activación de una extensión pública de terceros en su cuenta](registry-public-activate-extension.md)
+ [Actualización de una extensión pública de terceros en su cuenta](registry-public-update-extension-console.md)
+ [Desactivación de extensiones públicas de terceros en su cuenta](registry-public-deactivate-extension.md)

## Configure un rol de ejecución con permisos de IAM y una política de confianza para el acceso a las extensiones públicas
<a name="registry-public-enable-execution-role"></a>

Al activar una extensión pública desde el registro de CloudFormation, puede proporcionar un rol de ejecución que otorgue a CloudFormation los permisos necesarios para invocar esa extensión en su Cuenta de AWS y en su región.

Los permisos necesarios para el rol de ejecución se definen en la sección del controlador del esquema de extensión. Debe crear una política de IAM que conceda los permisos específicos que necesita la extensión y adjuntarla al rol de ejecución. 

Además de la política de permisos, el rol de ejecución también necesitará tener una política de confianza que permita a CloudFormation asumir el rol. Siga las instrucciones sobre cómo [crear un rol mediante políticas de confianza personalizadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) de la *Guía del usuario de IAM* para crear un rol con una política de confianza personalizada.

### Relación de confianza
<a name="registry-public-enable-execution-role-trust-policy"></a>

A continuación se muestra un ejemplo de políticas de confianza que puede utilizar.

De forma opcional, puede restringir el alcance del permiso para evitar que se produzcan errores confusos entre servicios mediante el uso de una o más claves de contexto de condiciones globales en el campo `Condition`. Para obtener más información, consulte [Prevención de la sustitución confusa entre servicios](cross-service-confused-deputy-prevention.md).
+ Configure el valor `aws:SourceAccount` en el ID de su cuenta.
+ Establezca el valor `aws:SourceArn` en el ARN de su extensión.

**Política de confianza de ejemplo 1**  
A continuación, se muestra un ejemplo de política de confianza de rol de IAM para la extensión del tipo de recurso.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "resources.cloudformation.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cloudformation:us-west-2:123456789012:type/resource/Organization-Service-Resource"
                }
            }
        }
    ]
}
```

------

**Política de confianza de ejemplo 2**  
A continuación, se muestra un ejemplo de política de confianza de rol de IAM para una extensión de enlace.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "resources.cloudformation.amazonaws.com",
                    "hooks.cloudformation.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cloudformation:us-west-2:123456789012:type/hook/Organization-Service-Hook"
                }
            }
        }
    ]
}
```

------

## Utilice automáticamente nuevas versiones de extensiones
<a name="registry-public-enable-auto"></a>

Cuando se activa una extensión, también puede especificar el tipo de extensión para utilizar la versión secundaria más reciente. El tipo de extensión actualiza la versión secundaria siempre que el editor publique una nueva versión en la extensión activada.

Por ejemplo, la próxima vez que lleve a cabo una operación de pila, como crear o actualizar una pila, con una plantilla que incluya esa extensión, CloudFormation utilizará la nueva versión secundaria.

La actualización a una nueva versión de extensión, ya sea de forma automática o manual, no afecta a ninguna instancia de extensión que ya esté aprovisionada en pilas.

CloudFormation considera que las actualizaciones de versiones principales de las extensiones pueden contener cambios importantes y, por lo tanto, requiere que actualice manualmente a una nueva versión principal de una extensión.

Las extensiones publicadas por AWS están activadas de forma predeterminada para todas las cuentas y regiones en las que están disponibles y siempre utilizan la última versión disponible en cada Región de AWS.

**importante**  
Dado que usted controla si las extensiones se actualizan a la última versión en su cuenta y cuándo, puede acabar con diferentes versiones de la misma extensión implementadas en diferentes cuentas y regiones.  
Esto podría dar lugar a resultados inesperados al usar la misma plantilla, que contiene esa extensión, en esas cuentas y regiones.

## Utilización de alias para hacer referencia a extensiones
<a name="registry-public-enable-alias"></a>

No puede activar más de una extensión con un nombre de pila en una Cuenta de AWS y región determinadas. Dado que diferentes editores pueden ofrecer extensiones públicas con el mismo nombre de extensión, CloudFormation le permite especificar un alias para cualquier extensión pública de terceros que active.

Si especifica un alias para la extensión, CloudFormation trata el alias como el nombre del tipo de extensión dentro de la cuenta y la región. Debe usar el alias para hacer referencia a la extensión en las plantillas, las llamadas a la API y la consola de CloudFormation.

Los alias de extensión tienen que ser únicos en una cuenta y región determinadas. Puede activar el mismo recurso público varias veces en la misma cuenta y región, mediante alias de nombres de tipos diferentes.

**importante**  
Si bien los alias de extensión solo deben ser únicos en una cuenta y región determinadas, recomendamos encarecidamente a los usuarios *no* asignar el mismo alias a diferentes extensiones públicas de terceros en todas las cuentas y regiones. Esto podría generar resultados inesperados al usar una plantilla que contenga el alias de extensión en varias cuentas o regiones.

## Comandos de la AWS CLI de uso común para trabajar con extensiones públicas
<a name="registry-commonly-used-commands-public-extensions"></a>

Los comandos comúnmente utilizados para trabajar con extensiones públicas incluyen: 
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html) activar un módulo o un tipo de recurso público de terceros en su cuenta.
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html) para especificar los datos de configuración de la extensión en su cuenta y para deshabilitar y habilitar enlaces.
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-types.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-types.html) para enumerar las extensiones en su cuenta.
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html) para devolver información detallada sobre una extensión específica o una versión de extensión específica, incluidos los datos de configuración actuales.
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-default-version.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-default-version.html) para especificar qué versión de una extensión es la versión predeterminada.
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deactivate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deactivate-type.html) desactivar un módulo o tipo de recurso público de terceros que se activó anteriormente en su cuenta.

# Activación de una extensión pública de terceros en su cuenta
<a name="registry-public-activate-extension"></a>

En el siguiente tema, se muestra cómo activar una extensión pública de terceros en su cuenta, de modo que se pueda utilizar en la cuenta y la región en la que se activó.

**nota**  
Antes de continuar, confirme que ha creado la [rol de IAM](registry-public.md#registry-public-enable-execution-role) que usará con esta extensión.

**Topics**
+ [Activación de una extensión pública (consola)](#registry-public-activate-extension-console)
+ [Activación de una extensión pública (AWS CLI)](#registry-public-activate-extension-cli)

## Activación de una extensión pública (consola)
<a name="registry-public-activate-extension-console"></a>

Siga los pasos de esta sección para utilizar la consola a fin de hacer lo siguiente:
+ Activación de una extensión pública de terceros
+ Especifique datos de configuración de extensión adicionales para su cuenta

**Activación de una extensión pública para usarla en su cuenta**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS.

1. En el panel de navegación, en **Registro**, seleccione **Extensiones públicas**.

1. Use **Filtrar** para seleccionar el tipo de extensión y seleccione **Terceros**. (Las extensiones publicadas por AWS están activadas de manera predeterminada).

1. Seleccione la extensión y, a continuación, seleccione **Activar**.

   Si hay varias versiones de una extensión disponibles, puede utilizar el menú **Versión** para seleccionar la versión de la extensión que desea activar. La versión predeterminada es la versión más actualizada.

1. Para **Nombre de extensión**, puede mantener seleccionada la opción **Usar predeterminado** o elegir **Anular predeterminado** y, a continuación, introducir el alias del tipo de extensión que desea utilizar con esta extensión. El alias debe seguir el formato recomendado para el tipo de extensión. Para obtener más información, consulte [Utilización de alias para hacer referencia a extensiones](registry-public.md#registry-public-enable-alias).

1. Si la extensión que va a activar es un enlace o un tipo de recurso, en **ARN del rol de ejecución**, especifique el rol de IAM que CloudFormation debe asumir al invocar la extensión. Para obtener más información, consulte [Configure un rol de ejecución con permisos de IAM y una política de confianza para el acceso a las extensiones públicas](registry-public.md#registry-public-enable-execution-role).

1. Para **Configuración de registro**, especifique la información de configuración de registro para una extensión, si lo desea. Por ejemplo:

   ```
   {
       "logRoleArn": "arn:aws:iam::account:role/rolename",
       "logGroupName": "log-group-name"
   }
   ```

   No es necesario registrar la información de configuración, pero se recomienda para fines de depuración. Para usar la configuración de registro con enlaces, agregue la misma política de confianza que el rol de ejecución especificado, de modo que el rol de registro pueda escribir registros en el grupo de registros.

   Los nombres de clave `logRoleArn` y `logGroupName` distinguen entre mayúsculas y minúsculas.

1. Para **Control de versiones**, **Actualizaciones automáticas**, seleccione cómo quiere recibir las actualizaciones.
   + **On** (Activado): se actualiza automáticamente a la última versión secundaria. Las versiones principales se actualizan manualmente.
   + **Off** (Desactivado): nunca se actualiza automáticamente a la última versión secundaria. Todas las versiones se actualizan manualmente.

   Para obtener más información, consulte [Utilice automáticamente nuevas versiones de extensiones](registry-public.md#registry-public-enable-auto).

Si la extensión requiere configuración adicional, tiene la opción de especificar los datos de configuración ahora o después de que se haya activado la extensión.

**importante**  
Si la extensión que está activando es un enlace, este paso es obligatorio. Debe especificar `ENABLED` para la propiedad `HookInvocationStatus`. Esta operación habilita las propiedades del enlace que se definen en la sección `properties` del esquema del enlace. Para obtener más información, consulte [Referencia a la sintaxis del esquema de la configuración del enlace](https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/hook-configuration-schema.html) en la *Guía del usuario de enlaces de CloudFormation*.

**Especificación de los datos de configuración**

1. Para la **Configuración**, elija **Configurar ahora** y, a continuación, seleccione **Activar la extensión**.

   CloudFormation mostrará la página **Configure extension** (Configurar extensión). Para ver el esquema de configuración actual de la extensión, asegúrese de que la opción **View configuration schema** (Ver esquema de configuración) esté activada.

1. En el cuadro de texto **JSON de configuración**, ingrese una cadena JSON que represente los datos de configuración que desea especificar para esta extensión. El JSON que especifique debe validarse con el esquema de configuración de la extensión.

1. Seleccione **Configurar extensión**.

Si prefiere configurar la extensión después de la activación, puede omitir este paso y proporcionar los datos de configuración más adelante.

1. Para la **Configuración**, elija **Configurar más tarde** y, a continuación, elija **Activar la extensión**.

1. Una vez activada la extensión, puede configurarla accediendo a la extensión desde la página de extensiones activadas y proporcionando los datos de configuración.

## Activación de una extensión pública (AWS CLI)
<a name="registry-public-activate-extension-cli"></a>

Siga los pasos de esta sección para utilizar la AWS CLI a fin de hacer lo siguiente:
+ Activación de una extensión pública de terceros
+ Especifique datos de configuración de extensión adicionales para su cuenta

### Activación de enlaces públicos
<a name="registry-public-activate-extension-hooks"></a>

Al activar los enlaces en su cuenta, autoriza a un enlace a utilizar permisos definidos de su Cuenta de AWS. CloudFormation elimina los permisos no requeridos antes de pasar sus permisos al enlace. CloudFormation recomienda a los clientes o usuarios del enlace que revisen los permisos del enlace y sepan a qué permisos están permitidos los enlaces antes de habilitarlos en la cuenta.

**Activación de un enlace público para usarlo en su cuenta (AWS CLI)**

1. Obtenga del ARN para su enlace y guárdelo. Puede obtener el ARN de un enlace mediante Consola de administración de AWS o AWS CLI. Para obtener más información consulte () [Visualización de las extensiones disponibles y activadas en el registro de CloudFormation](registry-view.md). 

   ```
   export HOOK_TYPE_ARN="arn:aws:cloudformation:us-west-2:123456789012:type/hook/Organization-Service-Hook/"
   ```

1. Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html) para especificar los datos de configuración. El JSON que pase para `--configuration` debe validarse con el esquema de configuración del enlace. Para activar el enlace en todas las operaciones de pila, debe establecer la propiedad `HookInvocationStatus` en `ENABLED` en la sección `HookConfiguration`.

   ```
   aws cloudformation set-type-configuration \
     --configuration "{"CloudFormationConfiguration":{"HookConfiguration":{"HookInvocationStatus": "ENABLED", "FailureMode": "FAIL", "Properties":{}}}}" \
     --type-arn $HOOK_TYPE_ARN --region us-west-2
   ```

   Para obtener más información acerca de las opciones de configuración de `HookConfiguration`, consulte [Referencia a la sintaxis del esquema de la configuración del enlace](https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/hook-configuration-schema.html#) en la *Guía del usuario de enlaces de CloudFormation*.

### Activación de los módulos públicos y los tipos de recursos
<a name="registry-public-activate-extension-type"></a>

**Activación de una extensión pública para usarla en su cuenta (AWS CLI)**
+ Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html) para activar la extensión y especifique si se actualizará de forma automática cada vez que se publique una nueva versión secundaria de la extensión.

  En el ejemplo siguiente se especifica el nombre de recurso de Amazon (ARN) público de una extensión pública para activar para esta cuenta. Además, se especifica que CloudFormation actualiza la extensión cada vez que se publica una nueva versión secundaria.

  ```
  aws cloudformation activate-type \
    --public-type-arn public_extension_ARN \
    --execution-role-arn arn:aws:iam::123456789012:role/my-execution-role \
    --auto-update true --region us-west-2
  ```

  Este comando devuelve un ARN de la extensión activada.

  ```
  {
      "Arn": "arn:aws:cloudformation:us-west-2:123456789012:type/resource/My-Resource-Example"
  }
  ```

### Actualización de la versión de una extensión pública (AWS CLI)
<a name="registry-public-update-extension-type"></a>

Utilice [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/activate-type.html) para volver a activar la extensión.

Utilice la opción `--version-bump` para especificar si se debe actualizar la extensión a la versión más reciente de `MAJOR`, la versión más reciente de `MINOR`.

```
aws cloudformation activate-type --type RESOURCE \
  --type-name Example::Test::1234567890abcdef0 \
  --type-name-alias Example::Test::Alias \
  --version-bump MAJOR --region us-west-2
```

# Actualización de una extensión pública de terceros en su cuenta
<a name="registry-public-update-extension-console"></a>

Cuando activa una extensión pública de terceros, puede actualizar la mayoría de los detalles de la extensión desde su cuenta.

**Actualización de una extensión pública en su cuenta (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS.

1. En el panel de navegación, en **Registro de CloudFormation**, seleccione **Extensiones activadas**.

1. Encuentre la extensión que desea actualizar y selecciónela. Para obtener más información, consulte [Visualización de las extensiones disponibles y activadas en el registro de CloudFormation](registry-view.md).

1. En el menú **Acciones**, seleccione **Editar** y, a continuación, la opción de edición adecuada:
   + Para actualizar el esquema de configuración, consulte [Edición de los datos de configuración de las extensiones en su cuenta](registry-set-configuration.md).
   + Para activar o desactivar las actualizaciones automáticas:

     1. Seleccione **Editar actualizaciones automáticas**.

     1. Elija **Encendido** o **Apagado** y, a continuación, elija **Guardar**. Para obtener más información, consulte [Utilice automáticamente nuevas versiones de extensiones](registry-public.md#registry-public-enable-auto).
   + Para actualizar el rol de ejecución:

     1. Seleccione **Editar rol de ejecución**.

     1. Especifique el ARN del rol de IAM que desea que CloudFormation utilice al invocar esta extensión y, a continuación, seleccione **Guardar**. Para obtener más información, consulte [Configure un rol de ejecución con permisos de IAM y una política de confianza para el acceso a las extensiones públicas](registry-public.md#registry-public-enable-execution-role).
   + Para actualizar la configuración de registro:

     1. Seleccione **Editar configuración de registro**.

     1. Edite el JSON de configuración de registro y, a continuación, seleccione **Guardar**.

# Desactivación de extensiones públicas de terceros en su cuenta
<a name="registry-public-deactivate-extension"></a>

Cuando ya no necesite activar una extensión pública de terceros, siga los siguientes procedimientos para desactivarla en su cuenta.

**Topics**
+ [Desactivación de una extensión pública en su cuenta (consola)](#registry-public-deactivate-extension-console)
+ [Desactivación de una extensión pública en su cuenta (AWS CLI)](#registry-public-deactivate-extension-cli)
+ [Deshabilitación de un enlace en su cuenta (AWS CLI)](#registry-public-deactivate-extension-cli-hook)

## Desactivación de una extensión pública en su cuenta (consola)
<a name="registry-public-deactivate-extension-console"></a>

**Desactivación de una extensión pública en su cuenta**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS.

1. En el panel de navegación, en **Registro de CloudFormation**, seleccione **Extensiones activadas**.

1. Encuentre la extensión que quiere desactivar y selecciónela. Para obtener más información, consulte [Visualización de las extensiones disponibles y activadas en el registro de CloudFormation](registry-view.md).

1. En el menú **Acciones**, seleccione **Desactivar**.

1. Elija **Desactivar**.

## Desactivación de una extensión pública en su cuenta (AWS CLI)
<a name="registry-public-deactivate-extension-cli"></a>

Use el siguiente comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deactivate-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deactivate-type.html).

```
aws cloudformation deactivate-type --type MODULE \
  --type-name Example::Test::Type::MODULE \
  --region us-west-2
```

## Deshabilitación de un enlace en su cuenta (AWS CLI)
<a name="registry-public-deactivate-extension-cli-hook"></a>

La deshabilitación de un enlace evita que este se ejecute en su Cuenta de AWS sin tener que eliminarlo.

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-type-configuration.html) y especifique `HookInvocationStatus` como `DISABLED` para deshabilitar un enlace.

En el siguiente ejemplo, se especifica la Región de AWS y el nombre de recurso de Amazon (ARN) del enlace que se deshabilitará.

```
aws cloudformation set-type-configuration \
  --configuration "{"CloudFormationConfiguration":{"HookConfiguration":{"HookInvocationStatus": "DISABLED", "FailureMode": "FAIL", "Properties":{}}}}" \
  --type-arn "arn:aws:cloudformation:us-west-2:123456789012:type/hook/MyTestHook" --region us-west-2
```

Para obtener más información, consulte [Habilitación y desabilitación de enlaces de CloudFormation](https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/hooks-disable-enable.html) en la *Guía del usuario de enlaces de CloudFormation*.