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

编辑推荐精选

讯飞智文

讯飞智文

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

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

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

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

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

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多