CloudFormation YAML状态机:无法识别令牌的\u JSON\u描述无效

CloudFormation YAML状态机:无法识别令牌的\u JSON\u描述无效,yaml,amazon-cloudformation,aws-step-functions,serverless-application-model,Yaml,Amazon Cloudformation,Aws Step Functions,Serverless Application Model,我有以下代码使用CloudFormation部署Step函数状态机: ... DefinitionString: !Sub - | { "StartAt": "Save Artifact to S3", "States": { "Save Artifact to S3": { "Type": "Task",

我有以下代码使用CloudFormation部署Step函数状态机:

...
DefinitionString: 
        !Sub
          - |
            {
              "StartAt": "Save Artifact to S3",
              "States": {
                "Save Artifact to S3": {
                  "Type": "Task",
                  "Resource": ${lambdaArn},
                  "Next": "Format Notification"
                },
                "Format Notification": {
                  "Type": "Task",
                  "Resource": ${lambda2Arn},
                  "Next": "Publish to SNS"
                },
                "Publish to SNS": {
                  "Type": "Task",
                  "Resource": "arn:aws:states:::sns:publish",
                  "Parameters": {
                    "TopicArn": ${snsArn},
                    "Message.$": "$.message",
                    "Subject.$": "$.subject"
                  },
                  "End": true
                }
              }
            }
          - lambdaArn: !GetAtt SavetoS3Function.Arn
            lambda2Arn: !GetAtt NotifyUserFunction.Arn
            snsArn: !Ref NotifyUserTopic
...
使用SAM在AWS上部署时,出现以下错误:

Invalid State Machine Definition: 'INVALID_JSON_DESCRIPTION: Unrecognized token 'arn': was expecting ('true', 'false' or 'null')  at [Source: (String)...

其他一切看起来都是正确的,那么这里发生了什么?所有的ARN都在定义字符串中被正确引用,所以这可能不是问题所在。

这应该是一个json,所以
lambdaArn
lambda2Arn
snsArn
应该在引号中

        {
          "StartAt": "Save Artifact to S3",
          "States": {
            "Save Artifact to S3": {
              "Type": "Task",
              "Resource": "${lambdaArn}",
              "Next": "Format Notification"
            },
            "Format Notification": {
              "Type": "Task",
              "Resource": "${lambda2Arn}",
              "Next": "Publish to SNS"
            },
            "Publish to SNS": {
              "Type": "Task",
              "Resource": "arn:aws:states:::sns:publish",
              "Parameters": {
                "TopicArn": "${snsArn}",
                "Message.$": "$.message",
                "Subject.$": "$.subject"
              },
              "End": true
            }
          }