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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

Al crear una máquina de estados en la AWS Step Functions consola, Step Functions genera una política AWS Identity and Access Management (IAM) basada en los recursos utilizados en la definición de la máquina de estados, de la siguiente manera:

  • 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 transfieren como entrada al iniciar la máquina de estados, o como entrada a un estado individual, y se accede a ellos mediante JSONata o un 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 de permiso paraecs:DescribeTasks, ya que AWS Glue la máquina de estado requiere permisos de permiso paraglue: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 por los que se utiliza el método de sondeo es que algunas integraciones de servicios no admiten EventBridge eventos y algunos servicios solo envían los eventos si hacen el mejor esfuerzo.

Como alternativa, puedes usar los eventos enviados desde AWS los servicios a Amazon EventBridge. Los eventos se redirigen a Step Functions EventBridge mediante una regla gestionada, por lo que el rol requiere permisos para events:PutTargetsevents:PutRule, yevents: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 sobre EventBridge los eventos, consulte Eventos de los AWS servicios.

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 sus permisos de sondeo están configurados correctamente, puede ejecutar una ejecución en un entorno sin EventBridge eventos de las siguientes maneras

  • Elimine la regla gestionada EventBridge que se encarga de reenviar los 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 más información sobre la eliminación de EventBridge reglas, consulte Desactivar o eliminar 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.