首页/新闻资讯/正文详情

使用 AWS SDK for PHP 构建 Lambda 无服务器应用:从入门场景到源码级解析

发布时间:2026/9/27 9:50:15 来源:云帆数科 栏目:资讯中心
使用 AWS SDK for PHP 构建 Lambda 无服务器应用:从入门场景到源码级解析
示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载本篇技术指南以 aws-doc-sdk-examples 仓库中的 php/example_code/lambda 为例系统讲解如何用 AWS SDK for PHP v3 调用 AWS Lambda 的核心 API创建函数、上传代码、调用函数、更新配置、列出与删除函数。文中既给出可直接运行的实战命令也结合仓库源码逐行剖析每个 API 的调用参数与底层等待机制读者完成后可以独立编写一套创建 IAM 角色 → 部署 Lambda → 调用 → 更新 → 清理的完整 PHP 工作流。概览这套示例解决什么问题php/example_code/lambda目录展示的是使用 AWS SDK for PHP 操作 AWS Lambda 的完整代码集合。Lambda 允许你运行代码而无需预置或管理服务器示例通过一个交互式命令行场景把无服务器函数生命周期串起来从创建一个允许 Lambda 写入日志的 IAM 角色到上传处理函数代码、同步与异步调用、通过环境变量与新的 Handler 更新函数再到分页列出账户内全部函数最后删除函数与角色完成资源清理。代码集合结构如下均以仓库根目录为基准php/example_code/lambda/README.md本指南对应的说明文档php/example_code/lambda/GettingStartedWithLambda.php入门场景主程序php/example_code/lambda/LambdaService.php封装全部单一操作的服务类php/example_code/lambda/Runner.php命令行运行入口php/example_code/lambda/tests/LambdaTest.phpPHPUnit 集成测试php/example_code/lambda/lambda_handler_basic.zip、php/example_code/lambda/lambda_handler_calculator.zip两个已打包的 Python 处理函数php/example_code/lambda/composer.json依赖声明前提条件参考 php 目录总览 php/README.md运行这些示例需要PHP 8.1 或更高版本Composer用于依赖管理PHPUnit用于运行测试AWS SDK for PHPaws/aws-sdk-php配置好的 AWS 凭据默认走 SDK 的凭据提供链读取共享凭据/配置文件中的defaultprofile特别说明这些示例依赖仓库内的支撑文件IAM 服务类、AWS 工具类、Lambda 函数 zip 包因此需要克隆整个 aws-doc-sdk-examples 仓库并在仓库目录结构中运行而不是只下载单个文件。依赖清单见 php/example_code/lambda/composer.json核心是aws/aws-sdk-php ^3.209与guzzlehttp/guzzle ^7.0并通过 PSR-4 自动加载把Lambda\、Iam\、AwsUtilities\三个命名空间分别映射到../lambda/、../iam/、../aws_utilities/同时加载TestableReadline.php以支持交互式输入测试。代码示例地图仓库把这些示例分成三类对应 AWS 官方文档代码示例体系的三种形态Basics入门基础演示服务内的核心操作见 GettingStartedWithLambda.phpSingle actions单一操作展示如何单独调用服务函数集中在 LambdaService.phpScenarios场景通过多次调用实现具体业务任务包括一个跨服务场景 Create a serverless application to manage photos注意实际目录为 php 版 php/applications/photo_asset_manager单一操作源码解析所有单一操作都封装在Lambda\LambdaService类中它继承自AwsUtilities\AWSServiceClass。构造函数默认使用us-west-2区域、latestAPI 版本与defaultprofile 创建Aws\Lambda\LambdaClient也允许外部传入现成 client。下表汇总 7 个操作及其在源码中的位置与关键参数操作源码位置核心参数说明CreateFunctionLambdaService.php#L31CodeS3Bucket/S3Key、FunctionName、Role、Runtime、Handler从 S3 中的 zip 创建函数GetFunctionLambdaService.php#L50FunctionName获取函数详情含Configuration.StateListFunctionsLambdaService.php#L59MaxItems、Marker分页列出函数InvokeLambdaService.php#L75FunctionName、Payload、LogType调用函数并可选返回日志UpdateFunctionCodeLambdaService.php#L86FunctionName、S3Bucket、S3Key更新函数代码UpdateFunctionConfigurationLambdaService.php#L97FunctionName、Handler、Environment更新 Handler 与环境变量DeleteFunctionLambdaService.php#L108FunctionName删除函数下面逐项深入。createFunction从 S3 上传 zip 创建函数public function createFunction($functionName, $role, $bucketName, $handler) { // This assumes the Lambda function is in an S3 bucket. return $this-customWaiter(function () use ($functionName, $role, $bucketName, $handler) { return $this-lambdaClient-createFunction([ Code [ S3Bucket $bucketName, S3Key $functionName, ], FunctionName $functionName, Role $role[Arn], Runtime python3.9, Handler $handler.lambda_handler, ]); }); }关键点Code指定S3Bucket与S3Key表示函数代码以 zip 形式存放在 S3S3Key复用函数名作为对象键Role传入的是 IAM 角色的ArnRuntime固定为python3.9说明仓库配套的处理函数是 Python 运行时Handler拼接为$handler.lambda_handler即文件模块名.lambda_handler 函数名getFunction轮询函数状态public function getFunction($functionName) { return $this-lambdaClient-getFunction([ FunctionName $functionName, ]); }返回值中的Configuration.State可取Pending、Active、Failed等值场景代码正是靠轮询State Pending来等待函数创建完成。listFunctions分页列出函数public function listFunctions($maxItems 50, $marker null) { if (is_null($marker)) { return $this-lambdaClient-listFunctions([MaxItems $maxItems]); } return $this-lambdaClient-listFunctions([Marker $marker, MaxItems $maxItems]); }支持MaxItems默认 50与Marker两个分页参数场景代码通过NextMarker循环拉取全部函数。invoke同步调用并取回日志public function invoke($functionName, $params, $logType None) { return $this-lambdaClient-invoke([ FunctionName $functionName, Payload json_encode($params), LogType $logType, ]); }Payload由 PHP 数组json_encode而成是传给函数的入参LogType默认None传入Tail时返回结果中的LogResult是 Base64 编码的调用日志场景中通过base64_decode还原显示updateFunctionCode / updateFunctionConfiguration热更新public function updateFunctionCode($functionName, $s3Bucket, $s3Key) { return $this-lambdaClient-updateFunctionCode([ FunctionName $functionName, S3Bucket $s3Bucket, S3Key $s3Key, ]); } public function updateFunctionConfiguration($functionName, $handler, $environment ) { return $this-lambdaClient-updateFunctionConfiguration([ FunctionName $functionName, Handler $handler.lambda_handler, Environment $environment, ]); }前者只换代码包仍从 S3 取后者改运行时配置例如示例中把 Handler 切换为lambda_handler_calculator.lambda_handler并注入LOG_LEVELDEBUG环境变量。底层等待机制customWaiterLambdaService 继承的AwsUtilities\AWSServiceClass见 php/example_code/aws_utilities/AWSServiceClass.php提供了customWaiter默认最多重试 10 次、每次间隔 2 秒捕获AwsException后重试并可通过静态属性$maxWaitAttempts、$waitTime调整开发阶段可打开$verbose输出错误码以便排查根因。示例中的 createFunction、IAM 的 createRole/deleteRole 等调用都包裹了该等待器以应对 AWS 资源创建/删除的最终一致性延迟。入门场景GettingStartedWithLambda 全流程拆解README 的 Learn the basics 描述了 GettingStartedWithLambda.php 的完整流程源码实现精确对应以下步骤创建 IAM 角色用uniqid()生成唯一后缀命名角色test-lambda-role-uniqid信任策略指定Principal.Service lambda.amazonaws.com、Action sts:AssumeRole即允许 Lambda 服务代入该角色随后通过IAMService-attachRolePolicy挂载 AWS 托管策略AWSLambdaBasicExecutionRole见 php/example_code/iam/IAMService.php 的createRole/attachRolePolicy创建 S3 桶并上传代码新建amzn-s3-demo-bucket-uniqid桶把本地lambda_handler_basic.zip读入内存后putObject到桶中Key与函数名一致创建函数并等待就绪调用createFunction随后do…while轮询getFunction直到Configuration.State不再是Pending首次调用以[action increment, number 3]为入参invoke从返回Payload流中json_decode取出result更新代码把lambda_handler_calculator.zip重新上传到 S3调用updateFunctionCode轮询LastUpdateStatus ! Successful等待更新完成更新配置updateFunctionConfiguration切换到 calculator 的 Handler并设置环境变量LOG_LEVELDEBUG再次等待更新完成携带新参数调用传入[action plus, x 5, y 4]LogType Tail打印base64_decode后的执行日志再演示除以 0 时函数返回的错误信息列出账户内函数以MaxItems 5起步利用NextMarker循环合并所有函数名并逐行打印清理资源依次删除 Lambda 函数、IAM 角色listObjectsV2deleteObjects清空桶内对象后删除 S3 桶这段场景是交互式运行的通过控制台提示与输入逐步执行每个阶段都有中文友好的回显输出便于观察整个无服务器生命周期。运行示例安装依赖在php/example_code/lambda目录README 中的说明以仓库实际目录php/example_code/lambda为准执行composer install交互式运行php Runner.phpRunner.php 非常精简加载vendor/autoload.php与GettingStartedWithLambda.php后直接实例化并调用run()。测试驱动运行也可以用 PHPUnit 让选择项自动完成示例 README 给出的命令是..\..\vendor\bin\phpunit LambdaBasicsTests.php实际仓库中的测试文件为 php/example_code/lambda/tests/LambdaTest.php。该测试标注group integ集成测试组其testSingleActionCalls复刻了场景主流程创建桶、上传lambda_handler_calculator.zip、建角色并挂AWSLambdaBasicExecutionRole、createFunction、listFunctions打印、轮询State Pending、以plus/5/4参数invoke校验最后清理函数、角色、桶对象与桶。运行测试同样可能产生 AWS 费用。若要运行整个 PHP 示例集的测试可在php/example_code目录执行phpunit并用--group integ/--group unit与--testsuite testsuite-name过滤详见 php/README.md。场景延伸Photo Asset ManagerREADME 还列出一个跨服务场景 Create a serverless application to manage photosPHP 实现见 php/applications/photo_asset_manager。该应用让用户用标签管理照片图片上传到 S3 后触发 Lambda 函数调用 Amazon Rekognition 识别标签并把标签计数写入 DynamoDBS3 生命周期规则将对象转入 Intelligent-Tiering 节省成本用户按标签请求照片时系统把匹配图片打包成 zip并通过 Amazon SNS 发送下载链接。Lambda 在其中承担上传触发 标签处理的核心职责与本文介绍的函数创建、调用、更新能力直接衔接。费用与安全提醒运行示例或测试都可能在 AWS 账户产生费用详见 AWS Pricing 与 Free Tier 说明建议遵循最小权限原则只授予完成任务所需的最小权限代码并非在所有 AWS 区域测试过区域可用性请以 AWS Regional Services 为准场景代码在结束时主动执行deleteFunction、deleteRole与 S3 桶清理实际生产中应保证资源回收逻辑不遗漏附加资源Lambda Developer Guide 与 Lambda API ReferenceAWS Lambda 文档SDK for PHP 的 Lambda 命名空间 API 参考Aws\Lambda仓库内进一步阅读php/example_code/lambda/LambdaService.php、php/example_code/lambda/GettingStartedWithLambda.php、php/example_code/lambda/tests/LambdaTest.phpCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐从0到1掌握kube-state-metrics监控即代码Helm Chart开发实战指南从0到1掌握kube state metrics监控即代码Helm Chart开发实战指南 为什么需要监控即代码 你是否还在为Kubernetes集群监控配后端使用 AWS SDK for .NET 开发 AWS Lambda 代码示例入门、基础操作与实战场景使用 AWS SDK for .NET 开发 AWS Lambda 代码示例入门、基础操作与实战场景 导读 本文基于 dotnetv3/Lambda/READ示例工程教程后端RepViT架构解密repvit_m0_9.dist_300e_in1k如何融合CNN与ViT优势RepViT架构解密repvit_m0_9.dist_300e_in1k如何融合CNN与ViT优势 repvit_m0_9.dist_300e_in1k是一款上一篇3DS自制软件终极管理指南Universal-Updater完整教程下一篇RedeliveryPolicy重试策略详解如何用activemq4cq精确控制消息重发次数与延迟创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Qwen3-ASR 时间戳深度解析:33ms 级非自回归强制对齐模型凭什么超越 WhisperX?
Qwen3-ASR 时间戳深度解析:33ms 级非自回归强制对齐模型凭什么超越 WhisperX?

