当每次从cloudwatch事件规则触发时,如何将唯一值(UUID4)发送到step函数是json格式?任何人都可以帮助解决这个问题。提前致谢。
问问题
2000 次
2 回答
0
由于 AWS 最近将Step Functions 添加为 CloudWatch 目标,因此您可以轻松地使 Step Function 中的第一个函数生成 UUID。然后将其传递给下一个函数。这将允许 Step Function 是自包含的。
"GenerateUuid": {
"Type": "Task",
"Resource": "arn:aws:states:us-east-1:123456789012:activity:GenerateUuid",
"Next": "CreateNewRecord"
},
另一种方法是让 Lambda 函数生成 UUID 并传递到状态机,您可以再次从 CloudWatch 事件触发。
var params = {
stateMachineArn: 'MyStateMachine-12345',
input: uuidv4()
};
stepfunctions.startExecution(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
于 2017-09-30T14:30:27.233 回答
0
派对有点晚了,但万一其他人遇到这个......
当您设置 cloudwatch 事件时,您可以在其上设置输入转换器,幸运的是,触发的事件有一个 ID,可以解决您的问题,而无需向您的状态机添加任何额外的 lambda。
下面是一个设置它的示例,以便状态机的输入如下所示:
{
"meta": {
"uniqueId": "96c80428-14fe-c8d0-f6e3-639384992391"
}
}
使用 AWS 控制台: 屏幕截图
使用代码(JS):
const targets = [
{
Arn: "my-state-machine-arn",
Id: "my cloud watch rule name",
InputTransformer: {
InputTemplate: '{"meta":{"uniqueId":<id>}}',
InputPathsMap: {
id: '$.id',
},
},
RoleArn: "my-cloudwatch-arn",
},
];
const params = {
Rule: "my cloud watch rule name",
Targets: targets,
};
cloudwatch.putTargets(params, (err, data) => {
if (err) {
// error
} else {
// success
}
});
于 2018-10-22T18:00:47.370 回答