¿Cómo soluciono el error “no se pueden extraer datos confidenciales o la autenticidad de registro” en Amazon ECS?

Última actualización: 07/04/2022

Recibí uno de los siguientes errores cuando lancé una tarea de Amazon Elastic Container Service (Amazon ECS):

ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secret from asm: service call has been retried

Descripción corta

LaLa versión 1.4.0 de la plataforma de AWS Fargate utiliza la interfaz de red elástica de tareas para extraer la imagen y los secretos. Todo el tráfico de red fluye a través de la interfaz de red elástica dentro de Amazon Virtual Private Cloud (Amazon VPC). Puede ver este tráfico a través de los registros de flujo de Amazon VPC. Sin embargo, la tarea usa su configuración de red en lugar de las interfaces de red elásticas de Fargate. Esto se debe a que las interfaces de red elásticas se colocan en su Amazon VPC.

El agente de contenedores de Amazon ECS usa el rol de ejecución de tareas de AWS Identity and Access Management (IAM) para obtener información de AWS Systems Manager Parameter Store o AWS Secrets Manager. Si utiliza una clave de AWS Key Management Service (AWS KMS) administrada por el cliente para cifrar datos en Systems Manager Parameter Store o Secrets Manager, debe conceder permisos al rol de IAM de ejecución de tareas para las siguientes acciones: ssm:GetParameters, secretsmanager:GetSecretValue y kms:Decrypt.

Resolución

Compruebe las rutas desde sus subredes a Internet

Si tiene una tarea de Fargate en una subred pública, verifique que su tarea tenga una dirección IP pública asignada y una ruta predeterminada (0.0.0.0/0) a una puerta de enlace de Internet. Asegúrese de habilitar la asignación automática a público al lanzar una nueva tarea o crear un servicio nuevo. Si usa los puntos de conexión de VPC de Secrets Manager o Systems Manager en una subred pública y tiene habilitado AmazonProvidedDNS en la configuración de opciones de DHCP de Amazon VPC, el punto de conexión de Amazon VPC se usará para llegar a Secrets Manager o Systems Manager en lugar de la puerta de enlace de Internet en la subred pública.

Nota: No puede habilitar esta opción para las tareas existentes. Para los servicios existentes, no puede habilitar esta opción desde la consola de administración de AWS. Sin embargo, puede usar AWS Command Line Interface (AWS CLI) para volver a configurar los servicios existentes. Si creó el servicio Amazon ECS con una pila de AWS CloudFormation, puede actualizar el servicio modificando la propiedad NetworkConfiguration de AWS::ECS::Service.

Si tiene una tarea de Fargate en una subred privada, compruebe que la tarea tenga una ruta predeterminada (0.0.0.0/0) a una puerta de enlace NAT, AWS PrivateLink u otra fuente de conectividad a Internet.

  • Si usa una puerta de enlace NAT, coloque la puerta de enlace NAT en una subred pública. Para obtener más información, consulte Arquitectura con una puerta de enlace de Internet y una puerta de enlace NAT.
  • Si usa PrivateLink, asegúrese de que la infraestructura de Fargate pueda usar los grupos de seguridad para sus puntos de conexión de Amazon VPC.
  • Si usa un servidor de dominio de nombre personalizado, asegúrese de que la consulta de DNS tenga acceso saliente en el puerto 53 mediante el protocolo UDP y TCP y acceso HTTPS en el puerto 443.

Compruebe la configuración de ACL y del grupo de seguridad

Compruebe que la lista de control de acceso (ACL) de red y los grupos de seguridad no bloqueen el acceso saliente al puerto 443 desde la subred. Para obtener más información, consulte Grupos de seguridad para la VPC.

Nota: Las tareas de Fargate deben tener acceso saliente al puerto 443 para permitir el tráfico saliente y acceder a los puntos de conexión de Amazon ECS.

Compruebe los puntos de conexión de Amazon VPC

