【发布时间】:2022-01-07 08:43:22
【问题描述】:
我正在尝试使用 aws cloudwatch 事件在 Node js 中进行任务调度,因此,我为此创建了一个 cloudwatch 事件规则,然后我添加了一个 lambda 函数作为目标。我在这里使用事件模式来创建 cloudwatch 事件规则,而不是预定表达式。现在我正在尝试在预定时间向它添加事件,但是一旦将事件放在 cloudwatch 上,事件就会立即触发。我不知道为什么会这样,我研究了很多但没有发现任何相关的东西。
我使用这些官方文档作为参考:- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putEvents-property https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/cloudwatch-examples-sending-events.html
我是 AWS 新手,请在这里帮助我。
这是执行上述操作的代码。
var params = {
Name: 'DEMO_EVENT',
RoleArn: 'iamroleArn',
EventPattern: JSON.stringify({
source: ['myapp.events'],
}),
State: 'ENABLED'
};
cwevents.putRule(params, function(err, rule) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", rule.RuleArn);
var params = {
Rule: 'DEMO_EVENT',
Targets: [
{
Arn: 'lambda function arn',
Id: "default"
}
]
};
cwevents.putTargets(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
var params = {
Entries: [
{
Detail: JSON.stringify({
"meetingNo": "82565852285"
}),
DetailType: 'meeting',
Resources: [
rule.RuleArn
],
Source: 'myapp.events',
Time: new Date("2022-01-07T08:00:00Z"), // here I am sending the schedule time in utc
}
]
};
cwevents.putEvents(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.Entries);
}
});
}
});
}
});
【问题讨论】:
标签: node.js amazon-web-services aws-lambda aws-sdk amazon-cloudwatch