通过 AWS CloudWatch 事件规则将每次新的 UUID 发送到 AWS 步骤函数
Send every time new UUID to AWS step function through AWS CloudWatch event rule
如何将唯一值(UUID4)发送到步骤函数是json格式,每次从cloudwatch事件规则触发时?
任何人都可以帮忙吗?提前致谢。
由于 AWS 最近添加了 Step Functions as a CloudWatch target,您可以轻松地使 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
});
聚会有点晚了,但万一其他人遇到这个...
当您设置您的 cloudwatch 事件时,您可以在其上设置输入转换器,幸运的是,被触发的事件有一个 ID 应该可以解决您的问题,而无需向您的状态机添加任何额外的 lambda。
下面是一个设置示例,这样您的状态机的输入就会像这样:
{
"meta": {
"uniqueId": "96c80428-14fe-c8d0-f6e3-639384992391"
}
}
使用 AWS 控制台:
Screenshot
使用代码 (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
}
});
如何将唯一值(UUID4)发送到步骤函数是json格式,每次从cloudwatch事件规则触发时? 任何人都可以帮忙吗?提前致谢。
由于 AWS 最近添加了 Step Functions as a CloudWatch target,您可以轻松地使 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
});
聚会有点晚了,但万一其他人遇到这个...
当您设置您的 cloudwatch 事件时,您可以在其上设置输入转换器,幸运的是,被触发的事件有一个 ID 应该可以解决您的问题,而无需向您的状态机添加任何额外的 lambda。
下面是一个设置示例,这样您的状态机的输入就会像这样:
{
"meta": {
"uniqueId": "96c80428-14fe-c8d0-f6e3-639384992391"
}
}
使用 AWS 控制台: Screenshot
使用代码 (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
}
});