Uso de Terraform para implementar máquinas de estado en Step 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.

Uso de Terraform para implementar máquinas de estado en Step Functions

Terraform by HashiCorp es un marco para crear aplicaciones utilizando la infraestructura como código (IaC). Con Terraform, puede crear máquinas de estado y utilizar características, como obtener una vista previa de las implementaciones de infraestructura y crear plantillas reutilizables. Las plantillas de Terraform le ayudan a mantener y reutilizar el código al dividirlo en partes más pequeñas.

Si está familiarizado con Terraform puede seguir el ciclo de vida de desarrollo descrito en este tema como modelo para crear e implementar máquinas de estado en Terraform. Si no está familiarizado con Terraform le recomendamos que antes de comenzar realice el taller Introducción a Terraform en AWS para familiarizarse con Terraform.

sugerencia

Para implementar un ejemplo de una máquina de estados creada con Terraform Cuenta de AWS, consulte el módulo Gestión de máquinas de estado con infraestructura como código de The Workshop. AWS Step Functions

Requisitos previos

Antes de comenzar debe cumplir los siguientes requisitos previos:

  • Instale Terraform en su máquina. Para obtener información sobre la instalación de Terraform, consulte Instalar Terraform.

  • Instale Step Functions Local en su máquina. Se recomienda instalar la imagen de Docker de Step Functions Local para utilizar Step Functions Local. Para obtener más información, consulte Probar máquinas de estado localmente en Step Functions.

  • Instala AWS SAM CLI. Para obtener información sobre la instalación, consulte Instalación del AWS SAM CLI en la Guía para AWS Serverless Application Model desarrolladores.

  • Instálelo AWS Toolkit for Visual Studio Code para ver el diagrama de flujo de trabajo de sus máquinas estatales. Para obtener información sobre la instalación, consulte Instalación del AWS Toolkit for Visual Studio Code en la Guía del usuario de AWS Toolkit for Visual Studio Code .

Ciclo de vida del desarrollo de máquinas de estado con Terraform

El siguiente procedimiento explica cómo puede utilizar un prototipo de máquina de estado que se crea con Workflow Studio en la consola de Step Functions como punto de partida para desarrollo local con Terraform y el AWS Toolkit for Visual Studio Code.

Para ver el ejemplo completo que analiza el desarrollo de máquinas de estado con Terraform y presenta las mejores prácticas en detalle, consulte Best practices for writing Step Functions Terraform projects.

Para iniciar el ciclo de vida de desarrollo de una máquina de estado con Terraform
  1. Inicie un nuevo proyecto de Terraform con el siguiente comando.

    terraform init
  2. Abra la consola de Step Functions para crear un prototipo para la máquina de estado.

  3. En Workflow Studio, haga lo siguiente:

    1. Cree el prototipo del flujo de trabajo.

    2. Exporta la definición de Amazon States Language (ASL) de tu flujo de trabajo. Para ello, elija la lista desplegable Import/Export y, a continuación, seleccione Exportar definición. JSON

  4. Guarde la ASL definición exportada en el directorio de su proyecto.

    La ASL definición exportada se transfiere como parámetro de entrada al recurso de aws_sfn_state_machineTerraform que usa la templatefilefunción. Esta función se usa dentro del campo de definición que transmite la ASL definición exportada y cualquier sustitución de variables.

    sugerencia

    Como el archivo de ASL definición puede contener bloques de texto largos, le recomendamos que evite el método en líneaEOF. De este modo resulta más sencillo sustituir los parámetros en la definición de la máquina de estado.

  5. (Opcional) Actualice la ASL definición que contiene IDE y visualice los cambios mediante el AWS Toolkit for Visual Studio Code.

    Captura de pantalla de la ASL definición de un flujo de trabajo en Visual Studio Code y su representación visual.

    Para evitar exportar continuamente tu definición y refactorizarla en tu proyecto, te recomendamos que realices las actualizaciones de forma local IDE y que realices un seguimiento de estas actualizaciones con Git.

  6. Pruebe el flujo de trabajo utilizando Step Functions Local.

  7. Obtenga una vista previa de la máquina de estados y otros AWS recursos antes de implementar la máquina de estados. Para ello, ejecute el siguiente comando.

    terraform plan
  8. Implemente la máquina de estado desde su entorno local o mediante canalizaciones de CI/CD utilizando el siguiente comando.

    terraform apply
  9. (Opcional) Limpie los recursos y elimine la máquina de estado con el siguiente comando.

    terraform destroy

IAMfunciones y políticas para su máquina de estados

Utilice las políticas de integración de servicios de Terraform para añadir IAM los permisos necesarios a su máquina de estados, por ejemplo, el permiso para invocar funciones de Lambda. También puede definir roles y políticas explícitos y asociarlos a la máquina de estado.

El siguiente ejemplo IAM de política concede a su máquina estatal acceso para invocar una función Lambda denominada. myFunction

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myFunction" } ] }

También recomendamos utilizar la fuente de aws_iam_policy_documentdatos al definir IAM las políticas para sus máquinas de estado en Terraform. Le ayudará a comprobar si su política está mal estructurada y a sustituir los recursos por variables.

El siguiente ejemplo IAM de política usa la fuente de aws_iam_policy_document datos y otorga a la máquina de estado acceso para invocar una función de Lambda denominada. myFunction

data "aws_iam_policy_document" "state_machine_role_policy" { statement { effect = "Allow" actions = [ "lambda:InvokeFunction" ] resources = ["${aws_lambda_function.[[myFunction]].arn}:*"] } }
sugerencia

Para ver patrones AWS arquitectónicos más avanzados implementados con Terraform, consulte los ejemplos de Terraform en Serverless Land Workflows Collection.