如何在不上传压缩包的前提下完成AWS Lambda中boto3的授权配置
Lambda 环境下 boto3 认证的零打包配置方法
先把两个容易踩的坑掰明白:
- 全版本的AWS Lambda Python运行时,都内置预装了适配版本的boto3库,根本不需要在本地手动装boto3依赖、打压缩包上传。之前流传的“本地装依赖传boto3”是Lambda早期没内置SDK阶段的老黄历了,现在直接在Lambda网页控制台写代码就能调用boto3,啥额外依赖包都不用传。
- boto3在Lambda运行环境里的认证是全自动的:运行时会自动加载函数绑定的IAM执行角色的临时凭证,根本不用手动写配置profile、贴AccessKey做登录。现在报的
AccessDeniedException根本不是boto3没配认证的问题,是当前Lambda绑的执行角色,压根没有调用GetFunction接口的权限。
纯网页端配好权限的步骤(全程不用写额外的认证代码)
- 打开报错的那个Lambda函数的网页管理页,进「配置」标签,选左侧菜单的「权限」板块
- 找到页面上的「执行角色」入口,点进去跳转到对应的IAM角色配置页
- 在IAM角色的权限区域,选「添加权限」-「创建内联策略」
- 策略用可视化模式配置即可:
- 服务选「Lambda」
- 操作勾上
GetFunction(后续要调用其他Lambda接口,按需勾选对应权限即可) - 资源绑定你代码里要调用的
jims_first_function对应的ARN
- 保存策略配置就行,不用重启Lambda函数,权限基本1分钟内就会自动生效。
你贴出的这段代码本身的boto3调用逻辑、语法一点问题都没有:
import json import boto3 def lambda_handler(event, context): client = boto3.client('lambda',region_name='us-east-2') response = client.get_function(FunctionName='jims_first_function') return { 'statusCode': 200, 'body': json.dumps(response) }
只要执行角色的权限配置完成,直接在网页控制台把代码贴上去部署就能正常跑通,根本不需要折腾本地打包、手动认证那些流程。
内容的提问来源于stack exchange,提问作者Jimbo
相关产品推荐
相关产品推荐