Si usa PrivateLink, asegúrese de haber creado los puntos de conexión requeridos.

Los puntos de conexión requeridos para las versiones 1.4.0 o posteriores de la plataforma Fargate son los siguientes:

  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.ecr.api
  • Punto de conexión de la puerta de enlace de S3
  • com.amazonaws.region.logs

Para obtener más información, consulte Consideraciones para los puntos de conexión de VPC de Amazon ECR.

Nota: Si la definición de su tarea usa parámetros de Secrets Manager, Systems Manager o Amazon CloudWatch Logs, es posible que necesite definir puntos de conexión. Para más información, consulte Uso de Secrets Manager con puntos de conexión de VPC, Crear puntos de conexión VPC para Amazon ECS y Uso de CloudWatch Logs con una interfaz de punto de conexión de VPC.

Si utiliza PrivateLink, asegúrese de que el grupo de seguridad adjunto al punto de conexión de Amazon VPC permita el tráfico desde el grupo de seguridad de tareas de Fargate o el rango de CIDR de la tarea de Fargate VPC en el puerto TCP 443.

Consulte las políticas de punto de conexión de VPC y las políticas de puntos de conexión de Amazon Simple Storage Solution (Amazon S3) para asegurarse de que la infraestructura de Fargate tenga permiso para acceder a los servicios.

Compruebe los roles y permisos de IAM

El rol de ejecución de tareas concede los permisos necesarios al contenedor de Amazon ECS y a los agentes de Fargate a fin de realizar llamadas a la API para la tarea. Fargate requiere este rol cuando usted hace lo siguiente:

  • Extrae una imagen de contenedor de Amazon Elastic Container Registry (Amazon ECR).
  • Usa el controlador de registro awslogs.
  • Usa la autenticación de registro privado.
  • Hace referencia a información confidencial mediante los secretos de Secrets Manager o los parámetros de Systems Manager Parameter Store.

Si su caso de uso implica alguno de los escenarios anteriores, asegúrese de tener los permisos requeridos definidos en el rol de ejecución de tareas. Para obtener una lista completa de los permisos requeridos, consulte Rol de IAM de ejecución de tareas de Amazon ECS.

Compruebe la información confidencial a la que se hace referencia en la definición de tareas de Amazon ECS

Compruebe si la información confidencial/nombres de parámetros coinciden con los nombres de tu definición de tarea de Amazon ECS. A continuación, compruebe si los valores de la definición de contenedor en la definición de tarea coinciden con los valores de tu definición de tarea de Amazon ECS. Para obtener más información, consulte ¿Cómo puedo trasladar información confidencial o sensible de forma segura a los contenedores en una tarea de Amazon ECS?

Si Systems Manager Parameter Store existe en la misma región que la tarea que está iniciando, puede usar el nombre de recurso de Amazon (ARN, por sus siglas en inglés) completo o el nombre de la información confidencial. Si el parámetro existe en una región diferente, se debe especificar el ARN completo.

Para comprobar el ARN y el nombre del parámetro de System Manager, haga lo siguiente:

1.    Abra la consula de AWS Systems Manager.

2.    En el panel de navegación, elija Parameter Store (almacen de parámetros) y confirme el Parameter store name (nombre del almacén de parámetros).

3.    A continuación, para obtener información sobre el ARN del parámetro, utilice AWS Command Line Interface (AWS CLI) y ejecute el siguiente comando:
Nota: Reemplace name_of_parameter_store_secret por el nombre de la información confidencial de su almacén de parámetros.

$ aws ssm get-parameter —name <name_of_parameter_store_secret> —with-decryption

Nota: Los parámetros que hacen referencia a información confidencial de Secrets Manager no son compatibles con la función Historial o el control de versiones del almacén de parámetros. Para más información, consulte Restricciones.


¿Le ha resultado útil este artículo?


¿Necesita asistencia técnica o con la facturación?