I'm trying to feed JSON as a String to CloudFormation, and it's not working.

0

I'm trying to schedule an ECS task using a Scheduler::Schedule CFN resource. Everything works fine until I try to encode the "Input" parameter. "Input" expects a String but ECS needs it to be a JSON object and for the life of me I can't make CFN happy.

For example, assuming my JSON object is:

{"containerOverrides":[{"name":"myapp","command":["mycommand"]}]}

I've tried encoding the JSON object using stringify:

"{\"containerOverrides\":[{\"name\":\"myapp\",\"command\":[\"mycommand\"]}]}"

but CFN responds with "Invalid request provided: JSON syntax error in input for the target: [Source: (String)"

I've also tried HTML encoding:

"{"containerOverrides":[{"name":"myapp","command":["mycommand"]}]}"

but I get the same response from CFN.

If I manually update the Schedule using the AWS Console and then export the Schedule using the CLI I can see the plain JSON in the output. So, the Scheduler service is working with JSON but CFN won't process it properly.

profile picture
RNHurt
已提問 3 個月前檢視次數 179 次
1 個回答
1
已接受的答案

I figured out the answer. I was formatting the string incorrectly. In my case I had to use a triple backslash to make CFN happy:

"{\\\"containerOverrides\\\":[{\\\"name\\\":\\\"myapp\\\",\\\"command\\\":[\\\"mycommand\\\"]}]}"
profile picture
RNHurt
已回答 3 個月前
  • Thank you for posting this. Wasted a whole day trying to figure this out.

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南