Qwen3-ASR 时间戳深度解析:33ms 级非自回归强制对齐模型凭什么超越 WhisperX? 【免费下载链接】Qwen3-ASR Qwen3-ASR is an open-source series of ASR models developed by the Qwen team at Alibaba Cloud, supporting stable multilingual speech/music/song recognition, … · 2026/9/27 9:50:09

武汉苔序间植物拓印课只给六片叶子,帆布袋图案会不会太受限?
武汉苔序间植物拓印课只给六片叶子,帆布袋图案会不会太受限?

武汉苔序间植物拓印课只给六片叶子,帆布袋图案会不会太受限? 武汉江岸区黎黄陂路的苔序间植物拓印工作室,周六有一节约 105 分钟的帆布袋植物拓印课。每位学员拿到同款米白帆布袋和六片老师事先挑好的新鲜叶片;学员可以自己决定叶… · 2026/9/27 9:49:39

PaddleGAN StyleGAN V2 Editing 实战指南:基于属性方向向量的生成图像语义编辑
PaddleGAN StyleGAN V2 Editing 实战指南:基于属性方向向量的生成图像语义编辑

人工智能深度学习计算机视觉媒体生成视频处理图像处理 【免费下载链接】PaddleGAN PaddlePaddle GAN library, including lots of interesting applications like First-Order motion transfer, Wav2Lip, picture repair, image editing, photo2cartoon, image style transfer,… · 2026/9/27 9:49:39

