Rust を使ってみる

始める前に、次の前提条件を満たしている必要があります。

  • Rust をインストールします。Rust をまだインストールしていない場合は、スタートガイドの Rust ドキュメントをご覧ください。

    次のコマンドで、Rust がインストールされていること(と Rust のバージョン)を確認できます。

    cargo --version
    
  • エディタまたは IDE をインストールします。

  • Google Cloud CLI をインストールする

新しい Rust プロジェクトを作成する

新しい Rust プロジェクトを作成するには、次のコマンドを実行します。

cargo new my-project

次のコマンドを実行して、ディレクトリを新しいプロジェクトに変更します。

cd my-project

Google Cloud クライアント ライブラリをインストールする

Rust 用 Cloud クライアント ライブラリは、Rust デベロッパーが Secret Manager や Workflows などの Google Cloud サービスと統合するための慣用的な方法です。

  1. 新しいプロジェクトに Secret Manager クライアント ライブラリを追加します。

    cargo add google-cloud-secretmanager-v1
    
  2. Secret Manager API をまだ有効にしていない場合は、[API とサービス] で有効にするか、次のコマンドを実行して有効にします。

    gcloud services enable secretmanager.googleapis.com
    
  3. 新しいプロジェクトに google-cloud-gax クレートを追加します。

    cargo add google-cloud-gax
    
  4. 新しいプロジェクトに tokio クレートを追加します。

    cargo add tokio --features macros
    
  5. Secret Manager クライアント ライブラリを使用するように、プロジェクトの src/main.rs を編集します。

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        use google_cloud_gax::paginator::ItemPaginator as _;
        use google_cloud_secretmanager_v1::client::SecretManagerService;
        let project_id = std::env::args().nth(1).unwrap();
        let client = SecretManagerService::builder().build().await?;
    
        let mut items = client
            .list_secrets()
            .set_parent(format!("projects/{project_id}"))
            .by_item();
        while let Some(item) = items.next().await {
            println!("{}", item?.name);
        }
        Ok(())
    }
    
  6. 最後に、プログラムをビルドします。

    cargo build
    

プログラムはエラーなくビルドされるはずです。

Rust アプリケーションの実行

ローカル開発環境で Cloud クライアント ライブラリを使用するには、アプリケーションのデフォルト認証情報を設定します。

アプリケーションのデフォルト認証情報を設定するには、次のコマンドを実行します。

gcloud auth application-default login

プログラムを実行し、 Google Cloud プロジェクト ID を指定します。

PROJECT_ID=$(gcloud config get project)
cargo run ${PROJECT_ID}

プログラムは、プロジェクト ID に関連付けられたシークレットを出力します。シークレットが表示されない場合は、Secret Manager にシークレットがない可能性があります。シークレットを作成してプログラムを再実行すると、出力にシークレットが表示されます。