lambda-action

lambda-action

GitHub Action 实现 AWS Lambda 函数自动化部署

lambda-action 是一个 GitHub Action,用于自动化部署和管理 AWS Lambda 函数。它支持通过 zip 文件或源代码更新函数,允许配置内存、超时、处理程序等参数。该工具提供干运行模式用于验证设置,支持多环境部署,并可配置 VPC、安全组和 X-Ray 追踪。lambda-action 优化了 Lambda 函数的持续集成和部署流程,适用于 Node.js、Python、Java 等多种运行时环境。

GitHub ActionLambdaAWS部署自动化Github开源项目

🚀 lambda-action

用于将 Lambda 代码部署到现有函数的 GitHub Action

logo

用法

将 zip 文件上传到 AWS Lambda 函数。

name: 部署到 lambda on: [push] jobs: deploy_zip: name: 部署 lambda 函数 runs-on: ubuntu-latest strategy: matrix: go-version: [1.21] steps: - name: 检出源代码 uses: actions/checkout@v3 - name: 安装 Go uses: actions/setup-go@v1 with: go-version: ${{ matrix.go-version }} - name: 构建二进制文件 run: | cd example && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -a -o main main.go && zip deployment.zip main - name: 默认部署 uses: appleboy/lambda-action@v0.2.0 with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws_region: ${{ secrets.AWS_REGION }} function_name: gorush zip_file: example/deployment.zip memory_size: 128 timeout: 10 handler: foobar role: arn:aws:iam::xxxxxxxxxxx:role/test1234 runtime: nodejs12.x

使用源文件部署 lambda 函数

name: 部署到 lambda on: [push] jobs: deploy_source: name: 从源代码部署 lambda runs-on: ubuntu-latest steps: - name: 检出源代码 uses: actions/checkout@v3 - name: 默认部署 uses: appleboy/lambda-action@v0.2.0 with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws_region: ${{ secrets.AWS_REGION }} function_name: gorush source: example/index.js

设置演练模式以验证请求参数和访问权限,而不修改函数代码。

name: 部署到 lambda on: [push] jobs: deploy: name: 部署 lambda 函数 runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: AWS Lambda 部署 uses: appleboy/lambda-action@v0.2.0 with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws_region: ${{ secrets.AWS_REGION }} function_name: gorush zip_file: output.zip dry_run: true

从特定分支部署,masterrelease

name: 部署到 lambda on: [push] jobs: deploy: name: 部署 lambda 函数 runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: AWS Lambda 部署 if: github.ref == 'refs/heads/master' uses: appleboy/lambda-action@v0.2.0 with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws_region: ${{ secrets.AWS_REGION }} function_name: gorush zip_file: output.zip dry_run: true

添加多个环境变量:

name: 部署到 lambda on: [push] jobs: deploy: name: 部署 lambda 函数 runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: AWS Lambda 部署 if: github.ref == 'refs/heads/master' uses: appleboy/lambda-action@v0.2.0 with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws_region: ${{ secrets.AWS_REGION }} function_name: gorush zip_file: output.zip dry_run: true + environment: foo=bar,author=appleboy

输入变量

有关更详细的信息,请参阅 action.yml

  • aws_region - AWS 区域
  • aws_access_key_id - AWS 访问密钥 ID
  • aws_secret_access_key - AWS 秘密访问密钥
  • zip_file - zip 文件的文件路径
  • source - 您想要压缩的文件列表
  • s3_bucket - 与您的函数位于同一 AWS 区域的 Amazon S3 存储桶。该存储桶可以位于不同的 AWS 账户中。
  • s3_key - 部署包的 Amazon S3 键。
  • dry_run - 设置为 true 可以验证请求参数和访问权限,而不修改函数代码。
  • debug - 成功上传 Lambda 后显示调试信息(默认为 false)。
  • publish - 设置为 true 可以在更新代码后发布函数的新版本。(默认为 true)。
  • reversion_id - 仅在修订 ID 与指定的 ID 匹配时更新函数。
  • memory_size - 您的函数可以访问的内存量。增加函数的内存也会增加其 CPU 分配。默认值为 128 MB。该值必须是 64 MB 的倍数。
  • timeout - Lambda 允许函数运行的时间,超过此时间将停止它。默认为 3 秒。允许的最大值为 900 秒。
  • handler - Lambda 调用以执行您的函数的代码中的方法名称。
  • role - 函数的执行角色。模式:arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+
  • runtime - 函数运行时的标识符。nodejs | nodejs4.3 | nodejs6.10 | nodejs8.10 | nodejs10.x | nodejs12.x | nodejs14.x | nodejs16.x | java8 | java8.al2 | java11 | python2.7 | python3.6 | python3.7 | python3.8 | python3.9 | dotnetcore1.0 | dotnetcore2.0 | dotnetcore2.1 | dotnetcore3.1 | dotnet6 | nodejs4.3-edge | go1.x | ruby2.5 | ruby2.7 | provided | provided.al2 | nodejs18.x
  • environment - Lambda 环境变量。例如:foo=bar,author=appleboy
  • image_uri - Amazon ECR 注册表中容器镜像的 URI。
  • subnets - 选择 Lambda 用于设置 VPC 配置的 VPC 子网。
  • securitygroups - 选择 Lambda 用于设置 VPC 配置的 VPC 安全组。
  • description - 函数的描述。
  • layers - 要添加到函数执行环境的函数层列表。通过 ARN 指定每个层,包括版本。
  • tracing_mode - 将模式设置为 Active 以使用 X-Ray 对传入请求的子集进行采样和跟踪。
  • max_attempts - waiter 应尝试检查资源目标状态的最大次数。
  • architectures - 函数支持的指令集架构。arm64 | x86_64
  • ipv6_dual_stack - 在 VPC 配置中启用或禁用双栈 IPv6 支持

有关详细信息,请参阅 UpdateFunctionConfiguration

AWS 策略

如果您想与 GitHub Actions 集成,请添加以下 AWS 策略。请将 REGIONACCOUNTLAMBDA_NAME 变量更改为您的具体数据。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "iam:ListRoles", "lambda:UpdateFunctionCode", "lambda:CreateFunction", "lambda:GetFunction", "lambda:UpdateFunctionConfiguration", "lambda:GetFunctionConfiguration" ], "Resource": "arn:aws:lambda:${REGION}:${ACCOUNT}:function:${LAMBDA_NAME}" } ] }

我们的函数需要权限将跟踪数据上传到 X-Ray。当您在 Lambda 控制台中激活跟踪时,Lambda 会将所需的权限添加到您函数的执行角色中。否则,请将 AWSXRayDaemonWriteAccess 策略添加到执行角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries" ], "Resource": [ "*" ] } ] }

编辑推荐精选

商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI助手AI工具AI写作工具AI辅助写作蛙蛙写作学术助手办公助手营销助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
下拉加载更多