ARTICLE DETAIL

资讯详情

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

使用 AWS SDK for Rust 操作 AWS Global Accelerator:ListAccelerators 示例实战解析

使用 AWS SDK for Rust 操作 AWS Global Accelerator:ListAccelerators 示例实战解析 示例工程教程后端【免费下载链接】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 官方代码示例仓库aws-doc-sdk-examples中的 Global Accelerator 示例文档 为骨架逐段剖析其唯一代码示例globalaccelerator-helloworld的源码实现、依赖配置与运行方式。读完本文你将掌握如何用 AWS SDK for Rust 通过分页器调用ListAccelerators列出账户下所有加速器的名称与 ARN理解 Global Accelerator 全局服务端点的固定 Region 处理技巧并能在本地正确配置凭据后一键运行该示例。AWS Global Accelerator 是什么AWS Global Accelerator 是一项网络服务它利用亚马逊全球网络基础设施将用户流量的性能提升最多 60%该数据为 AWS 官方服务宣传口径。Global Accelerator 通过静态 Anycast IP 地址将流量定向到距离用户最近的 AWS 边缘节点再经由 AWS 全球骨干网转发到后端应用端点如 Application Load Balancer、Network Load Balancer、EC2 实例或弹性 IP从而减少公网跳数与延迟提升可用性。它属于全局服务控制平面 API 位于特定的 AWS 区域示例中使用 us-west-2这与常规按区域划分的服务不同也是示例代码中需要显式固定 Region 的原因。本仓库通过一个轻量示例globalaccelerator-helloworld演示了如何使用 AWS SDK for Rust 与该服务交互列出账户中所有加速器的名称与 ARN。核心源码位于 globalaccelerator-helloworld.rs工程清单见 Cargo.toml。代码示例总览文档明确将示例定位为单个 API 动作action级别Displays the names and ARNs of your acceleratorsListAccelerators。相比跨服务场景这类示例聚焦演示单一 SDK 调用便于快速学习对应服务的 SDK 用法。示例程序globalaccelerator-helloworld涉及 APIListAccelerators输出内容账户下所有 Global Accelerator 加速器的名称Name与 ARNArn文件位置rustv1/examples/globalaccelerator/src/bin/globalaccelerator-helloworld.rs从工程的 workspace 配置看rustv1/examples/Cargo.toml 将globalaccelerator列为 workspace 成员说明该示例可与其他 Rust 示例一起被统一编译、格式化和测试运行cargo clippy --all-targets、cargo fmt或仓库级脚本run_all.sh时都会被纳入检查范围。源码逐段解析如何列出加速器整个程序分为两个核心部分show_accelerators异步函数负责调用 SDKmain函数负责 Region 解析、客户端构建与参数解析。1. show_accelerators分页遍历加速器列表async fn show_accelerators(client: Client) - Result(), Error { println!(Welcome to the AWS Rust SDK Global Accelerator example!); println!(); let accelerators client .list_accelerators() .into_paginator() .items() .send() .try_collect() .await?; for accelerator in accelerators { let accelerator_arn accelerator.name().unwrap_or_default(); let accelerator_name accelerator.accelerator_arn().unwrap_or_default(); println!(Accelerator Name : {}, accelerator_name); println!(Accelerator ARN : {}, accelerator_arn); println!(); } Ok(()) }关键点解析分页器paginatorlist_accelerators()返回分页器构建器into_paginator()将其转换为可分页遍历的形式。ListAccelerators的 API 返回结果可能超过单页上限SDK 的分页器会自动携带NextToken连续发起后续请求直至取完所有页。items()try_collect().items()返回加速器条目的异步流Stream配合tokio-stream提供的try_collect()将流收集为VecAccelerator。这里?会传播 SDK 返回的Error保证任一页请求失败即终止。字段提取遍历每个Accelerator结构体读取name()加速器名称与accelerator_arn()加速器 ARN并用unwrap_or_default()容错空值。注意源码中变量命名与打印顺序存在轻微错位accelerator_arn变量实际存的是name()打印时 Accelerator ARN 行实际输出 name 字段这是官方示例中的一个命名瑕疵阅读时需注意区分。#![allow(clippy::result_large_err)]文件顶部允许Result携带大尺寸错误类型避免 clippy 对大错误类型的告警属于 SDK 示例中的常见 lint 豁免写法。2. main固定 Region 并构建客户端let region_provider RegionProviderChain::first_try(Region::new(us-west-2)); let shared_config aws_config::from_env().region(region_provider).load().await; let client Client::new(shared_config);固定 us-west-2 的原因源码注释明确说明Global Accelerator is a global service with its API in us-west-2。Global Accelerator 虽是全局服务但其 API 端点固定部署在 us-west-2因此示例通过RegionProviderChain::first_try(Region::new(us-west-2))强制使用该区域而不是依赖环境变量中的默认区域。RegionProviderChain::first_try将 us-west-2 作为第一个尝试的区域源。aws_config::from_env().region(region_provider)将区域提供链注入配置构建器load().await完成配置加载含凭据解析。verbose模式-v参数开启时程序额外打印 SDK 客户端版本来自aws_sdk_globalaccelerator::meta::PKG_VERSION与解析出的 Region便于调试与确认运行时环境。参数解析使用clap的 derive 模式声明Opt结构体#[structopt(short, long)]声明布尔型-v/--verbose参数Opt::parse()完成命令行解析。异步运行时#[tokio::main]宏将 main 包装进 Tokio 运行时tracing_subscriber::fmt::init()初始化结构化日志输出配合RUST_LOG环境变量可控制日志级别。工程依赖配置globalaccelerator 的 Cargo.toml 声明了如下依赖依赖项版本用途aws-config1.0.1featurebehavior-version-latest加载共享配置凭据、Region 解析链aws-sdk-globalaccelerator1.3.0Global Accelerator 服务 SDK 客户端tokio1.20.1featurefull异步运行时tokio-stream0.1.8为分页器返回的异步流提供try_collect等扩展clap4.4featurederive命令行参数声明式解析tracing-subscriber0.3.15featureenv-filter结构化日志初始化支持RUST_LOG过滤其中tokio-stream是分页遍历的关键支撑into_paginator().items()产出的异步流依赖Streamtrait 扩展try_collect正是由tokio-stream的StreamExt提供。aws-config的behavior-version-latestfeature 会启用当前最新的 SDK 行为版本确保请求构造遵循 SDK 最新约定。运行环境准备前置条件运行该示例需要满足文档列出的前置条件AWS 账户必须拥有有效的 AWS 账户。凭据与 Region 配置按 AWS SDK for Rust 官方入门指南配置默认凭据与区域通常通过~/.aws/credentials与~/.aws/config文件或环境变量注入。Cargo 构建工具通过 rustup 安装的 Rust 工具链自带cargo。仓库级 rustv1/README.md 进一步补充每个示例可用cargo run --bin [程序名]执行cargo test可运行单元测试不会产生 AWS 费用cargo test -- --ignored可运行集成测试可能产生费用或账户变更。常用环境变量示例运行时依赖 AWS SDK for Rust 的环境变量配置详见 rustv1/README.mdAWS_REGION/AWS_DEFAULT_REGION指定发送请求的区域。对本示例而言代码中已用RegionProviderChain::first_try(us-west-2)强制固定环境变量区域不会覆盖该链的首选值。AWS_PROFILE指定使用哪个 CLI 配置文件的凭据。AWS_ACCESS_KEY_ID与AWS_SECRET_ACCESS_KEY指定 IAM 用户/角色的访问密钥。RUST_LOG控制 tracing 日志级别例如info显示常规输出aws_smithy_http_tower::dispatchtrace可打印每次 SDK 调用的完整 HTTP 请求。运行示例编译并运行在rustv1/examples/globalaccelerator目录下执行cargo run --bin globalaccelerator-helloworld [-v]不带参数运行仅列出所有加速器的名称与 ARN。追加-v额外显示 SDK 客户端版本号与解析出的 Region始终为 us-west-2便于确认运行时环境。预期输出账户中存在加速器时输出形如Welcome to the AWS Rust SDK Global Accelerator example! Accelerator Name : my-accelerator Accelerator ARN : arn:aws:globalaccelerator::123456789012:accelerator/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx若账户中没有任何加速器分页器收集到的列表为空程序正常结束且不打印任何加速器条目。在 workspace 内运行该示例是 rustv1/examples/Cargo.toml 中 workspace 的成员之一因此也可以在rustv1/examples目录下直接执行cargo run --bin globalaccelerator-helloworldCargo 会自动解析 workspace 成员并编译运行该二进制目标。若要统一检查全部 Rust 示例的格式与 lint可运行仓库根目录下的./run_all.sh见 rustv1/README.md。⚠ 重要注意事项原文档明确列出了三点使用须知务必在运行前了解最小权限原则建议为运行该示例的 IAM 身份授予最小权限least privilege即仅授予执行本任务所需的最低权限。对本示例而言所需权限为globalaccelerator:ListAccelerators对应的 IAM 权限globalaccelerator:ListAccelerators不应附带其他无关权限。区域可用性本代码未经所有 AWS 区域测试。部分 AWS 服务仅在特定区域提供Global Accelerator 虽是全局服务但其 API 端点位于 us-west-2若所在网络无法访问该端点请求将失败。费用风险运行本代码可能在你的 AWS 账户中产生费用。Global Accelerator 服务本身按加速器运行时间计费创建、运行加速器均会产生账单仅调用ListAccelerators不会创建资源但任何后续实操都应留意成本。相关资源若希望继续深入仓库内可参考的资源包括示例源码globalaccelerator-helloworld.rs示例文档Global Accelerator README依赖清单Cargo.toml工程 workspace 配置rustv1/examples/Cargo.tomlRust 示例总览与环境变量说明rustv1/README.md官方还提供了 AWS SDK for Rust 的 Global Accelerator API 参考与 SDK 配置参考原文档 Resources 一节所列建议配合 SDK 文档查询ListAccelerators的请求/响应模型细节。版权说明示例代码遵循 Apache-2.0 许可Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0可直接参照、修改与运行用于学习 AWS SDK for Rust 的 Global Accelerator 集成。赞分享示例工程教程后端【免费下载链接】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 Go V2 实战使用 aws-doc-sdk-examples 中的 gov2 示例操作 Amazon SNSAWS SDK for Go V2 实战使用 aws doc sdk examples 中的 gov2 示例操作 Amazon SNS 本篇指南基于 gov2示例工程教程后端使用 AWS SDK for Kotlin 操作 AWS Step Functions示例场景与实战指南使用 AWS SDK for Kotlin 操作 AWS Step Functions示例场景与实战指南 导读 本文基于开源仓库 aws doc sdk ex示例工程教程后端使用 AWS SDK for .NET 操作 AWS Organizations12 个单动作示例详解使用 AWS SDK for .NET 操作 AWS Organizations12 个单动作示例详解 导读 本指南以 dotnetv3/Organizati示例工程教程后端上一篇极客时间电子书资源库200技术课程完整学习指南下一篇如何快速掌握SSH配置管理Awesome-SSH中的5个顶级工具解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表