Я столкнулся с жестким ограничением политики лямбда-функций при попытке предоставления доступа к правилу события cloudwatch для запуска лямбда-функции по расписанию.
An error occurred (PolicyLengthExceededException) when calling the AddPermission operation: The final policy size (20670) is bigger than the limit (20480).
Он работает для новой лямбда-функции, но в конечном итоге ее политика будет раздутой и достигнет жесткого ограничения числа в правиле события cloudwatch, которое может получить к нему доступ.
Некоторые сказали, чтопересоздать функцию (удалить / создать), но это не будет вариантом в производственной среде, где в ней уже сконфигурированы события cloudwatch, в результате чего существующие теряют доступ к лямбда-функции.
Используя aws cli, я смог извлечь политику моей лямбда-функции, она выглядит примерно так:
"Statement": [{
"Sid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:*",
"Resource": "arn:aws:lambda:xxxxx:xxxxxxxxxxx:function:xxxxxxxxxxxxx",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:events:xxxxxxx:xxxxxx:rule/xxxxxxxxx"
}
}
}]
Итак, я искал что-то похожее на AWS: SourceArn
arn:aws:events:xxxxxxx:xxxxxx:rule/*
Чтобы избежать жестких ограничений, но я не могу этого сделать.Даже в самой лямбда-функции на консоли вы не сможете создать такое правило, которое позволит всем событиям cloudwatch указанной учетной записи иметь доступ к лямбда-функции с использованием подстановочного знака '*'.
Предложения приветствуются.Спасибо, ребята