LoginSignup
1
0

【AWS】手を動かしながら学ぶAWS SDK for Rust

Posted at

はじめに

この記事では 手を動かしながらAWSが提供するAWS SDK for Rust(以下、AWS SDK)を学習していく記事です。主な内容としては実践したときのメモを中心に書きます。
(忘れやすいことなど)誤りなどがあれば書き直していく予定です。

RustでAWS SDKが使えるようになったとさ

投稿日: Nov 27, 2023
本日、AWS は AWS SDK for Rust の一般提供を発表しました。これにより、お客様はこれを本番環境のワークロードに使用できるようになります。AWS SDK for Rust を使用すると、開発者は AWS のサービスを操作し、Rust のコードとベストプラクティスに従った API を楽しむことができます。

引用:AWS SDK for Rust の一般提供を開始

Rust のコードとベストプラクティスに従った API を楽しむことができます

RustでAPIを楽しむことができる!!楽しめる!これはやるしかないですね!!

事前準備

まずはセットアップをしましょう。動作環境としてはcurlが動くLinuxかもしくはMacOSが望ましいです。WindowsでもWSLやDockerなどで動作すると思います。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

インストールが完了したらソースコマンドを実行します。

source "$HOME/.cargo/env"

最後に動作確認でバージョンを確認してみます。

rustc -V

実行結果

rustc 1.74.0 (79e9716c9 2023-11-13)

ドキュメントを見ていこう

今回はEC2クライアントの機能をうまいこと使ってVPCの情報を引用してみます。
つまりはHello,World的なものを作っていきます。

aws-sdk-ec2

準備体操

プロジェクト作成からHello,Worldまで実行

ec2-for-rustというプロジェクトをデスクトップ上に作成します。
まずはディレクトリを移動します。

cd ~/Desktop

プロジェクトを作成します。

cargo new ec2-for-rust

プロジェクトのディレクトリに変更します。

cd ec2-for-rust

プロジェクトを実行してHello,Worldが実行できることを確認します。

cargo run

実行結果

Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/ec2-for-rust`
Hello, world!

AWS SDKをセットアップ

Cargo.tomlを追記する

下記の設定をCargo.tomlに追記します。

[dependencies]
aws-config = { version = "1.0.3", features = ["behavior-version-latest"] }
aws-sdk-ec2 = "1.5.0"
tokio = { version = "1", features = ["full"] }
cargo install

もしくは

aws-sdk-ec2パッケージを追加します。

cargo add aws-sdk-ec2

コードを修正

use aws_sdk_ec2 as ec2;

#[::tokio::main]
async fn main() -> Result<(), ec2::Error> {
    let config = aws_config::load_from_env().await;
    let client = aws_sdk_ec2::Client::new(&config);

    // ... make some calls with the client
    let vpcs = client.describe_vpcs().send().await?;

    println!(
        "{:?}",
        vpcs.vpcs()[0]
            .vpc_id()
            .as_deref()
            .unwrap_or_default()
            .as_bytes()
    );
    println!("{:?}", Some("vpc".as_bytes()));
    Ok(())
}

プロジェクトを実行するとVPC IDが取得できます。VPCを作成していない場合は作成してから実行しましょう。

cargo run

まとめ

癖がありましたが、Rustがかける人なら扱えるかなと思えるところです。
Pythonを使ってSDKを動かすことが多いですが、Rustは実行速度が速いので実行速度を上げてリソースを取得したい場合に有効かと思います。

ただ、RustのユーザーでかつAWSが扱える人となるとハードルがバチクソ上がるので組織やチームで使う場合はわりと難易度が高いかもしれません。(技術としては魅力的だけども!)

今回使ったコード

ec2-for-rust

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0