amazon-web-services - 从 Lambda 函数安排的 CloudWatch 事件
问题描述
我尝试使用 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 角色相似,当我调用 main 函数时
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: '{}',
},
],
解决了这个问题
推荐阅读
- c# - Selenium SendKeys (Keys.PageDown); 如何进行一次点击
- r - 从 LOESS 图导出结果
- arrays - 谷歌表格从特定列复制单元格
- api - 一个好的做法是在错误请求中返回有效值列表吗?
- apache-kafka - Spring Cloud Kafka Streams 中的错误处理
- r - 如何在闪亮的代码块中使用反应参数作为参数的值
- amazon-eks - eks 和 StateFulSets 中的 Calico CNI
- vb.net - 使用表单和按钮的 Outlook VSTO 加载项 - 转发电子邮件不会显示并且无法在主页功能区上获取按钮
- python - 如何将多个字符串连接成一个
- swiftui - 如何检测何时单击/点击 MapMarker?