# Integrar Docker Scout con Amazon ECR


Integrar Docker Scout con Amazon Elastic Container Registry (ECR) te permite
ver información detallada de las imágenes alojadas en los repositorios de ECR. Después de integrar
Docker Scout con ECR y activar Docker Scout para un repositorio, enviar (`push`) una
imagen al repositorio activa automáticamente el análisis de la imagen. Puedes ver
la información detallada de las imágenes utilizando el Docker Scout Dashboard o los comandos de la CLI
`docker scout`.

## Cómo funciona

Para ayudarte a integrar Docker Scout con ECR, puedes usar una plantilla de pila (stack) de CloudFormation
que crea y configura los recursos de AWS necesarios para
integrar Docker Scout con tu registro de ECR. Para obtener más detalles sobre los recursos de AWS,
consulta [Plantilla de pila de CloudFormation](#plantilla-de-pila-de-cloudformation).

El siguiente diagrama muestra cómo funciona la integración de Docker Scout con ECR.

![Cómo funciona la integración con ECR](/scout/images/Scout-ECR.png)

Después de la integración, Docker Scout descarga y analiza automáticamente las imágenes
que envíes al registro de ECR. Los metadatos de tus imágenes se almacenan en la
plataforma de Docker Scout, pero Docker Scout no almacena las imágenes de contenedor
en sí. Para obtener más información sobre cómo maneja Docker Scout los datos de las imágenes, consulta
[Data handling](/scout/deep-dive/data-handling/).

### Plantilla de pila de CloudFormation

La siguiente tabla describe los recursos de configuración.

> [!NOTE]
>
> La creación de estos recursos genera un pequeño costo recurrente en la cuenta de AWS.
> La columna **Costo** de la tabla representa un costo mensual estimado de los
> recursos al integrar un registro ECR que recibe 100 imágenes enviadas al día.
>
> Además, también se aplica un costo de salida (egreso) cuando Docker Scout descarga las imágenes
> desde ECR. El costo de salida es de aproximadamente $0.09 por GB.

| Tipo de recurso               | Nombre del recurso           | Descripción                                                                                            | Costo  |
| ----------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------ | ------ |
| `AWS::SNSTopic::Topic`        | `SNSTopic`                   | Tema (topic) de SNS para notificar a Docker Scout cuando se hayan creado los recursos de AWS.          | Gratis |
| `AWS::SNS::TopicPolicy`       | `TopicPolicy`                | Define el tema para la notificación de configuración inicial.                                          | Gratis |
| `AWS::SecretsManager::Secret` | `ScoutAPICredentials`        | Almacena las credenciales utilizadas por EventBridge para enviar eventos a Scout.                      | $0.42  |
| `AWS::Events::ApiDestination` | `ApiDestination`             | Configura la conexión de EventBridge a Docker Scout para enviar eventos de envío y eliminación de ECR. | $0.01  |
| `AWS::Events::Connection`     | `Connection`                 | Credenciales de conexión de EventBridge a Scout.                                                       | Gratis |
| `AWS::Events::Rule`           | `DockerScoutEcrRule`         | Define la regla para enviar envíos y eliminaciones de ECR a Scout.                                     | Gratis |
| `AWS::Events::Rule`           | `DockerScoutRepoDeletedRule` | Define la regla para enviar eliminaciones de repositorios ECR a Scout.                                 | Gratis |
| `AWS::IAM::Role`              | `InvokeApiRole`              | Rol interno para otorgar acceso al evento a `ApiDestination`.                                          | Gratis |
| `AWS::IAM::Role`              | `AssumeRoleEcrAccess`        | Este rol tiene acceso a `ScoutAPICredentials` para configurar la integración de Docker Scout.          | Gratis |

## Integrar tu primer registro

Crea la pila de CloudFormation en tu cuenta de AWS para habilitar la integración de Docker Scout.

Prerrequisitos:

- Debes tener acceso a una cuenta de AWS con permisos para crear recursos.
- Debes ser propietario (owner) de la organización de Docker.

Para crear la pila:

1. Ve a la [página de integración de ECR](https://scout.docker.com/settings/integrations/ecr/)
   en el Docker Scout Dashboard.
2. Selecciona el botón **Create on AWS**.

   Esto abre el asistente **Create stack** (Crear pila) en la consola de AWS CloudFormation en
   una pestaña nueva del navegador. Si aún no has iniciado sesión en AWS, se te redirigirá
   primero a la página de inicio de sesión.

   Si el botón está deshabilitado (gris), significa que no tienes los
   permisos necesarios en la organización de Docker.

3. Sigue los pasos en el asistente **Create stack** hasta el final. Elige la
   región de AWS que deseas integrar. Completa el procedimiento creando los
   recursos.

   Los campos en el asistente están precompletados por la plantilla de CloudFormation,
   por lo que no necesitas editar ninguno de ellos.

4. Cuando se hayan creado los recursos (el estado de CloudFormation muestra
   `CREATE_COMPLETE` en la consola de AWS), regresa a la página de integraciones de ECR
   en el Docker Scout Dashboard.

   La lista **Integrated registries** muestra el ID de cuenta y la región del
   registro de ECR que acabas de integrar. Si es exitosa, el estado de la integración
   es **Connected**.

La integración de ECR ahora está activa. Para que Docker Scout comience a analizar imágenes
en el registro, debes activarla para cada repositorio en la
[configuración de repositorios](https://scout.docker.com/settings/repos/).

Después de activar los repositorios, las imágenes que envíes serán analizadas por Docker
Scout. Los resultados del análisis aparecen en el Docker Scout Dashboard.
Si tu repositorio ya contiene imágenes, Docker Scout descarga y analiza la
última versión de la imagen automáticamente.

## Integrar registros adicionales

Para agregar registros adicionales:

1. Ve a la [página de integración de ECR](https://scout.docker.com/settings/integrations/ecr/)
   en el Docker Scout Dashboard.
2. Selecciona el botón **Add** en la parte superior de la lista.
3. Completa los pasos para crear los recursos de AWS.
4. Cuando se hayan creado los recursos, regresa a la página de integraciones de ECR en
   el Docker Scout Dashboard.

   La lista **Integrated registries** muestra el ID de cuenta y la región del
   registro de ECR que acabas de integrar. Si es exitosa, el estado de la integración
   es **Connected**.

A continuación, activa Docker Scout para los repositorios que quieras analizar en la
[configuración de repositorios](https://scout.docker.com/settings/repos/).

## Eliminar integración

Para eliminar un registro de ECR integrado, debes ser propietario de la
organización de Docker.

1. Ve a la [página de integración de ECR](https://scout.docker.com/settings/integrations/ecr/)
   en el Docker Scout Dashboard.
2. Busca el registro que deseas eliminar en la lista de registros integrados
   y selecciona el ícono de eliminación en la columna **Actions**.

   Si el ícono de eliminación está deshabilitado, significa que no tienes los
   permisos necesarios en la organización de Docker.

3. En el diálogo que se abre, confirma seleccionando **Remove**.

> [!IMPORTANT]
>
> Eliminar la integración desde el Docker Scout Dashboard no elimina los
> recursos de AWS en tu cuenta.
>
> Después de eliminar la integración en Docker Scout, ve a la consola de AWS y
> elimina la pila de CloudFormation **DockerScoutECRIntegration** correspondiente a la integración
> que deseas eliminar.

## Resolución de problemas

### No se puede integrar el registro

Comprueba el **Status** (Estado) de la integración en la [página de integración de ECR](https://scout.docker.com/settings/integrations/ecr/)
en el Docker Scout Dashboard.

- Si el estado es **Pending** (Pendiente) durante un período prolongado, indica
  que la integración aún no se ha completado del lado de AWS. Selecciona
  el enlace **Pending** para abrir el asistente de CloudFormation y completa todos los
  pasos.

- Un estado de **Error** indica que algo ha salido mal en el backend.
  Puedes intentar [eliminar la integración](#eliminar-integracion) y volver a crearla.

### Las imágenes de ECR no se muestran en el dashboard

Si los resultados del análisis de imágenes para tus imágenes de ECR no aparecen en el Docker
Scout Dashboard:

- Asegúrate de haber activado Docker Scout para el repositorio. Consulta y administra
  los repositorios activos en la [configuración de repositorios](https://scout.docker.com/settings/repos/).

- Asegúrate de que el ID de cuenta de AWS y la región de tu registro aparezcan en la
  página de integraciones de ECR.

  El ID de cuenta y la región se incluyen en el nombre de host del registro:
  `<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<image>`

