ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 AWS SDK for Java 2.x 管理 AWS Lambda 函数:完整场景实战指南

使用 AWS SDK for Java 2.x 管理 AWS 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点击查看免费下载导读本文围绕javav2/example_code/lambda/目录下的官方示例代码系统讲解如何使用AWS SDK for Java 2.x完成 AWS Lambda 函数生命周期管理的全部核心操作创建函数、查询函数、列举函数、同步调用、更新函数代码与配置、删除函数并配合 JUnit 5 集成测试与config.properties配置文件的完整实践。读者学完后将具备一套可复制的 Lambda 管理实战方案——既能通过LambdaScenario主类以命令行方式串联全流程也能通过单元测试驱动的方式验证每个 API 调用。代码示例全景本节对应 README 中“Code examples”一节。该目录下有两个可直接运行的 Java 类文件作用LambdaScenario.java完整场景创建 → 查询 → 列举 → 调用 → 更新代码 → 更新配置 → 删除GetAccountSettings.java单操作示例读取账户级 Lambda 限额如代码总大小上限按官方 README 的分类示例分为三层Hello Lambda入门通过 listFunctions 方法ListFunctions快速体验 SDK 与 Lambda 服务的连通性展示如何列出当前账户的所有函数。Learn the basics基础场景即 LambdaScenario.java 整体涵盖一个函数从创建到清理的完整生命周期。Single actions单操作README 明确列出 6 个独立 API 调用及其源码位置操作方法源码位置CreateFunctioncreateLambdaFunctionLambdaScenario.java#L156-L193DeleteFunctiondeleteLambdaFunctionLambdaScenario.java#L347-L360GetFunctiongetFunctionLambdaScenario.java#L203-L216InvokeinvokeFunctionLambdaScenario.java#L249-L271UpdateFunctionCodeupdateFunctionCodeLambdaScenario.java#L284-L308UpdateFunctionConfigurationupdateFunctionConfigurationLambdaScenario.java#L321-L335补充说明仓库中的 metadata.yaml 还登记了CreateFunction.java、DeleteFunction.java、LambdaInvoke.java、ListLambdaFunctions.java等独立单文件示例说明该目录在设计上兼顾“整段场景”与“可独立复用的单操作片段”两种形态读者可按需抽取。环境准备与前提条件运行时要求官方 javav2 顶层 README 对运行全部 Java v2 示例提出如下要求本地能够访问本仓库clone、fork 或下载 zip 均可安装Apache Maven3.0所有 Java v2 示例假定 SDK 通过默认凭证链default credentials provider chain获取 AWS 凭证具体配置方式在共享 AWS 配置文件~/.aws/config中设置 IAM Identity Center SSO或在~/.aws/credentials中设置临时凭证配置默认 Region若未显式设置SDK 默认使用us-east-1。GetAccountSettings.java即显式使用Region.US_EAST_1构建客户端。LambdaScenario.java的类注释进一步说明运行前请确认开发环境与凭证就绪并参考 SDK for Java 2.x 快速入门。项目依赖pom.xmllambda/pom.xml 展示了本示例的完整依赖配置核心要点SDK BOM 管理通过software.amazon.awssdk:bom:2.35.10typepom、scopeimport统一管理各 AWS SDK 模块版本业务代码只需声明模块名software.amazon.awssdk:lambda——Lambda 服务客户端software.amazon.awssdk:secretsmanager——测试时从 Secrets Manager 读取配置software.amazon.awssdk:sso与ssooidc——支持 SSO 凭证链JSON 处理org.json:json:20231013场景中构造调用负载与com.google.code.gson:gson:2.10.1测试中反序列化 Secrets Manager 返回测试框架org.junit.jupiter:junit-jupiter:5.11.4scopetest日志log4j-bom:2.23.1配合log4j-core、log4j-slf4j2-impl、log4j-1.2-api与slf4j-api:2.0.13编译目标Java 21java.version21/java.version、maven.compiler.source/target21构建插件maven-compiler-plugin:3.1与maven-surefire-plugin:3.5.2。注意场景中创建函数使用的运行时是Runtime.JAVA17见源码而本机编译目标是 Java 21两者并无冲突——Java 17 运行时指 Lambda 侧的执行环境Java 21 是本项目 Maven 编译版本。安全与成本提醒⚠ ImportantREADME 明确提醒运行这些示例可能产生 AWS 账户费用运行代码或测试都可能产生费用详见 AWS Pricing 与 Free Tier建议遵循最小权限原则least privilege仅授予完成任务所需的最低权限示例并非在全部 AWS 区域经过测试请注意 AWS Regional Services 的区域服务可用性。命令行运行完整场景Learn the basicsLambdaScenario是本文的核心可执行程序采用 Maven 构建后通过java -cp直接运行。按 javav2 顶层 README 的说明先进入示例目录执行mvn package产物 jar含依赖的 uber JAR会出现在target目录。命令行参数从 main 方法的 usage 文本 可提取完整参数列表程序要求恰好 5 个参数否则打印用法并退出java -cp target/AWSLambdav2-1.0.jar com.example.lambda.scenario.LambdaScenario \ functionName role handler bucketName key参数含义示例值functionName要创建的 Lambda 函数名称HelloFunctionrole具有 Lambda 执行权限的 IAM 服务角色 ARNarn:aws:iam::123456789012:role/lambda-exechandler处理器的完全限定方法名example.Handler::handleRequestbucketName存放 .zip/.jar 函数代码的 S3 桶名my-code-bucketkey该 .zip/.jar 在 S3 中的对象键LambdaHello-1.0-SNAPSHOT.jar场景执行的 7 个步骤结合 LambdaScenario.java 的 main 流程程序依次输出带----分隔线的进度日志创建函数createLambdaFunction打印返回的函数 ARN获取函数getFunction打印函数运行时runtime列举函数listFunctions打印账户下所有函数名同步调用invokeFunction先 Sleep 1 分钟等待函数就绪再调用并打印返回负载更新代码并再次调用updateFunctionCode再次Sleep 1 分钟后重新调用更新配置updateFunctionConfiguration修改 handler 与 runtime删除函数deleteLambdaFunction清理资源。源码级原理每个 API 调用如何工作① 创建函数CreateFunction——createLambdaFunction使用FunctionCode.builder().s3Key(key).s3Bucket(bucketName)指定代码源也可用ZipFile直接内联 zip 字节构建CreateFunctionRequest关键字段functionName函数名description示例固定为Created by the Lambda Java APIcodeS3 中的函数代码handler入口方法runtimeRuntime.JAVA17roleIAM 角色 ARN。调用后通过LambdaWaiter轮询waiter.waitUntilFunctionExists(...)确保函数进入 Active 状态再返回返回值为functionArn()。② 获取函数GetFunction——getFunction仅携带functionName构造GetFunctionRequest从响应response.configuration().runtime()打印运行时信息验证函数已正确创建。③ 列举函数ListFunctions——listFunctions调用无参awsLambda.listFunctions()遍历functionResult.functions()中每个FunctionConfiguration打印config.functionName()。注意默认分页每页 50 个生产环境如需全量可配合分页器ListFunctionsPaginator使用。④ 同步调用Invoke——invokeFunction负载构造用JSONObject写入{inputValue:2000}再经SdkBytes.fromUtf8String(json)转为SdkBytes——这是 SDK for Java 2.x 中 API 调用负载的标准封装方式InvokeRequest.builder().functionName(...).payload(payload)默认即同步RequestResponse调用结果通过res.payload().asUtf8String()读取函数返回的 JSON 字符串并打印。如需异步调用可设置invocationType(InvocationType.EVENT)。⑤ 更新代码UpdateFunctionCode——updateFunctionCode关键参数publish(true)表示立即发布一个新版本对应控制台中的“Publish new version”s3Bucket/s3Key指向新代码同样使用 waiterwaitUntilFunctionUpdated(getFunctionConfigRequest)等待更新完成打印response.lastModified()确认代码变更生效。⑥ 更新配置UpdateFunctionConfiguration——updateFunctionConfiguration通过UpdateFunctionConfigurationRequest更新handler与runtime此处演示了不改代码、仅改运行配置如入口方法、内存、超时、环境变量的典型场景。README 中“configure with an environment variable”的要求即对应此类配置更新操作。⑦ 删除函数DeleteFunction——deleteLambdaFunction仅需functionName构造请求并调用deleteFunction删除后打印确认信息。所有方法统一捕获LambdaException出错时打印错误消息并以System.exit(1)退出保证失败可见。运行 JUnit 5 集成测试测试入口与覆盖范围LambdaTest.java 是官方提供的 JUnit 5 集成测试按 javav2 顶层 README 的说明可用mvn test在命令行运行。测试使用Order注解保证顺序执行Test 1testGetAccountSettings调用 GetAccountSettings.getSettings通过getAccountSettings()读取账户限额accountLimit().totalCodeSize()即账户代码总大小字节数断言不抛异常Test 2testLambdaScenario完整复刻场景流程——createLambdaFunction并断言返回的 ARN 非空getFunctionlistFunctions等待 5 分钟后invokeFunctionupdateFunctionCode再次等待 5 分钟后invokeFunctiondeleteLambdaFunction清理。代码注释明确指出运行这些集成测试必须先在config.properties或 AWS Secrets Manager 中设置所需值。测试通过getSecretValues()从 Secrets Manager 读取名为test/lambda的 secretRegion 固定US_EAST_1再用 Gson 反序列化为SecretValues对象测试会为functionNameSc/functionName附加UUID.randomUUID()后缀避免命名冲突。⚠ 运行测试同样会操作真实 AWS 资源并可能产生账户费用且测试内置了长达 5 分钟的等待整体耗时较长请评估后再执行。config.properties 配置项详解仓库中实际存在 config.properties 模板位于src/main/resources各字段初始值均为Enter value与 README“Tests”一节列出的键一一对应键含义示例值functionNameSc供LambdaScenario测试使用的新函数名myLambdaScfunctionName供其他测试使用的新函数名myLambdabucketName存放用于更新函数代码的 .zip/.jar 的 S3 桶名my-code-bucketkey该 .zip/.jar 的 S3 对象键LambdaHello-1.0-SNAPSHOT.jarfilePath.zip/.jar 在本地文件系统中的路径/path/to/LambdaHello-1.0-SNAPSHOT.jarrole具有 Lambda 权限的角色 ARNarn:aws:iam::123456789012:role/lambda-exechandler完全限定的方法名example.Handler::handleRequestREADME 特别强调如果未完整定义这些值JUnit 测试将失败其中CreateFunction与LambdaScenario测试需要 .zip 或 .jar 形式的函数代码。常用排错与后续资源常见问题排查找不到config.properties中的值测试启动会从 Secrets Manager 读取test/lambdasecret若尚未创建该 secret可将配置直接写入 config.properties按 LambdaTest.java 的注释两种方式任选其一函数创建后立即调用失败Lambda 函数从创建/更新到完全就绪需要时间示例代码通过显式Thread.sleep(60000)场景主类或TimeUnit.MINUTES.sleep(5)测试类等待并配合 waiter 轮询。实际生产中建议以 waiter 指数退避代替固定睡眠没有 .zip/.jar 函数代码README 指出可参考仓库中 creating_workflows_stepfunctions 用例目录该目录为 AWS Step Functions Lambda 工作流教程内含配套的 Lambda 函数构建产物与 Maven 工程 pom.xml自行构建出可上传的 jar 后再运行本示例。官方参考文档Lambda Developer GuideLambda API ReferenceSDK for Java 2.x Lambda reference总结javav2/example_code/lambda目录为 SDK for Java 2.x 用户提供了一条从“单 API 调用”到“完整生命周期场景”再到“JUnit 集成测试”的完整学习路径。掌握LambdaScenario中的 6 个核心方法与LambdaWaiter的配合用法后你就能在自己的项目中以同样的模式实现无服务器函数的自动化部署、更新与清理——这也是在 AWS 上构建 Java 无服务器应用最常用的一套基础能力。赞分享示例工程教程后端【免费下载链接】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 SDK for Java 2.x 管理 Amazon EC2代码示例与实战场景详解使用 AWS SDK for Java 2.x 管理 Amazon EC2代码示例与实战场景详解 本指南基于 aws doc sdk examples 仓库中示例工程教程后端免费大语言模型API零成本接入终极指南学生与独立开发者的第一份AI接口地图免费大语言模型API零成本接入终极指南学生与独立开发者的第一份AI接口地图 毕设想做个AI聊天机器人一看付费接口的账单立刻被劝退脑子里有个AI小创意想快速示例工程教程后端如何快速掌握res-downloader新手的完整网络资源下载指南如何快速掌握res downloader新手的完整网络资源下载指南 你是否曾为无法下载喜欢的视频内容而烦恼当你看到精彩的视频号内容、抖音创意或快手短剧时想示例工程教程后端上一篇告别繁琐操作Ghostty三大高级功能让终端效率倍增下一篇SDXL-Lightning部署指南从开发到生产的完整流程解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表