如何本地运行AWS Lambda访问DynamoDB并解决SAM CLI相关问题
SAM CLI本地测试Golang Lambda兼容本地与云端部署配置方案
问题1:zip部署包本地运行权限报错修复
该问题由Windows环境下SAM CLI解压zip包时未自动给bootstrap文件分配可执行权限导致,云端为Linux环境无此限制,修复无需修改template.yml:
- 执行sam local命令前,先在当前终端设置环境变量:
- CMD环境:
set SAM_CLI_BINARY_EXECUTABLE_PERMISSIONS=755 - PowerShell环境:
$env:SAM_CLI_BINARY_EXECUTABLE_PERMISSIONS=755
- CMD环境:
- 后续再执行
sam local start-api等测试命令即可正常运行。可将该环境变量添加到Windows系统用户环境变量中,无需每次执行前手动设置。
问题2:本地AWS凭证变量注入方案
完全不需要在template.yml中声明AWS保留环境变量,两种方案均可实现本地凭证注入,且不影响云端部署:
- 方案1(优先推荐):使用本地AWS CLI凭证配置
提前通过aws configure命令或直接编辑C:\Users\用户名\.aws\credentials文件配置好凭证与会话令牌,sam local运行时会自动读取本地凭证,无需额外传参。需要切换不同权限的凭证时,直接在sam命令后添加--profile 配置名参数即可。 - 方案2:终端临时注入变量
如果使用临时生成的凭证,直接在当前终端设置三个环境变量后再启动sam本地服务即可,无需在template中提前声明:$env:AWS_ACCESS_KEY_ID = "你的AccessKey ID" $env:AWS_SECRET_ACCESS_KEY = "你的SecretAccessKey" $env:AWS_SESSION_TOKEN = "你的会话令牌" sam local start-api
以上两种方案均不需要修改现有template.yml配置,云端部署时不需要做任何调整,可同时满足本地测试与云端上线的需求。
内容的提问来源于stack exchange,提问作者Moha
相关产品推荐
相关产品推荐

