Rust Lambda関数とLocalStack DynamoDBを使用したユーザー管理APIのサンプルプロジェクト
このプロジェクトは、AWS SAMを使用してRust製のLambda関数を構築し、LocalStackでDynamoDBと連携するサンプル実装です。 ユーザー情報のCRUD操作を行うREST APIを提供します。
- Runtime: Rust (provided.al2023)
- Framework: AWS SAM (Serverless Application Model)
- Database: DynamoDB (LocalStack)
- Dependencies:
- aws-sdk-dynamodb
- lambda_runtime
- serde / serde_json
- aws_lambda_events
以下のツールがインストールされている必要があります:
# cargo-lambdaのインストール
cargo install cargo-lambda
DynamoDBをローカル環境で動かすためにLocalStackを起動します。
docker compose up -d
起動すると、scripts/init.sh
が自動実行され、users
テーブルが作成されます。
sam build
sam local start-api --docker-network rust-samlocalapi-localstack_default
APIは http://127.0.0.1:3000
で利用可能になります。
usersテーブルから全ユーザーを取得します。
レスポンス例:
{
"users": [
{
"user_id": "001",
"name": "田中太郎",
"email": "tanaka@example.com"
}
],
"count": 1
}
ステータスコード:
200
: 成功500
: サーバーエラー
新しいユーザーをusersテーブルに登録します。
リクエスト例:
{
"user_id": "001",
"name": "田中太郎",
"email": "tanaka@example.com"
}
レスポンス例:
{
"message": "User created successfully",
"user": {
"user_id": "001",
"name": "田中太郎",
"email": "tanaka@example.com"
}
}
ステータスコード:
201
: 作成成功400
: 不正なリクエスト500
: サーバーエラー
curl -X POST http://127.0.0.1:3000/ \
-H "Content-Type: application/json" \
-d '{
"user_id": "001",
"name": "田中太郎",
"email": "tanaka@example.com"
}'
curl http://127.0.0.1:3000/
.
├── Cargo.toml # Rustプロジェクト設定
├── template.yml # SAMテンプレート
├── swagger.yml # OpenAPI仕様書
├── docker-compose.yml # LocalStack設定
├── scripts/
│ └── init.sh # DynamoDBテーブル初期化スクリプト
└── src/
├── get_function.rs # GET / ハンドラー
└── post_function.rs # POST / ハンドラー
属性名 | 型 | 説明 |
---|---|---|
user_id | String | ユーザーID (パーティションキー) |
name | String | ユーザー名 |
String | メールアドレス |
Docker Networkが正しく設定されているか確認してください:
docker network ls
docker compose ps
cargo-lambdaが正しくインストールされているか確認してください:
cargo lambda --version
MIT License