无需API端点能否调用Lambda函数?调用报AccessDenied错误是什么原因
直接调用Lambda可行性说明
无需通过API端点直接调用Lambda是AWS官方支持的合法调用方式,你当前使用的AWS SDK invoke 接口就是用于这类场景的原生实现,适合内部后端服务之间的调用,无需额外部署API网关等中间组件。
AccessDeniedException报错排查方向
你已配置AWSLambdaRole权限仍触发报错,可从以下维度排查问题:
- 权限附加对象错误:确认你配置的权限策略是附加到了报错信息中标注的IAM用户
arn:aws:iam::<user-id>:user上,而非附加到Lambda的执行角色、其他IAM用户或角色上。 - 权限策略缺少对应动作:默认的AWSLambdaRole托管策略一般仅包含Lambda自身运行时需要的权限,不会包含
lambda:InvokeFunction调用权限,你需要为对应IAM用户单独附加包含如下权限的自定义策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:eu-east-1:<user-id>:function:function" } ] }
- 资源ARN不匹配:确认策略中填写的Lambda资源ARN和报错中的目标Lambda ARN完全一致,区域、账号ID、函数名三个字段不能有任何偏差,尤其注意报错中目标Lambda的区域为
eu-east-1,不要误填为其他区域。 - 权限未生效:IAM权限配置完成后存在最长5分钟的缓存延迟,刚完成配置可以稍作等待后重试。
- 调用凭证错误:确认后端代码调用时使用的访问密钥、角色凭证属于你配置了权限的IAM用户,没有误用其他账号或其他IAM实体的凭证。
- 存在显式拒绝规则:检查该IAM用户所属的用户组、所在AWS组织的SCP策略,是否存在显式拒绝
lambda:InvokeFunction操作的配置,显式拒绝规则的优先级高于允许规则。
内容的提问来源于stack exchange,提问作者code0x00
相关产品推荐
相关产品推荐

