将 CloudWatchEvents 添加到 AWS lambda 函数
Adding CloudWatchEvents to AWS lambda function
我有 2 个 AWS lambda 函数属于同一个账户生产者和消费者函数。我希望生产者在指定时间将消费者安排到运行。当我在 CloudWatch Events 下检查时,正在创建事件但未触发消费者。我正在使用这个 link
生产者代码
var AWS = require('aws-sdk');
var cwevents = new AWS.CloudWatchEvents({apiVersion: '2015-10-07'});
var params_for_rule = {
Name: 'DEMO_EVENT',
ScheduleExpression: 'cron(0/3 * * * ? *)',
State: 'ENABLED'
};
var params_for_target = {
Rule: 'DEMO_EVENT',
Targets: [
{
Arn: 'consumer',
Id: 'default',
}
]
};
exports.handler = async (event, context, callback) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
cwevents.putRule(params_for_rule, function(err, data){
if(err){
console.log("Not Working");
}
else{
console.log("Working");
cwevents.putTargets(params_for_target, function(err, data){
if(err){
console.log("Not Working");
}
else{
console.log("Working");
}
});
}
});
};
您在函数 putTargets
将 return 之前调用 callback
。
您的 callback
代码应在 putTargets
return 秒后成功完成。
cwevents.putRule(params_for_rule, function(err, data){
if(err){
console.log("Not Working");
}
else{
console.log("Working");
cwevents.putTargets(params_for_target, function(err, data){
if(err){
console.log("Not Working");
callback(err, null);
}
else{
console.log("Working");
callback(null, response);
}
});
}
});
要添加云监视事件,我们需要使用 addPermission 方法添加某些权限。这里是
document.
这里是示例代码。
cwevents.putRule(params_for_rule, function(err, data){
if(err){
console.log("Not Working",data);
}
else{
console.log("Working",data);
lambda.addPermission(lambdaPermission, function(err, data){
if(err){
console.log(err);
}
else{
console.log(data);
cwevents.putTargets(params_for_target, function(err, data){
if(err){
console.log("Not Working",data);
}
else{
console.log("Working",data);
}
});
}
});
}
});
我有 2 个 AWS lambda 函数属于同一个账户生产者和消费者函数。我希望生产者在指定时间将消费者安排到运行。当我在 CloudWatch Events 下检查时,正在创建事件但未触发消费者。我正在使用这个 link
生产者代码
var AWS = require('aws-sdk');
var cwevents = new AWS.CloudWatchEvents({apiVersion: '2015-10-07'});
var params_for_rule = {
Name: 'DEMO_EVENT',
ScheduleExpression: 'cron(0/3 * * * ? *)',
State: 'ENABLED'
};
var params_for_target = {
Rule: 'DEMO_EVENT',
Targets: [
{
Arn: 'consumer',
Id: 'default',
}
]
};
exports.handler = async (event, context, callback) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
cwevents.putRule(params_for_rule, function(err, data){
if(err){
console.log("Not Working");
}
else{
console.log("Working");
cwevents.putTargets(params_for_target, function(err, data){
if(err){
console.log("Not Working");
}
else{
console.log("Working");
}
});
}
});
};
您在函数 putTargets
将 return 之前调用 callback
。
您的 callback
代码应在 putTargets
return 秒后成功完成。
cwevents.putRule(params_for_rule, function(err, data){
if(err){
console.log("Not Working");
}
else{
console.log("Working");
cwevents.putTargets(params_for_target, function(err, data){
if(err){
console.log("Not Working");
callback(err, null);
}
else{
console.log("Working");
callback(null, response);
}
});
}
});
要添加云监视事件,我们需要使用 addPermission 方法添加某些权限。这里是 document.
这里是示例代码。
cwevents.putRule(params_for_rule, function(err, data){
if(err){
console.log("Not Working",data);
}
else{
console.log("Working",data);
lambda.addPermission(lambdaPermission, function(err, data){
if(err){
console.log(err);
}
else{
console.log(data);
cwevents.putTargets(params_for_target, function(err, data){
if(err){
console.log("Not Working",data);
}
else{
console.log("Working",data);
}
});
}
});
}
});