amazon/aws-sam-cli-emulation-image-python3.8该镜像为 AWS SAM CLI(Serverless Application Model Command Line Interface)提供本地测试支持,用于模拟 AWS Lambda 的执行环境。它基于 Amazon Linux 构建,集成了 Lambda 运行时所需的编程语言软件及核心文件,支持开发者在本地环境验证 Lambda 函数逻辑,无需直接部署至 AWS 云环境。
handler 函数)。该镜像通常由 SAM CLI 自动管理,无需手动执行 docker run。通过以下 SAM CLI 命令触发本地测试时,镜像会被自动拉取并启动:
bash# 本地调用指定 Lambda 函数(需提前准备事件文件 event.json) sam local invoke "FunctionName" -e event.json # 启动本地 API Gateway 模拟服务(用于测试 HTTP 触发型函数) sam local start-api # 启动 Lambda 本地模拟器(支持通过 AWS SDK 或 CLI 触发函数) sam local start-lambda
如需自定义测试环境(如修改运行时参数、挂载本地依赖),可手动启动容器:
bashdocker run -d \ --name lambda-local-env \ -v /本地函数代码目录:/var/task \ # 挂载 Lambda 函数代码(必填) -e AWS_REGION="us-east-1" \ # 设置 AWS 区域(影响 SDK 客户端默认配置) -e LAMBDA_TASK_ROOT="/var/task" \ # 指定函数代码根目录(固定为 /var/task) -e LAMBDA_FUNCTION_NAME="MyFunc" \# 函数名称(自定义) -p 9000:8080 \ # 映射运行时接口端口(8080 为 RIE 默认端口) amazon/aws-sam-cli-emulation-image-<runtime>:<tag> # 替换为具体 runtime 和标签
说明:
<runtime>需替换为目标函数运行时(如python3.9、nodejs18.x);<tag>为镜像版本标签(如latest或具体版本号,可从 AWS ECR 仓库 获取)。
在多服务依赖场景(如 Lambda + 本地 DynamoDB)中,可通过 Docker Compose 集成:
yamlversion: '3.8' services: lambda: image: amazon/aws-sam-cli-emulation-image-python3.9:latest volumes: - ./lambda-code:/var/task # 挂载本地函数代码 environment: - AWS_REGION=us-west-2 - DYNAMODB_ENDPOINT=[***] # 指向本地 DynamoDB 服务 ports: - "9000:8080" # 暴露 RIE 接口,用于接收函数调用请求 depends_on: - dynamodb dynamodb: image: amazon/dynamodb-local:latest ports: - "8000:8000" command: "-jar DynamoDBLocal.jar -inMemory" # 内存模式运行(数据不持久化)
| 环境变量名 | 描述 | 默认值示例 |
|---|---|---|
LAMBDA_TASK_ROOT | Lambda 函数代码根目录,容器内固定为 /var/task,需通过挂载本地目录注入代码 | /var/task |
AWS_REGION | AWS 区域配置,影响 AWS SDK 客户端默认区域(如 us-east-1) | us-east-1 |
LAMBDA_FUNCTION_NAME | 函数名称,用于日志和错误信息标识 | UnnamedFunction |
| 环境变量名 | 描述 | 默认值示例 |
|---|---|---|
LAMBDA_MEMORY_SIZE | 分配给函数的内存大小(MB),影响 CPU 资源配额 | 128 |
LAMBDA_TIMEOUT | 函数超时时间(秒) | 3 |
AWS_ACCESS_KEY_ID | 本地测试用 AWS 访问密钥(仅用于模拟,无需真实密钥) | test |
AWS_SECRET_ACCESS_KEY | 本地测试用 AWS 密钥(仅用于模拟,无需真实密钥) | test |
/var/task:必须挂载本地 Lambda 函数代码目录,包含函数入口文件(如 handler.py、index.js)及依赖文件(如 requirements.txt、node_modules)。/tmp:Lambda 函数临时存储目录,如需持久化临时文件可挂载本地目录(如 -v /本地临时目录:/tmp)。/var/runtime:运行时依赖目录(镜像内置,通常无需挂载,除非需自定义 runtime 文件)。amazon/aws-sam-cli-emulation-image-python3.9),版本不匹配会导致运行时错误。sbx_user1051)对挂载目录有读权限,避免因权限不足导致函数加载失败(可通过 chmod 755 /本地目录 调整)。public.ecr.aws 仓库(国内用户可配置镜像加速)。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务