Mac Mouse Fix:捕获 3 个鼠标按键,把普通鼠标调到滚轮跟手
Mac Mouse Fix:捕获 3 个鼠标按键,把普通鼠标调到滚轮跟手

Mac Mouse Fix:捕获 3 个鼠标按键,把普通鼠标调到滚轮跟手 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 滚轮一推&… · 2026/9/27 10:31:08

LA664原子操作丢失更新:缓存一致性与内存序的深层陷阱
LA664原子操作丢失更新:缓存一致性与内存序的深层陷阱

1. 事件本质:这不是Bug,是CPU与程序员之间的一次严肃对话“一颗 CPU 的原子指令,一个打包死循环:LA664 丢失更新事件始末”——这个标题里没有情绪词,没有夸张修辞,但每个字都像焊点一样咬合在硬件与软件的… · 2026/9/27 10:31:08

告别备案噩梦:5套电子商务公司简介模板最佳实践选型
告别备案噩梦:5套电子商务公司简介模板最佳实践选型

告别备案噩梦:5套电子商务公司简介模板最佳实践选型 刚接到客户电话,对方声音带着压抑的怒火:“备案流程一头雾水,网站上线卡在最后一步,客户明天就要看简介页。”… · 2026/9/27 10:31:02

Penrose 入门实战:用 .domain / .substance / .style 三件套绘制集合示意图(教程一 4 道挑战完整题解)
Penrose 入门实战:用 .domain / .substance / .style 三件套绘制集合示意图(教程一 4 道挑战完整题解)

