拓冰建站拓冰建站
首页 / 资讯中心 / 正文

AWS SDK for Rust 操作 Amazon SageMaker:Notebook 实例与训练任务实战指南

示例工程教程后端【免费下载链接】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点击查看免费下载本篇技术指南以 rustv1/examples/sagemaker/README.md 为核心讲解如何用 AWS SDK for Rust 与 Amazon SageMaker亚马逊全托管机器学习服务交互。仓库提供了两个可直接运行的独立二进制示例——列举 Notebook 实例与列举训练任务覆盖 SDK 客户端构建、Region 解析、参数解析与结果格式化等关键环节。读完本文你将掌握在 Rust 项目中接入 SageMaker 的最小工程骨架以及两个高频只读操作的完整实现与运行方式。一、示例概览能用 Rust 对 SageMaker 做什么SageMaker 是 AWS 提供的全托管机器学习平台负责模型构建、训练、部署与监控的全流程。在 rustv1/examples/sagemaker 目录下官方示例展示了通过 AWS SDK for Rust 调用 SageMaker 的两个典型只读场景示例程序源码文件功能sagemaker-helloworldsagemaker-helloworld.rs调用ListNotebookInstances列出当前 Region 下所有 Notebook 实例的名称、状态与实例类型list-training-jobslist-training-jobs.rs调用ListTrainingJobs列出训练任务的名称、创建时间、结束时间、持续时长与状态两个示例都通过cargo run --bin 程序名启动属于单动作single action代码示例即每次只调用一个服务接口。SageMaker 的完整能力如训练、调参、部署端点可参考 SageMaker API Reference本文聚焦仓库中已经实现的两个调用。二、前置条件与依赖清单2.1 运行前提一个有效的 AWS 账户并已按官方指引配置默认凭证与默认 Region安装 Rust 工具链含 Cargo 构建工具通常通过 rustup 安装熟悉RUST_LOG环境变量——AWS SDK for Rust 及依赖 crate 使用tracing做结构化日志示例通过tracing_subscriber打印运行信息。RUST_LOGinfo显示常规输出RUST_LOG{crate}debug显示更细粒度的操作详情。2.2 工程依赖Cargo.toml 解析rustv1/examples/sagemaker/Cargo.toml 定义的包名为sagemaker-code-examples核心依赖如下依赖 crate版本用途aws-config1.0.1开启behavior-version-latest从环境/配置文件加载 AWS 凭证与 Region 等共享配置aws-sdk-sagemaker1.5.0SageMaker 服务的官方 Rust SDK提供Client与ListNotebookInstances、ListTrainingJobs等 APIaws-smithy-types-convert0.60.0开启convert-chrono将 SDK 返回的时间类型转换为 Rust 生态的 chrono 时间类型用于训练任务时长的计算与格式化clap4.4开启derive命令行参数解析通过#[derive(Parser)]声明式生成-r/--region、-v/--verbose参数thiserror1.0派生统一的错误类型简化 SDK 错误的向上传播tokio1.20.1开启full异步运行时示例的main函数使用#[tokio::main]tracing-subscriber0.3.15开启env-filter初始化结构化日志输出值得注意的是sagemaker 目录还被注册进 rustv1/examples/Cargo.toml 的 workspace 成员列表第 49 行因此可以在rustv1/examples根目录下对全部示例统一执行编译、格式化和测试。三、共享错误处理机制lib.rs示例包内共用的错误类型定义在 rustv1/examples/sagemaker/src/lib.rs#[derive(thiserror::Error, Debug)] #[error(unhandled error)] pub struct Error { #[from] source: Boxdyn StdError Send Sync static, } impl Fromaws_sdk_sagemaker::Error for Error { /* ... */ } implT Fromaws_sdk_sagemaker::error::SdkErrorT for Error { /* ... */ } impl Fromaws_smithy_types_convert::date_time::Error for Error { /* ... */ }它借助thiserror把三类错误SageMaker 服务错误、带泛型上下文的SdkError、时间类型转换错误统一收拢到一个自定义Error类型使每个main函数只需返回Result(), Error即可用?自由传播错误属于可复用的工程化实践。四、示例一列举 Notebook 实例sagemaker-helloworld4.1 核心调用rustv1/examples/sagemaker/src/bin/sagemaker-helloworld.rs 中的核心逻辑是show_instances函数async fn show_instances(client: Client) - Result(), Error { let notebooks client.list_notebook_instances().send().await?; println!(Notebooks:); for n in notebooks.notebook_instances() { let n_instance_type n.instance_type().unwrap(); let n_status n.notebook_instance_status().unwrap(); let n_name n.notebook_instance_name(); println!( Name : {}, n_name.unwrap_or(Unknown)); println!( Status : {}, n_status.as_ref()); println!( Instance Type : {}, n_instance_type.as_ref()); println!(); } Ok(()) }调用链为Client::list_notebook_instances()构造请求 →.send()异步发送 → 返回分页结果ListNotebookInstancesOutput。结果中notebook_instances()返回实例摘要列表每个摘要提供notebook_instance_name()实例名称可能为 None代码用unwrap_or(Unknown)兜底notebook_instance_status()状态如Pending、InService、Failed、Stopped等instance_type()实例规格类型如ml.t2.medium。4.2 客户端初始化与 Region 解析示例使用RegionProviderChain实现三级 Region 解析策略let region_provider RegionProviderChain::first_try(region.map(Region::new)) .or_default_provider() .or_else(Region::new(us-west-2)); let shared_config aws_config::from_env().region(region_provider).load().await; let client Client::new(shared_config);优先级从高到低为命令行-r/--region显式传入的 Region默认凭证提供链即AWS_REGION/AWS_DEFAULT_REGION环境变量或配置文件中的 Region兜底默认值us-west-2。verbose模式下还会打印 SDK 版本号PKG_VERSION与最终解析出的 Region便于确认客户端实际生效的配置。五、示例二列举训练任务list-training-jobs5.1 核心调用rustv1/examples/sagemaker/src/bin/list-training-jobs.rs 的show_jobs函数展示了更强的结果处理能力——计算训练时长并格式化时间async fn show_jobs(client: Client) - Result(), Error { let job_details client.list_training_jobs().send().await?; println!(Jobs:); for j in job_details.training_job_summaries() { let name j.training_job_name().unwrap_or(Unknown); let creation_time j.creation_time().expect(creation time).to_chrono_utc()?; let training_end_time j .training_end_time() .expect(Training end time) .to_chrono_utc()?; let status j.training_job_status().expect(training status); let duration training_end_time - creation_time; println!( Name: {}, name); println!( Creation date/time: {}, creation_time.format(%Y-%m-%d%H:%M:%S)); println!( Duration (seconds): {}, duration.num_seconds()); println!( Status: {:?}, status); } Ok(()) }关键点时间类型转换SDK 返回的DateTime基于 aws-smithy-types通过to_chrono_utc()转换为 chrono 的DateTimeUtc这是aws-smithy-types-convert的convert-chronofeature 提供的桥梁能力时长计算training_end_time - creation_time得到 chrono 的TimeDelta再经num_seconds()输出以秒计的持续时长状态枚举training_job_status()返回TrainingJobStatus枚举如InProgress、Completed、Failed、Stopped等直接以{:?}调试格式打印。main函数结构与 helloworld 完全一致RegionProviderChain from_envClient::new只是最终调用show_jobs(client)。六、如何运行示例6.1 进入示例目录并运行在仓库根目录下执行cd rustv1/examples/sagemaker cargo run --bin sagemaker-helloworld # 或 cargo run --bin list-training-jobs6.2 命令行参数两个二进制都支持统一的 clap 参数参数说明-r, --region REGION指定客户端使用的 AWS Region不传则读取AWS_REGION环境变量仍未设置时默认us-west-2-v, --verbose开启附加输出打印 SDK 版本号与最终生效的 Region例如cargo run --bin list-training-jobs -- -r ap-southeast-1 -v6.3 测试与费用提醒单元测试cargo test不会对 AWS 账户产生任何变更或费用集成测试需要真实 AWS 资源运行cargo test -- --ignored可能产生费用重要运行本示例本身可能产生 AWS 账户费用SageMaker 按实例时长计费。虽然本示例仅做列举只读仍建议遵循最小权限原则为运行代码的 IAM 角色仅授予sagemaker:ListNotebookInstances与sagemaker:ListTrainingJobs权限而非管理员权限注意并非所有 AWS Region 都提供 SageMaker 服务运行前请确认目标 Region 已支持该服务。关于测试的详细说明见 rustv1/README.md 的 Tests 一节该文件同时包含完整的 SDK 配置与RUST_LOG/AWS_*环境变量说明如AWS_REGION、AWS_PROFILE、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY。七、从示例到扩展后续可做的方向仓库目前只提供了两个只读单动作但工程骨架统一错误类型 RegionProviderChain clap 参数可以直接复制扩展例如在show_instances中按名称过滤或增加分页处理list_notebook_instances支持next_token分页对训练任务按状态过滤list_training_jobs请求支持status_equals、name_contains、creation_time_after等参数组合多个调用构成一个完整场景如创建 Notebook 实例 → 等待就绪 → 启动/停止形成 multi-action scenario 示例。如需深入可查阅 SDK for Rust 的 SageMaker API 文档aws-sdk-sagemakercrate 文档与 SageMaker Developer Guide并结合 rustv1/examples/sagemaker/README.md 中列出的 API Reference 链接继续探索。八、本文引用的仓库资源速查示例目录 README本文主题文档含示例清单、运行说明与费用提醒sagemaker-helloworld.rs列举 Notebook 实例完整源码list-training-jobs.rs列举训练任务完整源码lib.rs统一错误类型定义Cargo.toml示例包依赖清单rustv1/README.mdRust 示例总览、前置条件、环境变量与测试运行说明examples/Cargo.tomlRust 示例 workspace 清单sagemaker 为成员之一Copyright 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点击查看免费下载相关推荐AWS SDK for .NET v4 操作 Amazon ECSHello 示例与集群、服务、任务 ARN 列举实战AWS SDK for .NET v4 操作 Amazon ECSHello 示例与集群、服务、任务 ARN 列举实战 本篇技术指南以 aws doc sdk示例工程教程后端AWS SDK for Go v1 操作 Amazon EC2aws-doc-sdk-examples go/ec2 实例管理实战指南AWS SDK for Go v1 操作 Amazon EC2aws doc sdk examples go/ec2 实例管理实战指南 本文以 AWS Cod示例工程教程后端使用 AWS SDK for .NET 操作 Amazon ECS集群、服务与任务 ARN 查询实战指南使用 AWS SDK for .NET 操作 Amazon ECS集群、服务与任务 ARN 查询实战指南 导读 本文基于 AWS 官方代码示例仓库中的 dot示例工程教程后端上一篇终极指南如何用Continue AI代码助手提升10倍开发效率下一篇终极指南WebSocket4Net 如何简化 .NET 实时通信开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门