aws-lambda-deploy-action 是一个基于Docker的GitHub Action镜像,用于在GitHub Actions工作流中自动化部署AWS Lambda函数。该镜像封装了AWS CLI及Lambda部署相关工具,支持从GitHub仓库直接构建、打包并部署Lambda函数至AWS云平台,简化CI/CD流程中的无服务器应用交付环节。
AWSLambdaFullAccess 或自定义最小权限);Repository Secrets存储,如AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY)。| 变量名 | 必选 | 描述 | 示例值 |
|---|---|---|---|
AWS_ACCESS_KEY_ID | 是 | AWS IAM用户访问密钥ID(需具备Lambda部署权限) | AKIAEXAMPLE*** |
AWS_SECRET_ACCESS_KEY | 是 | AWS IAM用户密钥 | abcdefghijklmnopqrstuvwxyz1234 |
AWS_REGION | 是 | 部署目标AWS区域 | us-east-1 |
通过GitHub Actions工作流的with字段或命令行参数传递,支持以下配置:
| 参数名 | 必选 | 描述 | 示例值 |
|---|---|---|---|
function-name | 是 | 目标Lambda函数名称(需预先在AWS控制台创建或允许镜像自动创建) | my-lambda-function |
code-path | 是 | 本地代码包路径(相对于GitHub仓库根目录,支持zip包或目录) | ./dist/lambda-package.zip |
runtime | 否 | Lambda函数运行时环境(若函数已存在,可不填;新建函数必填) | python3.9 |
handler | 否 | 函数入口处理程序(格式:文件名.函数名,新建函数必填) | lambda_function.lambda_handler |
role-arn | 否 | Lambda执行角色ARN(若函数已存在,可不填;新建函数必填) | arn:aws:iam::123456789012:role/lambda-role |
memory-size | 否 | 函数内存大小(MB,默认128,范围128-***) | 256 |
timeout | 否 | 函数超时时间(秒,默认3,范围1-900) | 10 |
environment-vars | 否 | 函数环境变量(JSON格式字符串) | {"DB_HOST":"mysql.example.com"} |
s3-bucket | 否 | 代码包大于50MB时,用于中转的S3桶名(需提前创建并授权) | lambda-deploy-bucket-us-east-1 |
.github/workflows/deploy-lambda.yml)yamlname: Deploy Lambda Function on: push: branches: [ main ] # 主分支推送时触发部署 jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Build code package # 假设需先构建代码包(如编译、打包依赖) run: | mkdir -p ./dist zip -r ./dist/lambda-package.zip ./src # 将src目录打包为zip - name: Deploy to AWS Lambda uses: docker://ghcr.io/username/aws-lambda-deploy-action:latest # 替换为实际镜像地址 env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: "us-east-1" with: function-name: "my-lambda-function" code-path: "./dist/lambda-package.zip" runtime: "python3.9" handler: "lambda_function.lambda_handler" memory-size: "256" timeout: "10" environment-vars: '{"LOG_LEVEL":"info"}'
bashdocker run --rm \ -e AWS_ACCESS_KEY_ID="AKIAEXAMPLE***" \ -e AWS_SECRET_ACCESS_KEY="abcdefghijklmnopqrstuvwxyz1234" \ -e AWS_REGION="us-east-1" \ -v $(pwd)/dist:/app/dist \ # 挂载本地代码包目录至容器 ghcr.io/username/aws-lambda-deploy-action:latest \ --function-name "my-lambda-function" \ --code-path "/app/dist/lambda-package.zip" \ --runtime "python3.9" \ --handler "lambda_function.lambda_handler"
lambda:UpdateFunctionCode、lambda:UpdateFunctionConfiguration等必要操作),避免过度授权。--s3-bucket参数指定S3桶中转。runtime、handler、role-arn等必填参数,镜像将自动创建函数;若函数已存在,可仅更新代码或配置。v1.2.0)而非latest,避免因镜像更新导致部署异常。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429