从 Lambda 函数安排的 CloudWatch Events
CloudWatch Events scheduled from Lambda function
我尝试使用 Amazon CloudWatch Events 设置调度,它应该从另一个 Lambda 调用 Lambda 函数
我使用了 Sending Events to Amazon CloudWatch Events - AWS SDK for JavaScript.
的指南
问题是,即使在设置 CloudWatch Events IAM 角色之后
{
Sid: 'CloudWatchEventsFullAccess',
Effect: 'Allow',
Action: ['*'],
Resource: '*',
},
和 Lambda 角色类似,当我调用主函数时
const cloudWatchEvents = new CloudWatchEvents()
const ruleParams = {
Name: projectId,
ScheduleExpression: crontab,
State: 'ENABLED',
RoleArn: apiCloudWatchEventsIamRole,
}
const targetParams = {
Rule: projectId,
Targets: [
{
Arn: apiLongTaskFunctionArn,
Id: 'lambdaCloudWatch',
},
],
}
cloudWatchEvents.putRule(ruleParams, (err, rule) => {
if (err) {
console.log(err)
return err
}
cloudWatchEvents.putTargets(targetParams, (err, data) => {
if (err) {
console.log(err)
return (err)
}
const eventParams = {
Entries: [
{
DetailType: 'Scheduled Event',
Source: 'aws.events',
Resources: [rule.RuleArn],
Detail: '{}',
},
],
}
cloudWatchEvents.putEvents(eventParams, (err, data) => {
if (err) {
console.log(err)
return (err)
}
console.log(data)
})
})
})
我收到了上次的回复 console.log
{ FailedEntryCount: 1,
Entries:
[ { ErrorCode: 'NotAuthorizedForSourceException',
ErrorMessage: 'Not authorized for the source.' } ] }
我不确定应该在哪里寻找答案,因为我在网络上的任何地方都没有看到这个案例的记录。
好的,所以添加到 ruleParams
EventPattern: JSON.stringify({
source: ['sourceName'],
}),
并将条目设置为
Entries: [
{
DetailType: 'Scheduled Event',
Source: 'sourceName',
Resources: [rule.RuleArn],
Detail: '{}',
},
],
解决了问题
我尝试使用 Amazon CloudWatch Events 设置调度,它应该从另一个 Lambda 调用 Lambda 函数 我使用了 Sending Events to Amazon CloudWatch Events - AWS SDK for JavaScript.
的指南问题是,即使在设置 CloudWatch Events IAM 角色之后
{
Sid: 'CloudWatchEventsFullAccess',
Effect: 'Allow',
Action: ['*'],
Resource: '*',
},
和 Lambda 角色类似,当我调用主函数时
const cloudWatchEvents = new CloudWatchEvents()
const ruleParams = {
Name: projectId,
ScheduleExpression: crontab,
State: 'ENABLED',
RoleArn: apiCloudWatchEventsIamRole,
}
const targetParams = {
Rule: projectId,
Targets: [
{
Arn: apiLongTaskFunctionArn,
Id: 'lambdaCloudWatch',
},
],
}
cloudWatchEvents.putRule(ruleParams, (err, rule) => {
if (err) {
console.log(err)
return err
}
cloudWatchEvents.putTargets(targetParams, (err, data) => {
if (err) {
console.log(err)
return (err)
}
const eventParams = {
Entries: [
{
DetailType: 'Scheduled Event',
Source: 'aws.events',
Resources: [rule.RuleArn],
Detail: '{}',
},
],
}
cloudWatchEvents.putEvents(eventParams, (err, data) => {
if (err) {
console.log(err)
return (err)
}
console.log(data)
})
})
})
我收到了上次的回复 console.log
{ FailedEntryCount: 1,
Entries:
[ { ErrorCode: 'NotAuthorizedForSourceException',
ErrorMessage: 'Not authorized for the source.' } ] }
我不确定应该在哪里寻找答案,因为我在网络上的任何地方都没有看到这个案例的记录。
好的,所以添加到 ruleParams
EventPattern: JSON.stringify({
source: ['sourceName'],
}),
并将条目设置为
Entries: [
{
DetailType: 'Scheduled Event',
Source: 'sourceName',
Resources: [rule.RuleArn],
Detail: '{}',
},
],
解决了问题