Определение функции шага в Terraform (Yaml)

#amazon-web-services #terraform #aws-step-functions

Вопрос:

Я уже реализовал SFn в файле Terraform (JSON) :

 data "template_file" "sfn-definition" {
  template = file("step-function-definition.json")
}

resource "aws_sfn_state_machine" "sfn_state_machine" {
   name = "integration-step-function"
   role_arn = aws_iam_role.step_function_role.arn
   definition = data.template_file.sfn-definition.rendered
}
 

Это работает нормально, но вместо JSON я хотел бы использовать определение YAML.
Я создал такое же определение SFn в YAML. Я сделал это в AWS Toolkit (VS Code), и график отображается правильно. Я меняю файл JSON на YAML:

 template = file("step-function-definition.yaml")
 

И, к сожалению, это не работает:

 08:58:39  Error: Error creating Step Function State Machine: InvalidDefinition: 
Invalid State Machine Definition: 'INVALID_JSON_DESCRIPTION: 
Unrecognized token 'StartAt': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 

Я полагаю, что definition в aws_sfn_state_machine файле expect JSON, но есть ли возможность определить SFn в YAML и использовать Terraform?

Ответ №1:

Язык Amazon States основан на JSON. Поэтому сначала вам нужно преобразовать ваш yaml в json. Вы можете попробовать следующее:

 template = jsonencode(yamldecode(file("step-function-definition.yaml")))