AWS Lambda で Rustを使ってみた話

この記事は、nacika.com Rust記事 アドベントカレンダー Advent Calendar 2018 – Adventar 二日目の記事です。

AWS LambdaでRustを使う方法はほぼ、<a href=”https://dev.classmethod.jp/cloud/aws/custom-runtime-rust/” title=”AWS LambdaのCustom RuntimeでRustを実行してみた #reinvent | DevelopersIO target=”_blank”>AWS LambdaのCustom RuntimeでRustを実行してみた #reinvent | DevelopersIO こちらや Rust Runtime for AWS Lambda | AWS Open Source Blog こちらの記事の通りに作ると簡単につくれます。

手順はもうあるので、作ってみた感想などを書いていこうと思います。

ランタイム is 何処

ランタイムは、AWSが用意しているというよりはcreateとして提供されているようです。
Cargo.toml にある lambda_runtime = "^0.1" というのがそれですね。

main.rsの編集だけで終わる

びっくりしたのが、main.rsに一通りの処理を書くだけですぐに使える所。内部的にはLambda用のリクエストを受け付ける処理があるようですが全てランタイムがやってくれます。便利。
そのため、こちらでやることはハンドラを書くことくらい。

必要なイベントを型で受け取る

#[derive(Deserialize, Clone)]
struct CustomEvent { #[serde(rename = "text")] text: String, #[serde(rename = "is_decode")] is_decode: bool
}

serde(rename = "text") が実際のイベント名、下にあるのが型のフィールド。
イベントがそのまま型で来るのでそこから取ってくればOK。falseやtrueがboolで処理してくれるのも地味に嬉しい。(オプション型は試せていない)

気をつける所

Cargo.tomlの

[[bin]]
name = "bootstrap"

この部分、buildされたバイナリのファイル名がbootstrapじゃないとエラーになる。

実行時間

最安プランになっている様子。これ以上高速化しても安くならない・・?

この開発によって作ったもの

モコあきさんが2001年にリリースしたWindowsアプリのロリコンバータをリメイクしたものを作りました
https://nacika.com/loliconv/