¿Cómo resuelvo el error «Role [role_arn] is invalid or cannot be assumed» cuando actualizo o elimino una pila de AWS CloudFormation?

4 minutos de lectura
0

Quiero resolver el error «Role [role_arn] is invalid or cannot be assumed» cuando creo, actualizo o elimino una pila de AWS CloudFormation.

Breve descripción

Este error aparece cuando hay un problema con el rol de servicio de AWS Identity and Access Management (AWS IAM) que utiliza AWS CloudFormation para realizar llamadas a los recursos de una pila en su nombre.

Este error puede aparecer cuando intente:

  • Crear una pila utilizando la interfaz de la línea de comandos de AWS (AWS CLI) o una llamada a la API.
  • Actualizar una pila cuando AWS CloudFormation crea un conjunto de cambios.
  • Eliminar una pila.
  • Actualizar o eliminar un rol de IAM. Si modifica la política de confianza de un rol de IAM actualizado, AWS CloudFormation no podrá asumir el rol.

Para resolver este error, determine si existe el rol de servicio de IAM que utiliza AWS CloudFormation. Luego:

  • Si el rol de IAM no existe, cree un nuevo rol de IAM con el mismo nombre.
  • Si el rol de IAM existe, confirme que la política de confianza del rol permite a AWS CloudFormation asumir el rol de IAM.

O bien, puede anular el rol de IAM actual que se utiliza para anular el rol de servicio empleado en la operación de pila actual utilizando el parámetro --role-arn.

Nota: Si se muestran errores al ejecutar comandos de AWS CLI, compruebe si está utilizando la versión más reciente de AWS CLI.

Resolución

Confirmar que el rol de IAM existe

1.    Abra la consola de IAM.

2.    En el panel de navegación, elija Roles.

3.    En la columna Nombre del rol, elija el rol de IAM que se menciona en el mensaje de error que ha recibido.

4.    Si el rol existe, complete los pasos de la sección Confirmar que la política de confianza del rol permite a AWS CloudFormation asumir el rol de IAM
(o bien)
Complete los pasos de la sección Anular el rol de IAM actual utilizado por AWS CloudFormation.

        Si el rol no existe, complete los pasos de la sección Crear un nuevo rol de IAM y confirmar que tiene los permisos necesarios.

Crear un nuevo rol de IAM y confirmar que tiene los permisos necesarios

1.     Cree un nuevo rol de IAM con el mismo nombre que el rol mencionado en el error.

2.    Confirme que el nuevo rol de IAM tiene los permisos necesarios para que AWS CloudFormation pueda realizar operaciones de creación, actualización o eliminación en los recursos de su pila.

3.    Una vez creado el rol, puede volver a crear, actualizar o eliminar su pila.

Nota: Si el nuevo rol no tiene los permisos de IAM necesarios, las operaciones de la pila podrían generar errores. Por ejemplo, la operación de eliminación falla si intenta eliminar un recurso de instancia de Amazon Elastic Compute Cloud (Amazon EC2) en el que el rol de IAM no tiene permiso para la acción ec2:TerminateInstances.

Confirmar que la política de confianza del rol permite a AWS CloudFormation asumir el rol de IAM

1.    Abra la consola de IAM.

2.    En el panel de navegación, elija Roles.

3.    En la columna Nombre del rol, elija el rol de IAM que se menciona en el mensaje de error que ha recibido.

4.    Elija la pestaña Relaciones de confianza.

5.    Confirme que la relación de confianza muestra cloudformation.amazonaws.com como entidad de confianza.

Si cloudformation.amazonaws.com no aparece como entidad de confianza, seleccione Editar la relación de confianza.

6.    En el editor Documento de política, introduzca la siguiente política de confianza de rol de servicio de AWS CloudFormation:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

7.    Seleccione Actualizar la política de confianza.

En adelante, la política de confianza actualizada permitirá que AWS CloudFormation asuma el rol de IAM.

8.    Una vez creado el rol, puede volver a crear, actualizar o eliminar su pila.

Anular el rol de IAM actual utilizado por AWS CloudFormation

1.    Para actualizar la pila, ejecute el siguiente comando:

aws cloudformation update-stack --stack-name my-stack --template-body file://my-stack-template.json --role-arn arn:aws:iam::123456789123:role/cloudformation-role

Nota: Sustituya my-stack, my-stack-template.json y 123456789123 por sus propios valores.

2.    Para eliminar la pila, ejecute el siguiente comando:

aws cloudformation delete-stack --stack-name my-stack --role-arn arn:aws:iam::123456789123:role/cloudformation-role

Nota: Sustituya my-stack y 123456789123 por sus propios valores.


Información relacionada

AWS CloudFormation service role

Creación de un rol para delegar permisos a un servicio de AWS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años