Я пытался настроить планирование с помощью Amazon CloudWatch Events, которая должна вызывать функцию Lambda, из другой системы Lambda, которую я использовал из Отправка событий в Amazon CloudWatch Events - AWS SDK для JavaScript .
Проблема в том, что даже после установки роли IAM CloudWatch Events
{
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.' } ] }
Я не уверен, где мне искать ответ, поскольку я не видел ни одного случая, документированного в Интернете.