

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用适用于 Rust 的 AWS SDK 创建简单的应用程序
<a name="hello"></a>

您可以按照本教程创建调用 Rust 的简单应用程序，从而快速开始使用 AWS SDK for Rust AWS 服务。

## 先决条件
<a name="prerequisites"></a>

要使用，必须安装 Rust 和 Cargo。适用于 Rust 的 AWS SDK
+ 安装 Rust 工具链：[https://www.rust-lang。 org/tools/install](https://www.rust-lang.org/tools/install)
+ 通过运行以下命令安装 `cargo-component` [工具](https://github.com/bytecodealliance/cargo-component)：`cargo install cargo-component`

### 推荐的工具：
<a name="recommended-tools"></a>

可以在 IDE 中安装以下可选工具，以帮助完成代码和进行故障排除。
+ 有关 rust-analyzer 扩展程序，请参阅 [Visual Studio Code 中的 Rust](https://code.visualstudio.com/docs/languages/rust)。
+ 有关 Amazon Q 开发者版，请参阅[在 IDE 中安装 Amazon Q 开发者版扩展程序或插件](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE-setup.html)。

## 创建第一个 SDK 应用程序
<a name="hello-world"></a>

此过程创建了您的第一个适用于 Rust 的 SDK 应用程序，其中列出了您的 DynamoDB 表。

1. 在终端或控制台窗口中，导航到计算机上要创建应用程序的位置。

1. 输入以下命令以创建 `hello_world` 目录并在其中填充一个框架 Rust 项目：

   ```
   $ cargo new hello_world --bin
   ```

1. 导航到 `hello_world` 目录并使用以下命令向应用程序添加所需的依赖项：

   ```
   $ cargo add aws-config aws-sdk-dynamodb tokio --features tokio/full,aws-config/credentials-login
   ```

   这些依赖项包括为 DynamoDB 提供配置功能和支持的 SDK crate，其中包括用于实现异步 I/O 操作的 [`tokio` crate](https://crates.io/crates/tokio)。
**注意**  
除非您使用像 `tokio/full` 这样的功能，否则 Tokio 不会提供异步运行时。适用于 Rust 的 SDK 需要异步运行时。  
该`aws-config/credentials-login`功能支持AWS管理控制台登录凭据，有关更多信息，请参阅《工具参考指南》[AWSSDKs 和《工具参考指南》中的身份验证和访问权限](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。

1. 在 `src` 目录中更新 `main.rs` 以包含以下代码。

   ```
   use aws_config::meta::region::RegionProviderChain;
   use aws_config::BehaviorVersion;
   use aws_sdk_dynamodb::{Client, Error};
   
   /// Lists your DynamoDB tables in the default Region or us-east-1 if a default Region isn't set.
   #[tokio::main]
   async fn main() -> Result<(), Error> {
       let region_provider = RegionProviderChain::default_provider().or_else("us-east-1");
       let config = aws_config::defaults(BehaviorVersion::latest())
           .region(region_provider)
           .load()
           .await;
       let client = Client::new(&config);
   
       let resp = client.list_tables().send().await?;
   
       println!("Tables:");
   
       let names = resp.table_names();
   
       for name in names {
           println!("  {}", name);
       }
   
       println!();
       println!("Found {} tables", names.len());
   
       Ok(())
   }
   ```
**注意**  
此示例只显示第一页结果。要了解如何处理多页结果，请参阅[在适用于 Rust 的 AWS SDK 中使用分页结果](paginating.md)。

1. 运行程序：

   ```
   $ cargo run
   ```

   您应该会看到表名称列表。