gpt4 book ai didi

amazon-web-services - 允许所有 cloudwatch 事件规则访问 lambda 函数

转载 作者:行者123 更新时间:2023-12-03 20:29:25 24 4
gpt4 key购买 nike

在尝试为 cloudwatch 事件规则提供访问权限以按计划触发 lambda 函数时,我遇到了 lambda 函数策略的硬限制。

An error occurred (PolicyLengthExceededException) when calling the AddPermission operation: The final policy size (20670) is bigger than the limit (20480).

它适用于一个新的 lambda 函数,但最终它的策略会膨胀,并且会在可以访问它的 cloudwatch 事件规则上达到一个硬限制。

有人说要重新创建函数(删除/创建),但在已经配置了 cloudwatch 事件的生产环境中,这不会是一个选项,导致现有的无法访问 lambda 函数。

使用 aws cli,我能够提取我的 lambda 函数的策略,它看起来像这样:
"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/*

为了避免达到硬限制,但我似乎无法做到。即使在控制台上的 lambda 函数本身中,您也无法创建允许指定帐户的所有 cloudwatch 事件使用通配符“*”访问 lambda 函数的规则。

非常欢迎提出建议。谢谢你们

最佳答案

这被接受而没有错误:

$ aws lambda add-permission --function-name function_name\
--action 'lambda:InvokeFunction' --principal events.amazonaws.com \
--statement-id '1' \
--source-arn arn:aws:events:ap-southeast-2:123456789012:rule/*

这将接受所有 CloudWatch Events 规则。

您可以改为命名您的规则,以便您想要允许的规则在其名称中都可以具有相同的前缀,例如:
--source-arn arn:aws:events:ap-southeast-2:123456789012:rule/Event-*

关于amazon-web-services - 允许所有 cloudwatch 事件规则访问 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com