Generación de políticas de IAM para servicios integrados por Steps Functions - AWS Step Functions

Generación de políticas de IAM para servicios integrados por Steps Functions

Cuando se crea una máquina de estado en la consola de AWS Step Functions, Step Functions produce una política de AWS Identity and Access Management (IAM) basada en los recursos utilizados en la definición de la máquina de estado, como se muestra a continuación:

  • Para las integraciones optimizadas, Step Functions creará una política con todos los permisos y roles necesarios para la máquina de estado.

    Consejo: Puede ver ejemplos de políticas en cada una de las páginas de servicio que aparecen en Integración de los servicios optimizados.

  • Para las integraciones estándar, Step Functions creará un rol de IAM con permisos parciales.

    Debe añadir las políticas de rol que falten y que su máquina de estado necesite para interactuar con el servicio.

Recursos dinámicos y estáticos

Los recursos estáticos se definen directamente en el estado de la tarea de la máquina de estado. Cuando se incluye la información sobre los recursos a los que se llama directamente en los estados de la tarea, Step Functions puede crear un rol de IAM exclusivo para esos recursos.

Los recursos dinámicos se pasan como entrada al iniciar la máquina de estado, o como entrada a un estado individual, y se accede a ellos mediante JSONata o JSONPath. Cuando pasa recursos dinámicos a su tarea, Step Functions no puede reducir automáticamente el alcance de los permisos, por lo que Step Functions creará una política más permisiva que especifica: "Resource": "*".

Permisos adicionales para las tareas que utilizan .sync

Las tareas que utilizan el patrón Ejecutar un trabajo (.sync) necesitan permisos adicionales para supervisar y recibir una respuesta de la API de los servicios conectados.

Step Functions utiliza dos enfoques para supervisar el estado de un trabajo cuando se ejecuta en un servicio conectado: sondeos y eventos.

El sondeo requiere permiso para las acciones de la API Describe o Get. Por ejemplo, para Amazon ECS, la máquina de estado debe tener permiso para ecs:DescribeTasks, mientras que para AWS Glue, la máquina de estado requiere permisos para glue:GetJobRun. Si el rol no tiene los permisos necesarios, es posible que Step Functions no pueda determinar el estado de su trabajo. Uno de los motivos para usar el método de sondeo se debe a que algunas integraciones de servicios no admiten eventos de EventBridge y algunos servicios solo envían eventos en la medida de lo posible.

Como alternativa, puede utilizar los eventos enviados desde los servicios de AWS a Amazon EventBridge. EventBridge enruta los eventos a Step Functions con una regla administrada, por lo que el rol requiere permisos para events:PutTargets, events:PutRule y events:DescribeRule. Si no tiene estos permisos en el rol, es posible que se produzca un retraso antes de que Step Functions tenga conocimiento de que ha completado el trabajo. Para obtener más información acerca de los eventos de EventBridge, consulte Eventos de servicios de AWS.

Solución de problemas con los flujos de trabajo de .sync atascados

En el caso de las tareas de Ejecutar un trabajo (.sync) que admiten tanto sondeos como eventos, es posible que la tarea se complete correctamente mediante eventos, incluso cuando el rol carezca de los permisos necesarios para realizar sondeos.

En el escenario anterior, es posible que no note que los permisos de sondeo faltan o son incorrectos. En el improbable caso de que Step Functions no entregue o procese el evento, la ejecución podría bloquearse.

Para comprobar que los permisos de sondeo estén configurados correctamente, puede realizar una ejecución en un entorno sin eventos de EventBridge de las siguientes maneras:

  • Elimine la regla administrada de EventBridge, que es responsable de reenviar eventos a Step Functions.

    nota

    Puesto que todas las máquinas de estado comparten reglas administradas en su cuenta, debe utilizar una cuenta de prueba o de desarrollo para evitar cualquier impacto involuntario en otras máquinas de estado.

  • Puede identificar la regla administrada específica que desea eliminar inspeccionando el campo Resource utilizado para events:PutRule en la plantilla de política del servicio de destino. La regla administrada se volverá a crear la próxima vez que cree o actualice una máquina de estado que utilice esa integración de servicios.

  • Para obtener información sobre la eliminación de una regla de EventBridge, consulte Eliminación o desactivación de una regla.

Permisos para cancelar los flujos de trabajo

Si se detiene una tarea que utiliza el patrón de ejecución de trabajo (.sync), Step Functions hará todo lo posible por cancelar la tarea.

La cancelación de una tarea requiere permiso para las acciones de la API Cancel, Stop, Terminate o Delete, como batch:TerminateJob o eks:DeleteCluster. Si la función no tiene estos permisos, Step Functions no podrá cancelar la tarea y podrían acumularse cargos adicionales mientras siga ejecutándose. Para obtener más información, consulte Ejecución de un trabajo.

Más información sobre los patrones de integración

Para obtener más información sobre las tareas síncronas, consulte Descubrimiento de los patrones de integración de servicios en Step Functions.