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": [ "*" ] } ] }

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多