0

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

...
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)...

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

4

1 回答 1

3

这应该是一个 json,所以lambdaArnlambda2Arn并且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
            }
          }
于 2020-05-27T05:54:09.680 回答