#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")))