[英]CloudFormation YAML State Machine: INVALID_JSON_DESCRIPTION for unrecognized token
I have the following code to deploy a Step Functions State Machine using CloudFormation:我有以下代码使用 CloudFormation 部署 Step Functions State 机器:
...
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
...
Using SAM to deploy on AWS, I get the following error:使用 SAM 在 AWS 上部署,出现以下错误:
Invalid State Machine Definition: 'INVALID_JSON_DESCRIPTION: Unrecognized token 'arn': was expecting ('true', 'false' or 'null') at [Source: (String)...
Everything else looks correct, so what is going on here?其他一切看起来都是正确的,那么这里发生了什么? All the Arns are being referred correctly inside the Definition String, so that's probably not the issue.
所有 Arns 都在定义字符串中被正确引用,所以这可能不是问题所在。
This should be a json, so lambdaArn
, lambda2Arn
and snsArn
should be in quotations :这应该是 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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.