| Linuxコマンド |
| 用語集 |
| debian メモ |
| apache2 メモ |
| MySQL メモ |
| Oracle メモ |
| PostgreSQL |
| HOME |
RustのLambdaでDynamoDBへレコードを追加してみます。
- プロジェクトの作成とデプロイ
- DynamoDBのテーブル作成
- プログラム作成
- Visual Studio Build Toolsをインストール(失敗)
- wslでbuild(失敗)
- 手動でzigをインストール
- 動作確認
| OS | Windows 11 Home 25H2 |
|---|---|
| rustc | 1.91.1 |
| cargo | 1.91.1 |
プロジェクトの作成とデプロイ
プロジェクトを作成しデプロイします。
コマンドプロンプトでプロジェクトを作成したいフォルダへ移動しコマンドを実行します。
> cargo lambda new ymwrust013 --http-feature=apigw_rest
> code ymwrust013
デプロイします。
動作確認してみます。
tDynamoDBのテーブル作成
DynamoDBにテーブルを作成します。
--table-name chat_log ^
--attribute-definitions AttributeName=id,AttributeType=S ^
--key-schema AttributeName=id,KeyType=HASH ^
--billing-mode PAY_PER_REQUEST
プログラム作成
| Cargo.toml | ||
|
| main.rs | ||
|
buildしたところエラーがでました。
Downloaded signal-hook-registry v1.4.7
Downloaded openssl-probe v0.1.6
Downloaded 2 crates (27.6 KB) in 0.42s
error: rustc 1.86.0 is not supported by the following packages:
aws-sdk-dynamodb@1.100.0 requires rustc 1.88.0
aws-sdk-sso@1.90.0 requires rustc 1.88.0
aws-sdk-ssooidc@1.92.0 requires rustc 1.88.0
aws-sdk-sts@1.94.0 requires rustc 1.88.0
Either upgrade rustc or select compatible dependency versions with
`cargo update <name>@<current-ver> --precise <compatible-ver>`
where `<compatible-ver>` is the latest version supporting rustc 1.86.
Visual Studio Build Toolsをインストール(失敗)
rustup updateします。
info: syncing channel updates for 'stable-x86_64-pc-windows-msvc'
info: latest update on 2025-11-10, rust version 1.91.1 (ed61e7d7e 202
5-11-07):
info: checking for self-update
info: downloading self-update
バージョンを確認。
rustc 1.91.1 (ed61e7d7e 2025-11-07)
再度ビルドしてみます。
Compiling proc-macro2 v1.0.103
Compiling quote v1.0.42
Compiling unicode-ident v1.0.22
:
Compiling pin-project v1.1.10
Compiling zerovec v0.11.5
Compiling zerotrie v0.2.3
error: failed to run custom build command for `ring v0.17.14`
:
error: failed to run custom build command for `aws-lc-sys v0.34.0`
:
error occurred in cc-rs: failed to find tool "ar": program not foun
d (see https://docs.rs/cc/latest/cc/#compile-time-requirements for
help)arというツールがないというエラーのようです。
調べたところ Visual Studio Build Toolsをインストールする必要があるようです。
exeを起動します。

更新をクリックします。

更新が始まりました。

Install nowをクリックします。

次へをクリックします。

OKをクリックします。

C++によるデスクトップ開発をチェックし右のMSVC~を4つチェックしてインストールをクリックします。

続行をクリックします。

PCを再起動します。

状況は変わりませんでした。
wslでbuild(失敗)
wslで実施してみます。
sudo apt install -y build-essential
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
cargo install cargo-lambda
sudo apt install -y zig
zigのインストールでエラーが出ました。
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package zig
snapでインストールしてみます。
error: snap "zig" is not available on stable but is available to inst
all on the following channels:beta snap install --beta zig
edge snap install --edge zig
Please be mindful pre-release channels may include features no
t completely tested orimplemented. Get more information with 'snap info zig'.
--betaを指定してインストールしてみます。。
2025-12-07T12:28:33+09:00 INFO Waiting for automatic snapd restart...
zig (beta) 0.15.2 from Jay Petacat (jayschwa) installed
状況は変わりませんでした。
手動でzigをインストール
手動でzigをインストールします。
curl -LO https://ziglang.org/download/0.12.1/zig-linux-x86_64-0.12.1.
tar.xzファイルを確認します。
-rw-r--r-- 1 ymlibadmin ymlibadmin 44M Dec 7 14:33 zig-linux-x86_64-
0.12.1.tar.xzxzを展開しインストールします。
$ sudo mv zig-linux-x86_64-0.12.1 /opt/zig
$ sudo ln -s /opt/zig/zig /usr/local/bin/zig
$ zig version
0.12.1
ビルドしてみます。
Compiling ymwrust013 v0.1.0 (/mnt/c/rust-workspace/ymwrust013)
Finished `release` profile [optimized] target(s) in 22.26s
ファイルができているか確認します。
-rwxrwxrwx 1 ymlibadmin ymlibadmin 15M Dec 7 07:12 ./target/lambda/y
mwrust013/bootstrap.zipデプロイします。
✅ function deployed successfully 🎉
🛠️ binary last compiled 3 minutes ago
🔍 arn: arn:aws:lambda:ap-northeast-1:8...:function:ymwrust013:4
🎭 version: 4
🔗 url: https://2gb...xcl.lambda-url.ap-northeast-1.on.aws/
正常にデプロイできたようです。
動作確認
実行してみます。
stError: alloc::boxed::Box<dyn core::error::Error + core::marker::Send
+ core::marker::Sync>× service error
Was this behavior unexpected?
Start a thread in https://github.com/cargo-lambda/cargo-lambda/disc
ussionsCloudWatchを確認します。 dynamodb:PutItemの権限が無いようです。
modb:PutItem on resource: arn:aws:dynamodb:ap-northeast-1:8...:tabl
e/chat_log because no identity-based policy allows the dynamodb:Put
Item actionAWSマネジメントコンソールでLambdaを開き設定をクリックし左に表示されているアクセス権限をクリックしロール名をクリックします。

許可を追加をクリックしインラインポリシーを作成をクリックします。

サービスにdynamodbと入力します。

アクション許可にputiと入力します。

PutItemにチェックをして次へをクリックします。

リソースが指定されていないというエラーがでました。

下にスクロールさせてリソース欄のARNを追加をクリックします。

。

次へをクリックします。

画面を下にスクロールさせてポリシーの作成をクリックします。

ポリシー名が必要というエラーがでました。

ポリシー名を入力しポリシーの作成をクリックします。

ポリシーが作成されました。

再度実行したところOKが返って来ました!
t{"inserted":10,"status":"OK"}
DynamoDBにレコードが10件追加されていました!

もう一度実行したところ正常終了しましたがレコードは10件のままでした。

timestampの値が更新されているので同じIDのものをPutItemすると更新されるようです。
Copyright (C) 2025 ymlib.com
