使用ASK CLI部署Lambda函数时遇AccessDeniedException问题求助
解决ASK CLI部署时Lambda创建的AccessDeniedException问题
你的问题核心出在IAM权限策略的资源ARN格式错误上,导致AWS无法识别允许操作的目标资源。下面是具体的修复步骤和原因解释:
问题根源
你提供的权限策略里,Resource字段存在两个关键疏漏:
- 缺少你的AWS账号ID(比如错误示例里的
12345678),ARN必须包含账号ID才能精准定位到你的账户资源; - 资源路径末尾没有添加通配符
*,无法匹配以ask-开头的具体函数/角色名称。
比如你当前的Lambda资源写的是arn:aws:lambda:::function:ask-,正确格式应该是arn:aws:lambda:us-east-1:12345678:function:ask-*(替换成你的实际账号ID和部署区域)。
修复步骤
1. 更新IAM权限策略
将ASK_CLI_USER用户的权限策略替换为以下修正后的版本(记得把12345678换成你的AWS账号ID,us-east-1换成你部署Lambda的目标区域):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:GetRole", "iam:AttachRolePolicy", "iam:PassRole" ], "Resource": "arn:aws:iam::12345678:role/ask-*" }, { "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:CreateFunction", "lambda:GetFunction", "lambda:UpdateFunctionCode", "lambda:ListFunctions" ], "Resource": "arn:aws:lambda:us-east-1:12345678:function:ask-*" }, { "Effect": "Allow", "Action": [ "logs:FilterLogEvents", "logs:GetLogEvents", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:us-east-1:12345678:log-group:/aws/lambda/ask-*" } ] }
2. 验证权限配置
进入IAM控制台找到ASK_CLI_USER用户:
- 确认修正后的策略已经正确附加到该用户;
- 检查是否存在其他**拒绝(Deny)**类型的策略,避免权限被覆盖。
3. 重新执行部署
在终端中重新运行ask deploy命令,此时IAM用户应该具备创建Lambda函数的权限了。
额外提示
- 如果你不确定自己的AWS账号ID,可以在AWS控制台右上角的账号菜单中查看;
- ASK CLI默认会在
us-east-1区域创建Lambda函数,若需要部署到其他区域,要同步修改策略中的区域字段。
内容的提问来源于stack exchange,提问作者Sruthy
相关产品推荐
相关产品推荐

