ARTICLE DETAIL

资讯详情

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

使用 AWS SDK 创建并运行 SageMaker 地理空间管线:Lambda + SQS + VEJ 端到端实战解析

使用 AWS SDK 创建并运行 SageMaker 地理空间管线:Lambda + SQS + VEJ 端到端实战解析 示例工程教程后端【免费下载链接】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仓库中的 SageMaker Geospatial Pipelines 示例场景系统讲解如何用 AWS SDK.NET / Java / Kotlin / JavaScript创建并运行一条融合 AWS Lambda 步骤与 Callback 回调步骤的 Amazon SageMaker 管线管线内部执行 Vector Enrichment JobVEJ地理空间作业将示例经纬度坐标反地理编码为人类可读的地址并通过 SQS 队列驱动 Lambda 完成作业启停与回调确认。读完本文你将掌握管线定义文件GeoSpatialPipeline.json的完整结构、Lambda 处理器三种分支逻辑、所需的 IAM 角色与策略、以及从资源创建到执行、查看输出与清理的完整交互流程。场景概览这是一个“Feature Scenario”示例展示如何使用 SDK 操作 Amazon SageMaker Pipelines而非模型训练。该示例强调管线的创建、更新、执行与监控能力因此选用一个处理速度快、输出易读的地理空间作业——Vector Enrichment JobVEJ——来验证管线是否正确执行。整个流程通过一个交互式命令行应用驱动运行时可以依次完成以下步骤见 场景主 README创建管线所需的 AWS 资源与角色创建 AWS Lambda 函数创建 SageMaker 管线向 S3 存储桶上传输入文件执行管线并监控其状态展示输出文件中的部分结果清理管线资源。下图展示了控制台应用Console Application与 SageMaker 管线之间的组件关系左侧通过 AWS SDK 设置SageMaker Parameters并上传S3 Input右侧管线的 SQS、Lambda、SageMaker Geospatial Job 与S3 Output相互协作。核心架构SageMaker Pipeline Lambda SQS什么是 SageMaker PipelineAmazon SageMaker Pipeline 是由一系列相互连接、共享参数的步骤Step组成的自动化机器学习工作流可通过参数在不同运行之间改变输入输出配置实现可重复、可定制的流程。除了在 SageMaker Studio 中用 Python 创建和运行外也可以通过 AWS SDK 在多种语言中创建、运行并监控管线。本示例管线包含两类关键步骤AWS Lambda 步骤Lambda step调用一个 Lambda 函数执行作业如启动 VEJ 或导出结果Callback 步骤Callback step向 SQS 队列投递消息等待外部回调确认步骤完成。示例中两个步骤由同一个 Lambda 函数处理。Lambda 处理器承担四项职责细节见 技术规格文档使用提供的作业配置启动 SageMaker Vector Enrichment Job处理 SageMaker 管线投递到 SQS 队列的消息使用提供的导出配置启动导出功能导出完成后完成管线回调。地理空间作业Vector Enrichment JobSageMaker 管线可用于模型训练、环境搭建、测试或验证。本示例选用的 VEJ 作业将一组坐标处理为可读地址由 Amazon Location Service 提供地理编码能力无需直接调用该服务。VEJ 处理速度快、输出易于核对便于验证管线执行正确其他类型的作业可以替换进同一管线。注意该作业类型仅在us-west-2区域受支持所有操作默认都应使用该区域。管线参数Pipeline Parameters示例管线通过参数在步骤间传递配置。参数用于设置输入/输出文件在 S3 中的位置以及管线使用的角色和队列标识符SDK 示例展示了在执行管线前如何设置和读取这些参数。具体参数定义见下文管线定义文件章节。管线定义文件GeoSpatialPipeline.json 逐段解析管线的定义以 JSON 形式保存在 GeoSpatialPipeline.json。各语言实现可以按自己的方式命名步骤与参数但可参照该文件构建定义。文件中标注了Version: 2020-12-01的管线定义版本。六个管线参数参数名类型默认值用途parameter_execution_roleString空管线执行角色 ARN被各步骤作为role参数引用parameter_regionStringus-west-2作业运行区域VEJ 仅支持 us-west-2parameter_queue_urlString空SQS 队列 URL供 Callback 步骤投递消息parameter_vej_input_configString空VEJ 的输入配置S3 输入位置等parameter_vej_export_configString空VEJ 导出配置导出到 S3 的路径等parameter_step_1_vej_configString空第一步 VEJ 的补充配置文件还设置了PipelineExperimentConfig将Execution.PipelineName映射为 ExperimentName、Execution.PipelineExecutionId映射为 TrialName便于在 SageMaker Studio 中追踪执行。四个管线步骤Steps: [ { Name: vej-processing-step, Type: Lambda }, { Name: vej-callback-step, Type: Callback }, { Name: export-vej-step, Type: Lambda }, { Name: export-vej-callback, Type: Callback } ]vej-processing-stepLambda调用 Lambda 启动 VEJ 作业。参数通过Get: Parameters.parameter_execution_role等方式引用管线参数FunctionArn使用占位符*FUNCTION_ARN*各语言实现需在实际创建管线时替换为真实 Lambda ARN。步骤输出OutputParametersstatusCode与vej_arn。vej-callback-stepCallback依赖vej-processing-stepDependsOn通过SqsQueueUrl参数指定队列并将vej_arn通过Get: Steps.vej-processing-step.OutputParameters[vej_arn]引用上游输出回调等待 VEJ 完成输出vej_status。export-vej-stepLambda依赖vej-callback-step调用 Lambda 使用vej_export_config导出 VEJ 结果同样输出statusCode与vej_arn。export-vej-callbackCallback依赖export-vej-step等待导出完成输出statusJob。下图是管线的四个步骤及其依赖顺序vej-processing-step → vej-callback-step → export-vej-step → export-vej-callback前置条件与区域要求若要在 SageMaker Studio 中查看管线需要先设置 Amazon SageMaker Domain使用地理空间能力需要受支持的 Region本示例为us-west-2运行示例可能产生 AWS 账户费用包括运行测试建议遵循最小权限原则仅授予完成任务所需的最低权限代码未在全部 AWS 区域测试。通用前置条件可参见各语言目录的 README如 dotnetv3 目录 README、javascriptv3 目录 README。多语言实现该场景在仓库中有四种语言实现入口分别为.NET 实现dotnetv3/SageMaker/Scenarios编译后在包含.csproj文件的目录下执行dotnet run或直接在 IDE 中运行Java 实现javav2/usecases/workflow_sagemaker_pipes要求 Java 17 JDK、Maven 3.6可在 IDE 中运行Java 版还需要先用javav2/usecases/workflow_sagemaker_lambdaLambda Java 运行时项目执行mvn package生成 JAR 作为 Lambda 部署包输入Kotlin 实现kotlin/usecases/workflow_sagemaker_pipesJavaScript 实现javascriptv3/example_code/sagemaker/scenarios/wkflw-sagemaker-geospatial-pipeline在示例目录执行node index.js。各语言实现须按规范将服务动作拆分为独立函数并配套如下 SageMaker 动作CreatePipeline、UpdatePipeline、StartPipelineExecution、DescribePipelineExecution、DeletePipeline以及一个 Hello Service 示例。分步实现从资源准备到清理技术规格文档 给出了完整的分步实现流程。由于该场景需要交互式选择必须在命令行提示符下运行。第 1 步准备缺失的资源1创建 Lambda 角色使用iamClient CreateRole, AttachRolePolicyAssumeRolePolicy 允许 Lambda 服务代入角色{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [sts:AssumeRole], Principal: { Service: [lambda.amazonaws.com] } } ] }ExecutionPolicy 授予 Lambda 操作 SQS、CloudWatch Logs、地理空间作业及管线回调的权限并允许将执行角色传给 SageMaker{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [ sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes, logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents, sagemaker-geospatial:StartVectorEnrichmentJob, sagemaker-geospatial:GetVectorEnrichmentJob, sagemaker:SendPipelineExecutionStepFailure, sagemaker:SendPipelineExecutionStepSuccess, sagemaker-geospatial:ExportVectorEnrichmentJob ], Resource: * }, { Effect: Allow, Action: [iam:PassRole], Resource: ${pipelineExecutionRoleArn}, Condition: { StringEquals: { iam:PassedToService: [ sagemaker.amazonaws.com, sagemaker-geospatial.amazonaws.com ] } } } ] }2创建 SageMaker 执行角色iamClient CreateRole, AttachRolePolicyAssumeRolePolicy 允许 SageMaker 与 SageMaker Geospatial 服务代入{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [sts:AssumeRole], Principal: { Service: [sagemaker.amazonaws.com, sagemaker-geospatial.amazonaws.com] } } ] }ExecutionPolicy 授予调用 Lambda、读写指定 S3 存储桶以及向 SQS 发送消息的权限{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [lambda:InvokeFunction], Resource: lambdaArn }, { Effect: Allow, Action: [s3:*], Resource: [ arn:aws:s3:::${s3BucketName}, arn:aws:s3:::${s3BucketName}/* ] }, { Effect: Allow, Action: [sqs:SendMessage], Resource: sqsQueueArn } ] }3创建 SQS 队列SqsClient CreateQueue, GetQueueUrl记录队列 URL供管线执行使用。4创建 S3 存储桶并上传输入 CSVS3 ClientPutBucket、PutObject文件需包含Longitude和Latitude两列示例文件为 latlongtest.csv约 200 行坐标覆盖阿拉斯加安克雷奇、阿拉巴马州、亚利桑那州等地的经纬度样本。可将文件放入/input目录管线会自动创建/output目录存放输出文件。第 2 步编写并部署 Lambda 处理器Lambda 处理器由各语言实现建议超时时间 30 秒并使用lambdaClient CreateFunction, UpdateFunction, ListEventSourceMappings, CreateEventSourceMapping创建/更新函数并挂接队列事件源映射。若函数已存在可提示用户是否更新。处理器根据输入消息中的字段分发到三种逻辑分支存在队列记录处理记录并检查地理空间作业状态——COMPLETED调用SendPipelineExecutionStepSuccessFAILED调用SendPipelineExecutionStepFailureIN_PROGRESS记录日志表示作业仍在运行存在导出配置调用ExportVectorEnrichmentJob存在作业名称调用StartVectorEnrichmentJob。注意SQS 队列必须加入 Lambda 的事件源映射并保持启用。第 3 步创建或更新管线使用sagemakerClient CreatePipeline, UpdatePipeline创建管线已存在则更新以 GeoSpatialPipeline.json 为定义参考。管线包含作业、输入、导出步骤所需的管线参数一个 Lambda 处理步骤启动 VEJ对坐标集做反地理编码一个检查处理作业进度的 Callback 步骤一个导出 VEJ 结果的步骤一个结束管线的 Callback 步骤。第 4 步执行管线并轮询状态使用sagemakerClient StartPipelineExecution, DescribePipelineExecution传入输入参数执行管线并轮询执行状态直到成功。第 5 步读取并展示输出执行完成后使用 S3 ClientListObjects, GetObject获取最新输出文件并向用户展示部分输出数据。第 6 步清理资源由用户决定是否清理按需执行DeletePipeline删除管线、DeleteQueue队列、DeleteObjects/DeleteBucket存储桶、DeleteFunctionLambda、DeleteRole两个角色。示例输出技术规格文档给出了完整的交互式输出示例关键片段如下Setting up the pipeline. Pipeline set up with ARN arn:aws:sagemaker:us-west-2:1234567890:pipeline/sagemaker-sdk-example-pipeline. Starting pipeline execution. Execution started with ARN arn:aws:sagemaker:us-west-2:1234567890:pipeline/sagemaker-sdk-example-pipeline/execution/f8xmafpxx3ke. Waiting for pipeline execution to finish. Execution status is Executing. Execution status is Succeeded. Execution finished with status Succeeded. Getting output results sagemaker-sdk-test-bucket-test. Output file: outputfiles/qyycwuuxwc9w/results_0.csv Output file contents: -149.8935557,61.21759217,601,USA,601 W 5th Ave, Anchorage, AK, 99501, USA,Anchorage,,99501 6301,Alaska,Valid Data ...输出文件每行对应一个坐标的反地理编码结果包含国家、规范化地址、城市、邮编、州及数据有效性标记可直观核对 VEJ 是否正确执行。Hello SageMaker 示例场景还包含一个 “Hello Service” 最小示例初始化 SageMaker 客户端后调用ListNotebookInstances列出账户中最多 5 个笔记本实例若无实例则引导用户参考创建说明。示例输出Hello Amazon SageMaker! Lets list some of your notebook instances: Instance: test-notebook Arn: arn:aws:sagemaker:us-west-2:123456789:notebook-instance/test-notebook Creation Date: 6/7/2023该示例应保持尽量“复制即可运行”的简洁形态便于用户快速上手 SageMaker SDK。元数据与排障场景关联的元数据标签为sagemaker_Hello、sagemaker_CreatePipeline、sagemaker_ExecutePipeline、sagemaker_DeletePipeline、sagemaker_DescribePipelineExecution、sagemaker_Scenario_Pipelines。排障要点详见 SPECIFICATION.md 排障章节建议在 SageMaker Studio 中查看管线执行步骤便于定位失败步骤需先配置 DomainStudio 会将每个步骤关联到对应的 CloudWatch Logs测试 Lambda 时建议记录函数输入不同语言序列化差异大小写、空值可能导致回调失败管线失败时不要立即删除 SQS 队列需等管线执行停止管线只能通过 SDK 删除地理空间作业仅在us-west-2区域支持所有操作默认使用该区域若未调用SendPipelineExecutionStepSuccess/SendPipelineExecutionStepFailureCallbacks 将一直无法解析存在需要联系支持的风险。总结本文完整剖析了aws-doc-sdk-examples仓库中 SageMaker 地理空间管线示例的实现骨架以 GeoSpatialPipeline.json 定义“Lambda 启动 VEJ → Callback 回调 → Lambda 导出 → Callback 收尾”四步流程以同一个 Lambda 处理器驱动StartVectorEnrichmentJob、SQS 消息处理、ExportVectorEnrichmentJob与SendPipelineExecutionStepSuccess/Failure并通过六个管线参数贯通角色、区域、队列与 S3 输入输出。参考 .NET、Java、Kotlin、JavaScript 四种实现即可把这套“作业 回调”的管线模式复用到任意耗时异步作业的自动化编排中。赞分享示例工程教程后端【免费下载链接】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点击查看免费下载相关推荐基于 SDK for Java V2 创建并运行 SageMaker 地理空间管道Lambda SQS VEJ 逆向地理编码实战基于 SDK for Java V2 创建并运行 SageMaker 地理空间管道Lambda SQS VEJ 逆向地理编码实战 导读 本文围绕 AW示例工程教程后端使用 AWS SDK for .NET 创建并运行 SageMaker 地理空间管道Lambda SQS Vector Enrichment Job 实战指南使用 AWS SDK for .NET 创建并运行 SageMaker 地理空间管道Lambda SQS Vector Enrichment Job示例工程教程后端使用 AWS SDK for Kotlin 创建并运行 SageMaker 地理空间管道Geospatial Pipeline实战使用 AWS SDK for Kotlin 创建并运行 SageMaker 地理空间管道Geospatial Pipeline实战 本篇技术指南以 AWS示例工程教程后端上一篇Rolldown 的 minifyInternalExports 输出选项内部跨 Chunk 导出名的压缩原理与实战下一篇Buzz 完整本地语音转文字指南录音变字幕只要 5 分钟创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表