开发工具数据可视化 【免费下载链接】penrose Create beautiful diagrams just by typing notation in plain text. 项目地址: https://gitcode.com/gh_mirrors/pe/penrose 点击查看 免费下载 导读:本文以 Penrose 官方教程一的 4 道进阶挑战为主线&… · 2026/9/27 10:31:02

LaMa 大掩码图像修复实战指南:基于 Fourier 卷积的分辨率鲁棒修复模型在 Inpaint-Anything 中的使用与训练
LaMa 大掩码图像修复实战指南:基于 Fourier 卷积的分辨率鲁棒修复模型在 Inpaint-Anything 中的使用与训练

人工智能计算机视觉深度学习图像处理视频处理 【免费下载链接】Inpaint-Anything Inpaint anything using Segment Anything and inpainting models. 项目地址: https://gitcode.com/gh_mirrors/in/Inpaint-Anything 点击查看 免费下载 LaMa(Large Mask… · 2026/9/27 10:30:56

普通网站建设多少钱?避开5个坑才不亏
普通网站建设多少钱?避开5个坑才不亏

普通网站建设多少钱?避开5个坑才不亏 改个需求建站公司拖一周,报价单里全是“按需定制”?别急着骂,先看看你的钱是不是花在了空气上。很多老板问普通网站建设多少钱,其实这背后藏着 注意事项… · 2026/9/27 10:30:56

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码