ARTICLE DETAIL

资讯详情

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

使用 AWS SDK for Rust 列出 AWS IoT Greengrass V2 核心设备:greengrassv2 示例深度解析

使用 AWS SDK for Rust 列出 AWS IoT Greengrass V2 核心设备:greengrassv2 示例深度解析 示例工程教程后端【免费下载链接】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 IoT Greengrass 将 AWS 无缝扩展到物理设备上使设备能够就近处理本地产生的数据同时仍然依托云端完成管理、分析与持久化存储。本篇文章基于 aws-doc-sdk-examples 仓库中rustv1/examples/greengrassv2目录下的示例系统讲解如何用 AWS SDK for Rust 调用ListCoreDevicesAPI列出指定区域内的 Greengrass 核心设备Core Device名称、状态与最后更新时间并深入拆解其命令行参数、Region 解析链与底层依赖配置。读完本文你将掌握一套可直接运行的 Rust 示例代码并理解 AWS SDK for Rust 中客户端创建、Region 回退逻辑与结果分页输出模式。示例概览与项目定位该示例位于仓库的 rustv1/examples/greengrassv2 目录属于 AWS SDK for Rust 代码示例集中单服务动作single action类示例即通过独立的二进制程序完成一次明确的 AWS API 调用。整个greengrassv2目录结构非常精简README.md示例用途、运行方式与注意事项的说明文档Cargo.toml包名为greengrassv2-code-examples的 Rust 工程清单声明了所有依赖src/bin/list-core-devices.rs唯一的可执行二进制实现ListCoreDevices调用。该工程同时被挂载到 rustv1/examples/Cargo.toml 的 workspace 成员列表中成员项greengrassv2因此既可以在目录内单独cargo构建也可以随整个rustv1/examplesworkspace 一起编译、格式化和测试方便开发者统一管理所有 AWS Rust 示例。这个示例做了什么从代码与文档描述看list-core-devices程序会在指定 AWS 区域中列出当前账号名下的 IoT Greengrass V2 核心设备并逐台打印三项关键信息设备名称core_device_thing_name核心设备对应的 IoT Thing 名称设备状态status如HEALTHY、UNHEALTHY等运行状态最后更新时间last_status_update_timestamp设备状态最后一次更新的时间戳。前置条件与运行环境运行该示例需要满足以下环境前提文档与仓库均明确说明AWS 账号与凭证必须拥有 AWS 账号并按 AWS SDK for Rust 官方指引配置默认凭证与默认区域Rust 工具链需要安装cargo构建工具通常通过rustup安装区域可用性代码未在所有 AWS 区域经过测试部分 AWS 服务仅在某些特定区域可用运行前应确认 Greengrass V2 服务在目标区域已开通费用提醒运行该代码可能对 AWS 账号产生费用应在测试账号中操作。仓库通过 rustv1/examples/rust-toolchain.toml 固定了 Rust 工具链版本为1.87.0这一版本与 AWS SDK for Rust 官方维护的最低支持版本MSRV保持一致若本机工具链版本过低rustup会自动切换到该通道。运行示例命令行参数与行为说明在greengrassv2目录下执行以下命令即可运行cargo run --bin list-core-devices -- [-r REGION] [-v]各参数含义如下表所示参数取值说明-r REGION/--region REGION如us-east-1指定创建客户端的 AWS 区域。若未提供使用AWS_REGION环境变量若环境变量也未设置默认回退到us-west-2-v/--verbose布尔开关显示附加信息IoT 客户端版本SDKPKG_VERSION与最终解析出的区域名例如显式指定区域运行cargo run --bin list-core-devices -- -r ap-northeast-1开启详细输出模式运行cargo run --bin list-core-devices -- -vRegion 解析链的源码实现-r REGION与-v两个参数在 src/bin/list-core-devices.rs 中通过clap的 derive 宏声明。从源码结构看Region 的解析遵循一条明确的三级回退链第 60-62 行let region_provider RegionProviderChain::first_try(region.map(Region::new)) .or_default_provider() .or_else(Region::new(us-west-2));其实际执行顺序为命令行参数优先first_try接收命令行传入的-r值默认 Provider 兜底or_default_provider依次尝试环境变量AWS_REGION/AWS_DEFAULT_REGION、~/.aws/config配置等 SDK 默认来源硬编码兜底以上全部缺失时最终使用us-west-2。随后解析出的 region provider 被注入共享配置并创建客户端let shared_config aws_config::from_env().region(region_provider).load().await; let client Client::new(shared_config);aws_config::from_env()会读取AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_PROFILE等环境变量来构建凭证链最终Client::new得到 Greengrass V2 客户端。日志输出控制示例通过tracing_subscriber::fmt::init()初始化结构化日志。根据 rustv1/README.md 的说明RUST_LOG环境变量可控制日志级别RUST_LOGinfo显示程序通用输出RUST_LOG{crate_name}debug显示按 crate 细分的调试信息RUST_LOGaws_smithy_http_tower::dispatchtrace打印每次 AWS 调用的完整 HTTP 请求RUST_LOGaws_smithy_http::middlewaretrace打印每次调用的完整 HTTP 响应。核心 API 调用ListCoreDevices 的源码级剖析程序的核心逻辑集中在show_cores异步函数中src/bin/list-core-devices.rsasync fn show_cores(client: Client) - Result(), Error { let resp client.list_core_devices().send().await?; println!(cores:); for core in resp.core_devices() { println!( Name: {}, core.core_device_thing_name().unwrap_or_default() ); println!( Status: {:?}, core.status().unwrap()); println!( Last update: {:?}, core.last_status_update_timestamp().unwrap() ); println!(); } println!(); Ok(()) }这段代码揭示了 AWS SDK for Rust 的典型调用模式流式构建器client.list_core_devices()返回请求构建器可通过追加方法设置max_results、thing_group_arn等可选参数此处使用默认值发起请求异步发送.send().await真正执行网络调用返回响应结构迭代访问结果resp.core_devices()返回核心设备摘要集合每个元素是CoreDevice结构字段读取与容错core_device_thing_name()采用unwrap_or_default()容错Thing 名称可能缺失而status()与last_status_update_timestamp()直接unwrap()从代码结构可以推断这两个字段在 Greengrass V2 服务端返回中必然存在。其中status()返回的枚举值即文档所述的设备状态字段last_status_update_timestamp()返回最后状态更新时间戳二者共同构成对核心设备运行健康度的快速巡检能力。main函数使用#[tokio::main]宏驱动异步运行时src/bin/list-core-devices.rs并在-v模式下打印 IoT 客户端版本与解析后的区域IoT client version: 1.3.0 Region: us-west-2依赖清单与版本约束greengrassv2/Cargo.toml 完整声明了运行所需依赖各依赖的用途如下依赖 crate版本作用aws-config1.0.1启用behavior-version-latest负责从环境、配置文件加载凭证与区域设置构建共享配置aws-sdk-greengrassv21.3.0AWS IoT Greengrass V2 官方 SDK提供Client与ListCoreDevices等 APIaws-types1.0.1提供Region等基础类型供 Region 链构造使用tokio1启用full异步运行时支撑.send().awaitclap4.4启用derive命令行参数解析通过#[derive(Parser)]生成-r/-v参数tracing-subscriber0.3.5启用env-filter结构化日志初始化配合RUST_LOG控制输出延伸运行方式与验证单目录运行在greengrassv2目录内cargo run --bin list-core-devicesworkspace 级统一测试由于greengrassv2是 rustv1/examples/Cargo.toml workspace 的成员可以在rustv1/examples根目录使用cargo test对全部示例执行单元测试不会对 AWS 账号产生变更或费用也可用cargo clippy --all-targets检查代码规范、cargo fmt统一格式rustv1根目录的 run_all.sh 脚本可在整个 Rust 代码库范围内完成这些检查并用于持续集成流程。权限最小化建议文档强调应遵循最小权限原则仅为运行该示例的 IAM 身份授予执行greengrass:ListCoreDevices所需的最少权限而非赋予管理级权限具体可参照 AWS IAM 用户指南中的授予最小权限最佳实践。注意事项与延伸阅读区域差异示例代码未在所有 AWS 区域测试且 Greengrass V2 服务并非在所有区域都可用请以 AWS 区域产品可用性清单为准费用提示调用该 API 属于真实云服务调用运行前确认所在账号的计费策略更多示例入口如需查阅其他 Rust 示例的运行约定环境变量、测试方式、Docker 镜像等可阅读 rustv1/README.md完整的 Rust 示例索引见 rustv1/examples 目录其中 iot 目录还包含与 Greengrass 生态紧密相关的 IoT 设备示例源码许可示例代码版权归 Amazon.com, Inc. 及其关联方所有采用 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 Rust 调用 AWS IoT Greengrass V2ListCoreDevices 示例实战使用 AWS SDK for Rust 调用 AWS IoT Greengrass V2ListCoreDevices 示例实战 本文围绕仓库中的 green示例工程教程后端lazygit终端UI架构深度解析从多屏协作到Git工作流革命lazygit终端UI架构深度解析从多屏协作到Git工作流革命 在当今的软件开发实践中Git已成为版本控制的行业标准但传统的命令行界面常常让开发者陷入记忆开发工具CLI版本控制使用 AWS SDK for Rust 调用 AWS IoT SiteWise API资产、资产模型与门户的列表示例详解使用 AWS SDK for Rust 调用 AWS IoT SiteWise API资产、资产模型与门户的列表示例详解 本篇技术指南围绕 aws doc s示例工程教程后端上一篇免费自学数学的终极指南用开源课程2年掌握大学数学核心下一篇天勤量化TqSdk终极指南5分钟搞定期货实时行情与量化策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表