AWS Lambda以编程方式设置函数访问策略

问题描述

我正在尝试使用this example设置用户特定的Lambda策略。有人可以告诉我为什么这种仅访问一个lambda的资源规范是错误的吗?

resource = "arn:aws:region:*:*:function:orderinputapi-alpha-writeMe";

当我使用时:

resource="*"

它可以正常工作(用户具有对所有lambda的完全访问权限),但是当我尝试将访问限制为仅允许单个lambda函数时,当我尝试访问它时,我得到“用户无权访问该资源”。我确认该函数是lambda的确切名称

我的代码创建的完整策略声明为:

{ Action: 'execute-api:Invoke',Effect: 'Allow',Resource:'arn:aws:region:*:*:function:orderinputapi-alpha-writeMe' }

解决方法

您的ARN错误: 而不是arn:aws:region:*:*:function:orderinputapi-alpha-writeMe,它应该是arn:aws:lambda:*:*:function:orderinputapi-alpha-writeMe

此外,如果您为相同的区域和帐户设置权限,则只需删除*即可使ARN为:

arn:aws:lambda:::function:orderinputapi-alpha-writeMe