| Linuxコマンド |
| 用語集 |
| debian メモ |
| apache2 メモ |
| MySQL メモ |
| Oracle メモ |
| PostgreSQL |
| HOME |
RustをLambdaにデプロイします。
◆環境| OS | Windows 10 Home 22H2 64bit |
|---|
パッケージを作成します。 途中でyを入力しEnterを押します。
> Is this function an HTTP function? Yes
ビルドします。
>cargo lambda build --output-format zip
Updating crates.io index
Locking 123 packages to latest compatible versions
Adding lambda_http v0.13.0 (available: v0.15.0)
Compiling proc-macro2 v1.0.95
Compiling unicode-ident v1.0.18
:
Compiling lambda_http v0.13.0
Compiling ymwrust009 v0.1.0 (C:\Users\xxx-\rust-workspace\ymwrust0
09)Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.
22swatchコマンドでLambdaのエミュレーターサーバを起動します。 watchコマンドは以前はstartと呼ばれていたコマンドとのことです。
INFO starting Runtime server runtime_addr=127.0.0.1:9000
INFO starting lambda function function="_" manifest=Some("Cargo.toml
") cmd=Exec { prog: "\\\\?\\C:\\Users\\xxx\\.rustup\\toolchains\
\stable-x86_64-pc-windows-msvc\\bin\\cargo.exe", args: ["run", "
--color", "auto", "--manifest-path", "Cargo.toml"] }Compiling proc-macro2 v1.0.95
Compiling unicode-ident v1.0.18
:
Compiling lambda_http v0.13.0
Compiling ymwrust009 v0.1.0 (C:\Users\xxx\rust-workspace\ymwrust00
9)Finished `dev` profile [unoptimized + debuginfo] target(s) in 22.
39sRunning `target\debug\ymwrust009.exe`
別のコマンドプロンプトからcurlコマンドで動作確認します。
Hello world, this is an AWS Lambda HTTP request
正常に動作したようです。 「Hello world, this is an AWS Lambda HTTP request」とメッセージが表示されました。
watchコマンドを実行中のコマンドプロンプトにもメッセージが表示されました。
argo.toml") cmd=Exec { prog: "\\\\?\\C:\\Users\\xxx\\.rustup\\to
olchains\\stable-x86_64-pc-windows-msvc\\bin\\cargo.exe", args:
["run", "--color", "auto", "--manifest-path", "Cargo.toml", "--b
in", "ymwrust009"] }Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.1
4sRunning `target\debug\ymwrust009.exe`
cargo lambda invokeコマンドで動作確認してみます。
{"statusCode":200,"headers":{},"multiValueHeaders":{"content-type":["
text/html"]},"body":"Hello me, this is an AWS Lambda HTTP reques
t","isBase64Encoded":false}watchを実行中のウィンドウには何も表示されませんでした。 curlコマンドをもう一度実行してみたところ何も表示されなかったので、前回はcurlの応答としてメッセージが表示されたわけではないかもしれません。
watchを実行中のコマンドプロンプトでCtrl+Cで停止させます。
INFO terminating lambda function function="ymwrust009"
INFO terminating lambda function function="_"
AWS上にデプロイします。
✅ function deployed successfully 🎉
🛠️ binary last compiled 2 hours ago
🔍 arn: arn:aws:lambda:ap-northeast-1:806108692701:function:ymwrust0
09🎭 version: 1
🔗 url: https://zzzzeeffkkrr3355hhbbww77iiooxxoe.lambda-url.ap-north
east-1.on.aws/urlという行が表示されました。
invokeコマンドに--remoteを付けるとAWS上のLambdaを実行できるようです。
{"statusCode":200,"headers":{},"multiValueHeaders":{"content-type":["
text/html"]},"body":"Hello me, this is an AWS Lambda HTTP reques
t","isBase64Encoded":false}statusCodeに200が返って来ました!
AWSマネジメントコンソールでLambdaを確認します。

Lambdaが作成されていましたがトリガーは何も設定されていませんでした。
CloudWatchでログを見てみます。

ログが出ていました。
Lambdaの「設定」タブの「関数URL」を選択し「編集」をクリックします。

「認証タイプ」がNONEになっているので、AWS_IAMを選択し「保存」をクリックします。

再度invokeを実施したら前回と同じ結果だったので念のため関数URLを削除しました。 ただ、削除後も同じ結果だったので本当に削除されたのか謎です。
調べたところ、cargo lambda invoke --remoteは関数URLを使わないでLambdaへアクセスしている可能性があるようです。
Lambdaを削除してcargo lambda invoke --remoteを実行したところエラーになりました。
Error: x failed to invoke remote function
|-> service error
|-> ResourceNotFoundException: Function not found: arn:aws:lambda:a
p-northeast-1:888111666777:function:ymwrust009:| $LATEST
`-> ResourceNotFoundException: Function not found: arn:aws:lambda:a
p-northeast-1:888111666777:function:ymwrust009:$LATEST
Was this behavior unexpected?
Start a thread in https://github.com/cargo-lambda/cargo-lambda/disc
ussionscargo lambda build --output-format zip
cargo lambda watch
cargo lambda invoke ymwrust009 --data-example apigw-request
cargo lambda deploy --enable-function-url ymwrust009
cargo lambda invoke --remote ymwrust009 --data-example apigw-request
curl -L http://127.0.0.1:9000/lambda-url/ymwrust009
Copyright (C) 2025 ymlib.com
