Amazon Web Services ブログ

新しい AWS SDK for Rust のアルファリリース

本投稿は、Senior Linux Witch, Linux & Open Source の iliana etaoin による記事を翻訳したものです。

AWS SDK for Rust をアルファリリースとして発表できることを嬉しく思います。Rust で開発している AWS のお客様は、使い慣れている言語の概念をそのまま使用できるネイティブ な Rust による SDK を求めています。また、Rust に慣れていないお客様は、他の言語環境で使用した SDK と同様に動作するものを求めています。このアルファリリースでは、7 つの AWS サービスのクライアントをお試いただき、エルゴノミクスとユーザビリティに関するフィードバックをお寄せいただくことができます。

私はこの1年間、コミュニティ開発の Rust 用 AWS SDK である Rusoto の共同メンテナーでした。AWS を代表して、2015 年の最初のリリース以来 Rusoto の構築に取り組んだ原作者、他の共同メンテナー、およびコミュニティに感謝したいと思います。幅広い AWS サービスに対し機能するよう維持し続けることは非常に困難でしたが、それがお客様にとってどれくらい重要だったかを考えてみると、誇りに思える仕事でした。

新しい SDK の主な設計目標は、新しい AWS サービス のAPIが登場した時点でSDKから使用できるようにすることです。最近の他の SDK と同様に、AWS SDK for Rust は Smithy ツールチェーンとサービスモデルを使用して構築しました。この SDK には、新しいサービスを Day 1 から使用でき、さらに開発者体験の信頼性と一貫性を向上させる機能が含まれています。一般公開(GA)の時点までに、他の AWS SDK と同様、AWS 標準の再試行ロジックと一貫した認証情報プロバイダーのサポートが含まれる予定です。

本日公開した AWS SDK for Rust アルファリリースでは、7 つの AWS サービス ( Amazon DynamoDB, Amazon API Gateway, Amazon Kinesis, AWS Key Management Service, Amazon Polly, AWS Secrets Manager, Amazon Quantum Ledger Database ) のクライアントを試すことができます。お客様のフィードバックを早期に受け取り、設計と実装に組み込むため、アルファ版をコミュニティに公開しました。また、SDK のロードマップを公開しています。このロードマップでは、すべての AWS サービスの機能とサポートを追加するための計画について説明しています。GitHub の issuediscussion を通して、お客様にとってどの機能やサービスが重要かについてご意見をお聞かせください。本番環境で利用可能な状態に近づくと、Rusoto からこの SDK に移行するためのドキュメントを提供する予定です。一般公開後、この SDK は標準的なメンテナンスポリシーに従ってサポートされます。

では新しい AWS SDK for Rust の世界に飛び込んでみましょう!

Getting Started

アルファリリース中は、Git を使用してこの SDK をインストールできます。一般公開後は crates.io に公開されます。

ここでは、新しい AWS SDK for Rust を利用し、DynamoDB の一般的な操作を行う例を示します。SDK のリポジトリには、さらに詳細な例が多数用意されています。この例では、Rust と Cargo がすでにインストールされているものとしますが、まだであればドキュメントに従って Rust と Cargo をインストールしてください。

利用を開始するための手順

  1. 新しい Rust のプロジェクトを作成します
  2. Cargo.toml ファイルに DynamoDB と Tokio の依存関係を追加します
    [dependencies]
    aws-sdk-dynamodb = { git = "https://github.com/awslabs/aws-sdk-rust", tag = "v0.0.3-alpha"}
    tokio = { version = "1", features = ["full"] }
  3. ターミナルで AWS の認証情報を環境変数経由で渡します。 注記: 現時点のアルファ版では、認証情報は環境変数経由で受け渡す方法のみをサポートしています。
    # On Unix/MacOS/Linux
    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
    export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    export AWS_DEFAULT_REGION=us-east-1
      
    # On Windows
    set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
    set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    set AWS_DEFAULT_REGION=us-east-1
  4. DynamoDB へリクエストを送ります
    #[tokio::main]
    async fn main() -> Result<(), aws_sdk_dynamodb::Error> {
        let client = aws_sdk_dynamodb::Client::from_env();
        let req = client.list_tables().limit(10);
        let resp = req.send().await?;
        println!("Current DynamoDB tables: {:?}", resp.table_names.unwrap_or_default());
        Ok(())
    }

現在、AWS SDK for Rust は非同期ランタイムとして Tokio のみを、また認証情報は環境変数からの受け渡しのみをサポートしています。一般公開までに、標準的な認証情報プロバイダーを実装する予定です。また、複数の非同期ランタイムをサポートする方法を模索しています。

開発に貢献する

最新の情報を得るために、コントリビューティングガイドをチェックしてください。フィードバックの提供方法は次のとおりです。

  • 改善できる箇所の報告 — SDK がサポートする AWS サービスについては、GitHub の issue として送信するか discussion を開始してください。また、issue の優先順位付けと効果的な計画策定のため、issue に対するコメントと “+1” を行ってください。
  • 不具合を報告 – アルファリリースにバグがあることは避けられません。見つけた場合は、GitHub の issue として報告してください。
  • ドキュメントのレビュー — ドキュメントは皆様が SDK を正しく利用するため、明確で、正確で、最新であることが不可欠です。ドキュメントに問題が見つかった場合、 issue の作成、またはより良い方法として PR を作成してください。
  • Request for Comments (RFC) の作成RFC をリポジトリに追加して、SDK への大きな変更を提案します。開発が進むにつれ継続的に追加していきますので、レビューいただきあなたの考えをお知らせください。そしてあなた自身の RFC もぜひ追加してください!
  • 高レベルライブラリの優先順位付けを支援 — SDK のコア部分だけでなく、ハイレベルライブラリ( S3 暗号化クライアントDynamoDB マッパーなど)は AWS サービスを使いやすくします。discussionを通じて、あなたにとって最も重要なライブラリをお知らせください。

SDKのパブリックロードマップ

現在、AWS JSON 1.0、AWS JSON 1.1、および restJson1 プロトコルを使用する AWS サービスのサポートを提供しています。プロトコルサポートを拡大し、より多くの AWS サービスをサポートする予定です。現在サポートしている AWS サービスの完全なリストは、GitHub リポジトリにあります。また、パブリックロードマップを確認することで、残りの AWS サービスのサポート計画を知ることができます。ロードマップには、AWS サービスの新機能や追加の認証情報プロバイダーのサポートなど、追加を予定している新機能も含まれています。このロードマップは、今後何が起こるかについてコミュニティに伝えることを目的とし、開発の進捗状況に応じて最新の状態に保ちます。あなたにとって最も重要な機能に “+1” を追加してください。ロードマップ内の優先順位付けに活用されます。

お試しください

Getting Started ガイドは、AWS SDK for Rust の利用を開始する際にまず読むべきドキュメントです。読んでどう思ったかをぜひ伝えてください

We’re Hiring

AWS SDK for Rust チームは開発者を募集しています。参加をご希望の場合は、オープンポジションをご覧ください。

 

翻訳はソリューションアーキテクト木村が担当しました。原文はこちらです。