我正在制作一個 4 lambda 步驟函式,導致一個巨大的 JSON,它很容易出錯。我通過 JSON 格式化程式進行了處理,所以我不確定我在這里出了什么問題。任何幫助表示贊賞,謝謝。
關于這一點,是否有工具可以幫助我將 CF 步驟函式轉換為 HCL/JSON?
這是 JSON:
{
"StartAt":"StartState",
"States":{
"StartState":{
"Type":"Pass",
"Next":"GetLastExecutionDateTime"
},
"GetLastExecutionDateTime":{
"Type":"Task",
"Parameters":{
"Payload.$":"$"
},
"Resource":"${aws_lambda_function.read.arn}",
"Retry":{
"ErrorEquals":[
"States.ALL"
],
"IntervalSeconds":"2",
"MaxAttempts":"1",
"BackoffRate":"2"
},
"Next":"GetDeltaRecordsNumber",
"ResultPath":"$.lastExecutedDateTime",
"OutputPath":"$.lastExecutedDateTime.Payload"
},
"GetDeltaRecordsNumber":{
"Type":"Task",
"Parameters":{
"Payload.$":"$"
},
"Resource":"${aws_lambda_function.count.arn}",
"Retry":{
"ErrorEquals":[
"States.ALL"
],
"IntervalSeconds":"2",
"MaxAttempts":"6",
"BackoffRate":"2"
},
"Next":"DeltaRecordsNumber",
"ResultPath":"$.Payload"
},
"DeltaRecordsNumber":{
"Type":"Choice",
"Choices":{
"Variable":"$.Payload.Payload.totalRows",
"NumericEquals":"0",
"Next":"EndState"
},
"Default":"Iterator"
},
"Iterator":{
"Type":"Map",
"Next":"PassNewExecutionDateTime",
"Iterator":{
"StartAt":"ExecuteSqlQuery",
"States":{
"ExecuteSqlQuery":{
"Type":"Task",
"Resource":"${aws_lambda_function.query.arn}",
"OutputPath":"$.Payload",
"Parameters":{
"Payload.$":"$"
},
"End":"True"
}
}
},
"ItemsPath":"$.Payload.Payload.iterations",
"Retry":{
"ErrorEquals":[
"States.ALL"
],
"IntervalSeconds":"1",
"MaxAttempts":"1",
"BackoffRate":"1"
},
"Catch":{
"ErrorEquals":[
"States.ALL"
],
"Next":"EndState",
"ResultPath":"$.Payload"
},
"ResultPath":"null"
},
"PassNewExecutionDateTime":{
"Type":"Pass",
"Next":"StoreNewExecutionDateTIme",
"OutputPath":"$.Payload.Payload"
},
"StoreNewExecutionDateTIme":{
"Type":"Task",
"Resource":"${aws_lambda_function.write.arn}",
"OutputPath":"$.Payload",
"Parameters":{
"Payload.$":"$"
},
"Retry":{
"ErrorEquals":[
"States.ALL"
],
"IntervalSeconds":"2",
"MaxAttempts":"1",
"BackoffRate":"2"
},
"Next":"EndState"
},
"EndState":{
"Type":"Pass",
"End":"true"
}
}
}
這是錯誤:
?
│ Error: error creating Step Function State Machine (dev-main-workflow): InvalidDefinition: Invalid State Machine Definition: 'SCHEMA_VALIDATION_FAILED: Expected value of type [ARRAY] at /States/GetLastExecutionDateTime/Retry, SCHEMA_VALIDATION_FAILED: Expected value of type [ARRAY] at /States/GetDeltaRecordsNumber/Retry, SCHEMA_VALIDATION_FAILED: Expected value of type [ARRAY] at /States/DeltaRecordsNumber/Choices, SCHEMA_VALIDATION_FAILED: Expected value of type Boolean at /States/Iterator/Iterator/States/ExecuteSqlQuery/End, SCHEMA_VALIDATION_FAILED: Expected value of type [ARRAY] at /States/Iterator/Retry, SCHEMA_VALIDATION_FAILED: Expected value of type [ARRAY] at /States/Iterator/Catch, SCHEMA_VALIDATION_FAILED: Value is not a Reference Path: Reference path didn't start with '$' at /States/Iterator/ResultPath, SCHEMA_VALIDATION_FAILED: Expected value of type [ARRAY] at /States/StoreNewExecutionDateTIme/Retry, SCHEMA_VALIDATION_FAILED: Expected value of type Boolean at /States/EndState/End, MISSING_END_STATE: Workflow has no terminal state at null, MISSING_TRANSITION_TARGET: State "Iterator" is not reachable. at /States/Iterator'
│
│ with aws_sfn_state_machine.main-workflow,
│ on step-function.tf line 3, in resource "aws_sfn_state_machine" "main-workflow":
│ 3: resource "aws_sfn_state_machine" "main-workflow" {
│
?
uj5u.com熱心網友回復:
這里缺少陣列,應該是這樣
"Resource":"${aws_lambda_function.read.arn}",
"Retry":[{
"ErrorEquals":[
"States.ALL"
],
"IntervalSeconds":"2",
"MaxAttempts":"1",
"BackoffRate":"2"
},]
你的選擇流程也有同樣的問題,應該是
"DeltaRecordsNumber":{
"Type":"Choice",
"Choices":[
{
"Variable":"$.Payload.Payload.totalRows",
"NumericEquals": 0,
"Next":"EndState"
}
],
"Default":"Iterator"
},
您的 JSON 檔案中有更多重試,您需要在其中使用陣列而不是物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366629.html
