Ошибка синтаксического анализа JSON при запуске 'aws stepfunctions update-state-machine' через Terraform

Я следую ответу в этом вопрос, я попытался включить рентгеновский снимок, и он работает, я использовал код:

resource "null_resource" "enable_step_function_logging" {
  triggers = {
state_machine_arn = aws_sfn_state_machine.sfn_state_machine.arn
  }
provisioner "local-exec" {
  command = "aws stepfunctions update-state-machine --state-machine-arn ${self.triggers.state_machine_arn} --tracing-configuration enabled=true"
  }
}

Теперь я хочу включить часть журнала cloudwatch '--logging-configuration = xxx', но я продолжаю получать ошибки. Вот что я пробовал:

resource "null_resource" "enable_step_function_logging" {
  triggers = {
    state_machine_arn = aws_sfn_state_machine.sfn_state_machine.arn
    logs_params       = <<PARAMS
      {
        "level":"ALL",
        "includeExecutionData":true,
        "destinations":[
            {
                "cloudWatchLogsLogGroup":{
                    "logGroupArn":"${aws_cloudwatch_log_group.sfn_cloudwatch_log_group.arn}:*"
                    }
                }
            ]
            }
    PARAMS
  }
  provisioner "local-exec" {
    command     = "aws stepfunctions update-state-machine --state-machine-arn ${self.triggers.state_machine_arn}  --tracing-configuration enabled=true --logging-configuration='${self.triggers.logs_params}'"
  }
}

Затем, когда я подаю заявку в Terraform, у меня возникла ошибка:

Error: Error running command 'aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-east-1:xxxxxxxxx:stateMachine:xxxxxxxxstate-machine  --tracing-configuration enabled=true --logging-configuration='      {
        "level":"ALL",
        "includeExecutionData":true,
        "destinations":[
            {
                "cloudWatchLogsLogGroup":{
                    "logGroupArn":"arn:aws:logs:us-east-1:xxx:log-group:/aws/vendedlogs/states/xxxxxxx-Logs:*"
                    }
                }
            ]
            }
'': exit status 252. Output:
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: {

Он жалуется на недопустимый формат команды aws, я не мог найти никаких примеров в Интернете, может кто-нибудь помочь?


person Cecilia    schedule 28.01.2021    source источник
comment
Было бы полезно увидеть и терраформу, и немного больше вывода в виде текста.   -  person thekbb    schedule 28.01.2021
comment
Привет @thekbb, я обновил свой вопрос, мне удалось заставить работать «включение рентгеновских лучей», но возникла проблема с «включением ведения журнала», похоже, он жалуется на формат json?   -  person Cecilia    schedule 28.01.2021


Ответы (1)


Я не совсем понимаю, что никогда не использовал terraform с окнами, но подозреваю, что local-exec использует cmd, а не bash для запуска aws-cli. Могут быть различия в том, как что-то экранируется и интерпретируется? Попробуйте указать terraform использовать bash:

  provisioner "local-exec" {
    command     = "aws stepfunctions update-state-machine --state-machine-arn ${self.triggers.state_machine_arn}  --tracing-configuration enabled=true --logging-configuration='${self.triggers.logs_params}'"
    interpreter = ["bash", "-c"]
  }
person thekbb    schedule 28.01.2021
comment
Вы пробовали на своем конце? Это дает мне ошибку: «Здесь не ожидается аргумент с именем интерпретатор». - person Cecilia; 28.01.2021
comment
Вы знаете, какой формат json мне нужно передать в '--logging-configuration', я считаю, что это проблема json - person Cecilia; 28.01.2021
comment
Странно ... У меня в примере был какой-то странный интервал. Какую версию terraform вы используете? интерпретатор прав в документах: terraform.io/docs/ язык / ресурсы / провайдеры / - person thekbb; 28.01.2021
comment
Я использую terraform v0.13.4 - person Cecilia; 28.01.2021
comment
Я не мог использовать bash, это даст мне ошибку, например, не могу найти bash, он использует CMD - person Cecilia; 01.02.2021