AWS LambdaでRust engineでないPrismaを使うとエラーになった
PrismaもLambdaも全然詳しくない。
Lambdaの仕事で使うことになって調べたらハマったのでメモしておく。
この対処がベストなのかもわからない。
そもそも
PrismaはRustで書かれていたエンジンを使っていた。が、v6.16.0からRustなしでも使えるようにしているらしい。
エラー内容
で、上記サイトのコピペでコードを作るとこんな感じのエラーが出た。
PrismaClientKnownRequestError ...[中略] ENOENT: no such file or directory, open '/var/task/node_modules/.prisma/client/query_compiler_bg.wasm ...[中略]
対処方法
デプロイ用のzipをbuildする際にnode_modulesからprismaのクライアントをコピーして同梱した。
wasmがないなら入れてしまえという感じ。
"postbuild": "mkdir -p dist/node_modules/.prisma && cp -R node_modules/.prisma/client dist/node_modules/.prisma/ && cd dist && zip -r index.zip index.js* node_modules",
参考
以下が参考にはなったが最後はAIでの調査でゴリ押しで乗り切った感がある。
情報少ないし業務で使うかは微妙だなぁ。
WSL2でdevcontainerからpushしたいので鍵を転送したい
とりあえず解決法
keychainを入れる
インストールして
sudo apt-get install keychain
.profileを以下のように変更する。
/usr/bin/keychain -q --nogui $HOME/.ssh/[GitHubで使っている秘密鍵] source $HOME/.keychain/$(hostname)-sh
何をやったのか
なんかこんな感じらしい。
- ssh-agentが動いていれば鍵のコンテナへの転送はdevcontainer側でやる
- ssh-agentはWSL2で動かすとログインセッションごとにプロセス増える
- keychainというプログラムがよしなにしてくれる
参考
MCPの入門記事を読んだ
世の中はAI一色なので、入門記事を読んで配管通すくらいはやってみることにした。
以下を読んだ。
とてもよい記事でありがたかった。いくつか詰まった箇所だけメモっておく。
ローカルのnode環境が壊れていたので作り直した
いきなり関係ないけれど、手元のnode環境が壊れていたので作り直した。
WSL2でnvmを使ってTypescriptの導入までやった。
TOMONO - tech blog - WSL2 + Ubuntu + nvm + TypeScript の環境構築の備忘録
ClaudeデスクトップへWSL2環境のnodeスクリプトを読み込ませる
記事では直接ビルドしたnodeスクリプトを指定していた。
WSL2環境でビルドしたものをWindowsのClaudeデスクトップに読み込ませたかったので、環境変数設定のためのbashスクリプトを書いてそこを経由することにした。
以下がclaude_desktop.config。
{
"mcpServers": {
"cat_image": {
"command": "wsl",
"args": [
"-e",
"bash",
"-c",
"/home/user/projects/cat_image/scripts/via_wsl2.sh"
]
}
}
}
以下がWSL2用に経由するスクリプト。
#!/bin/bash export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" CAT_API_KEY=<API_KEY_IS_HERE> "/home/user/projects/cat_image/build/index.js"
その他
tsconfig.jsonの作成を忘れてビルドできなくて困った。
MCPクライアントの方ではpackage.jsonに「"type": "module",」を追記した。
総じてTypescriptをあまり触っていないのが悪い。
仕事で使う機会が増えれば一冊本でも読むのだが。
追記
こっちもよかった。
オリジナルのちょっと便利な MCP サーバー を作ってみた - SIOS Tech lab
さらに追記
リモートMCPの記事もあった。ありがたい。
SSEを利用していたけど、基本は変わらないだろう。
オリジナルのちょっと便利な『リモート MCP サーバー』を作ってみた - SIOS Tech lab
さらにさらに追記
MCPの大枠を知りたかったので以下も読んだ。
JSON-RPCも名前しか知らなかったのでちょうどよかったかな。
bashとbcpを使ってSQLServerのデータをCSVへ出力した時のメモ
WSL2のUbuntuへbcpをインストールして行った。
bcpのインストールはこちらから。
Sql Server Command-Line Tools on Linux をインストールする - SQL Server | Microsoft Learn
スクリプトはこんな感じで雑に描いた。
#!/bin/bash
# bcpコマンドのインストールが必要です
# https://learn.microsoft.com/ja-jp/sql/linux/sql-server-linux-setup-tools?view=sql-server-ver16&tabs=ubuntu-install#ubuntu
rm -rf export_csv
mkdir export_csv
# エクスポートするテーブル
TABLES=("sample_table_1" "sample_table_2" "sample_table_3")
for TABLE in "${TABLES[@]}"; do
bcp "SELECT * FROM sample_schema.${TABLE}" queryout "./export_csv/${TABLE}.csv" -c -t, -S localhost -d sample_db-U sa -u -P saNoPassword
done
一応出力できたけど、bcpがちゃんとエスケープ処理までやってCSVを出してはくれないので困る。
とりあえずやる分には便利。
bcpコマンドで証明書を:SSL routines::certificate verify failedが出た
dockerで用意したSQLServerからとりあえずデータを出したいのでこういうのを打つと
bcp "SELECT * FROM sample_db.sample_table" queryout "./export_csv/sample_table.csv" -c -t, -S localhost -d sample_db -U sa -P saNoPassword
こんなのが出た
Error = [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]
-uをつけて回避した。
bcp ユーティリティを使用した一括コピー - SQL Server | Microsoft Learn
bcp "SELECT * FROM sample_db.sample_table" queryout "./export_csv/sample_table.csv" -c -t, -S localhost -d sample_db -U sa -u -P saNoPassword
dnfでパッケージアップデートする際に知っておきたかったこと
知らない事ばかり。雰囲気でやってんなぁ。
dnfアップデート後に再起動が必要なサービスを調べる
「yum-utils」というパッケージで「needs-restarting」コマンドが使えるらしい。
インストール
$ dnf install yum-utils
チェックする。
$ needs-restarting
参考
Future spirits - dnfアップデート後って必ず再起動必要なの?
dnfの履歴確認
$ dnf history $ dnf history info 2 # 2はhistoryで表示されたID
参考
なんかロールバックまでできるらしい。すご。
Developers IO - DNF でインストールやアップデートした履歴を確認してみた
余談
dnf updateとdnf upgradeって同じらしい。
一応upgradeが推奨らしい。