全4919文字
PR

 Rustはクラウドサービスでも利用できる。今回は、アマゾンウェブサービス(AWS)でのRustの利用について簡単に見ていく。

AWSと互いに支え合うRust

 AWSは比較的早くからRustのサポートを表明し、Rustを利用してサービスを構築してきた。例えば、サーバーレスコンピューティングサービス「AWS Lambda」(以下、Lambda)を動かす仮想基盤「Firecracker」での利用例がある。ほかにもAWSの多くの基盤をRustが支えている。

 ソフトウエア開発キット「AWS SDK for Rust」を通してAWSを操作することも可能だ。RustアプリケーションからAWSのさまざまなコンポーネントにアクセスできる。AWS SDK for Rustは現時点ではデベロッパープレビューの段階だが、筆者は業務でこれを利用している。

 AWSは、Rustの開発コミュニティーを支援する「Rust Foundation(Rust 財団)」にも参加し、Rustを積極的にサポートしている。Rustはオープンソースで開発されており、これまで主に米Mozillaに支えられて発展してきた。しかしMozillaの大規模リストラが2020年8月に実施され、Rustの財政基盤に対する不安が急速に高まった。これを払拭するために、Rust Foundationが設立されたという経緯がある。

Lambda上でRustコードを動かす

 今回はAWS上でのRustの利用例として、Lambda上でRustのコードを動かしてみる。Lambdaは多くのプログラミング言語を公式にサポートしており、RustはLambdaの「カスタムランタイム」という機能によってサポートされている。

 Lambda上で動作するプログラムの開発言語としてRustの人気は高い。理由はいくつかある。

 まず、Lambdaの実行時間の制約をクリアしやすい点だ。Lambdaは実行時間の上限を最大で15分までしか設定できない。15分で多くの処理をさせたい場合、Rustのように実行時間を短縮しやすい言語を利用するのは理にかなっている。

 また、Lambdaの課金体系に対してもRustは有利だ。現時点でのLambdaの利用料金は、大まかに「Lambdaで実行した総時間数」と「関数に割り当てられたメモリー量」で決定される。Rustは実行時間が短いのに加え、メモリー使用量の面でも有利だ。筆者がPythonやJavaといった他の言語を使用した場合と比較して、Rustはメモリー使用量が圧倒的に少なかった。Rustを使えば、実行時間とメモリー使用量の両面からLambda利用時のコストを抑えられる。

 さらにRustには、Lambdaでの開発を楽にする「cargo-lambda」というcargo向けのツールがある。このツールだけで、プロジェクトの構築と実装、手元での動作確認、さらにはビルドとデプロイまでできる。今回はcargo-lambdaの利用を前提として解説していく。