0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS日記43 (AWS Lambda - Rust)

Last updated at Posted at 2022-06-30

はじめに

今回はAWS SDK for Rustを試します。
Lambda, DynamoDB, S3を利用し簡易な画像掲示板を作ります。
DynamoDB・S3周りはaws-sdk-rustを利用し、Lambda周りやビルド・デプロイはaws-lambda-rust-runtimeを利用します。

AWS SDK for Rustの利点

すべてのクレートは crates.io で入手できます。SDK は、EC2、ECS、Lambda などの環境で実行する場合の自動構成、組み込みの再試行サポート、およびお客様のニーズを満たすためのさまざまな認証メカニズムを提供します。AWS SDK for Rust は、CPU とメモリの使用率を削減し、アプリケーションのためにより多くのリソースを解放するために、不要なコピーと割り当てを最小限に抑えるシリアライザーとデシリアライザーを使用した高速化設計です。

準備

API作成

DynamoDBのテーブルから要素を取得するにはscanを使います。
let client = Client::new(&shared_config);
let res: Result<Vec<_>, _> = client
  .scan()
  .table_name(env_table)
  .into_paginator()
  .items()
  .send()
  .collect()
  .await;
DynamoDBのテーブルへ要素を挿入するにはput_itemを使います。
let dynamodb_client = DynamodbClient::new(&shared_config);
let id_av = AttributeValue::N(image_id);
let url_av = AttributeValue::S(image_uri);
let created_av = AttributeValue::S(created);

let request = dynamodb_client
  .put_item()
  .table_name(env_table.clone())
  .item("img_id", id_av)
  .item("url", url_av)
  .item("created", created_av);
request.send().await?;
S3にオブジェクトをアップロードするにはput_objectを使います。
let s3_client = S3Client::new(&shared_config);
s3_client
  .put_object()
  .acl(ObjectCannedAcl::PublicRead)
  .bucket(&env_bucket)
  .key(&filename)
  .body(ByteStream::from(decode(base64data).unwrap()))
  .content_type(content_type)
  .send()
  .await?;

ビルド

cargo lambda build --release --arm64

デプロイ

sam deploy --guided

簡易画像掲示板の動作確認

screen_shot.jpg

終わりに

AWS SDK for Rustを試しました。
aws-sdk-rustの更新が頻繁で、今後大きなバージョンアップがあるかもしれませんので継続的に試していこうと思います。

  • 今回作成した簡易画像掲示板のソースコードは以下のリポジトリにあります。
以下の記事・資料を参考にしました。

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

DynamoDB examples using SDK for Rust

Amazon S3 examples using SDK for Rust

Enum aws_sdk_s3::model::ObjectCannedAcl

以下の書籍がRustへの関心と記事作成の動機になりました。

詳解Rustプログラミング

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?