AWS LambdaでRustを使う
AWS Lambda with Rust
公式のサポートがある環境ではないのでCustom Runtimeを使う必要がある。 2020年10月11日現在まだcrates.ioにpublishされていないが、lambda-runtimeの0.3あるいは名前を変えてlambdaとなる(?) GitHub - awslabs/aws-lambda-rust-runtime: A Rust runtime for AWS Lambda が使える。 どうも使用例がまだ少なくネット上にサンプルがなかったのでここに書いて残しておく。
aws-lambda-runtime 0.3 or lambda example
おそらく正式にpublishされた際には#[lambda]マクロが導入されていて0から書く場合はもうちょっとシンプルにも書けるようになるのだろうが、既存のバージョンのコードから変更するとこの例のような感じになると思われる。 tokio-0.2が使え、async/awaitが使え、?オペレータを使えるのが既存のバージョンと大きく違う。
ただしこのバージョンのRustはAWSが提供するカスタム環境のイメージのglibcでは使えないため、必ずmuslターゲットでコンパイルする必要がある。
既にAWS提供の環境でビルドしていた場合は別のhttps://hub.docker.com/r/ekidd/rust-musl-builder/のようなビルダーイメージでビルドする手もあるが、musl libcとglibcで性能が変わってくるような場合もあるだろう。