aws-serverless - 无服务器步进函数:在 lambda 的有效负载中传递多个字段时出错
问题描述
错误:Invalid State Machine Definition: 'SCHEMA_VALIDATION_FAILED: The value for the field 'Date.$' must be a valid JSONPath at /States/Insert Data Dynamodb/Parameters' (Service: AWSStepFunctions; Status Code: 400; Error Code: InvalidDefinition;
下面是对应的 serverless.yaml 代码。
我尝试将这两个参数包装成编码的 json 字符串并将其作为单个有效负载字段传递,它导致了相同的错误,但是当有效负载中只有一个普通字段时,此代码成功部署
关于如何传递两个参数的任何建议?
service: service-name
frameworkVersion: '2'
provider:
name: aws
runtime: go1.x
lambdaHashingVersion: 20201221
stage: ${opt:stage, self:custom.defaultStage}
region: us-east-1
tags: ${self:custom.tagsObject}
logRetentionInDays: 1
timeout: 10
deploymentBucket: lambda-repository
memorySize: 128
tracing:
lambda: true
plugins:
- serverless-step-functions
configValidationMode: error
stepFunctions:
stateMachines:
sortData:
name: datasorting-dev
type: STANDARD
role: ${self:custom.datasorting.${self:provider.stage}.iam}
definition:
Comment: "Data Sort"
StartAt: Query Data
States:
Query Data:
Type: Task
Resource: arn:aws:states:::athena:startQueryExecution.sync
Parameters:
QueryString: >-
select * from table.data
WorkGroup: primary
ResultConfiguration:
OutputLocation: s3://output/location
Next: Insert Data Dynamodb
Insert Data Dynamodb:
Type: Task
Resource: arn:aws:states:::lambda:invoke
Parameters:
FunctionName: arn:aws:lambda:us-east-1:${account-id}:function:name
Payload:
OutputLocation.$: $.QueryExecution.ResultConfiguration.OutputLocation
Date.$: ${self:custom.dates.year}${self:custom.dates.month}${self:custom.dates.day}
End: true
解决方案
您的Date.$
财产价值为${self:custom.dates.year}${self:custom.dates.month}${self:custom.dates.day}
。让我们假设:
const dates = {
"year": "2000",
"month": "01",
"day": "20"
}
结果将是Date.$: "20000120"
无效的 JSON 路径。
JSON Path 需要以$
符号开头,每一层都以.
.
你想实现这样的目标吗?$.2000.01.20
?
如您所见,问题不在于传递 2 个参数,而是由字符串插值创建的错误字符串 JSON 路径为Date.$
.
一些有用的链接:
https://github.com/json-path/JsonPath
https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-paths.html
推荐阅读
- javascript - 容器上的 iframe 模态单击事件
- apache-spark - pyspark中的线性回归假设
- ajax - 使用 XAMPP apache 服务器 Laravel 8 时调用路由时出错
- ios - iOS:添加使用系统菜单(设置->常规->iPhone存储)从我的应用程序中删除文件的功能
- javascript - p5.js - 在相关时间从两点动画一条线
- java - 无法使用 Kubernetes Java 客户端将 volumeMounts 设置为特定容器
- c++ - __attribute__((packed)) 的性能影响,是否仅对涉及“打包”结构的指令存在性能影响?
- javascript - 当 JSON 在值中包含“'”元素时服务器错误 400
- python - dict.items() 函数
- vba - 使用 Item_Add 将两个结果之一应用于传入电子邮件