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
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
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
En este tema
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
-
Inicie un nuevo proyecto de Terraform con el siguiente comando.
terraform init
-
Abra la consola de Step Functions
para crear un prototipo para la máquina de estado. -
En Workflow Studio, haga lo siguiente:
-
Cree el prototipo del flujo de trabajo.
-
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
-
-
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_machine
Terraform que usa la templatefile
funció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.
-
(Opcional) Actualice la ASL definición que contiene IDE y visualice los cambios mediante el AWS Toolkit for Visual Studio Code.
-
Pruebe el flujo de trabajo utilizando Step Functions Local.
-
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
-
Implemente la máquina de estado desde su entorno local o mediante canalizaciones de CI/CD
utilizando el siguiente comando. terraform apply
-
(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
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_document
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