如何配置AWS Lambda执行角色以获取Batch作业列表权限?
解决AWS Lambda执行Batch ListJobs的权限问题
问题根源
从报错信息能直接看出,你的Lambda执行角色myproject/dev-StartJobLambda-HZO22Z5IMTFB没有被授予执行batch:ListJobs的权限,所以调用client.list_jobs(jobQueue=_job_queue)时触发了AccessDeniedException。
一步步搞定权限配置
你需要在IAM控制台给这个角色添加对应的权限策略,具体操作如下:
定位到目标Lambda执行角色
- 登录AWS控制台,进入IAM服务。
- 在左侧导航栏点击「角色」,用搜索框输入
dev-StartJobLambda-HZO22Z5IMTFB,找到你的Lambda执行角色。
添加权限策略(两种可选方案)
推荐优先用自定义精细策略(遵循最小权限原则),如果追求快速也可以用AWS托管策略:方案1:自定义精细权限策略(更安全)
- 在角色详情页切换到「权限」标签,点击「添加权限」→「创建内联策略」。
- 切换到「JSON」标签,粘贴以下策略内容(记得把
REGION、ACCOUNT_ID、JOB_QUEUE_NAME替换成你自己的实际值):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "batch:ListJobs", "Resource": "arn:aws:batch:REGION:ACCOUNT_ID:job-queue/JOB_QUEUE_NAME" } ] } - 点击「下一步」,给策略起个直观的名字(比如
BatchListJobsForMyQueue),最后点击「创建策略」。
方案2:使用AWS托管策略(快速便捷)
- 如果不需要严格的权限限制,直接在角色的「权限」标签点击「添加权限」→「附加策略」。
- 搜索
AmazonBatchReadOnlyAccess(这个托管策略包含batch:ListJobs等所有Batch只读操作),选中后点击「附加策略」即可。
验证修复效果
权限配置完成后,重新触发你的Lambda函数,调用client.list_jobs()应该就能正常执行了。
小提示
- 尽量避免使用
AmazonBatchFullAccess这类权限过宽的策略,减少不必要的安全风险。 - 如果需要访问多个Job队列,可以把策略里的Resource改成通配符形式:
arn:aws:batch:REGION:ACCOUNT_ID:job-queue/*。
内容的提问来源于stack exchange,提问作者Nate Reed
相关产品推荐
相关产品推荐

