Amplifyで作成したプロジェクトでamplify pushを使ってデプロイしたLambdaを実行すると[ERROR] Runtime.ImportModuleError: Unable to import module 'index': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fipsというエラーが発生する。
amplify pushでLambdaをデプロイしたところ、[ERROR] Runtime.ImportModuleError: Unable to import module 'index': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fipsというエラーが発生
解決策
OpenSSLのバージョンを1.1.1+に変更
次に発生したエラー
[ERROR] Runtime.ImportModuleError: Unable to import module 'index': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips
→ pip install urllib3で解決
次に発生したエラー
[ERROR] Runtime.ImportModuleError: Unable to import module ‘index’:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.
We have compiled some common reasons and troubleshooting tips at:
https://numpy.org/devdocs/user/troubleshooting-importerror.html
Please note and check the following:
* The Python version is: Python3.8 from “/var/lang/bin/python3.8”
* The NumPy version is: “1.24.4"
and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.
Original error was: No module named ‘numpy.core._multiarray_umath’
Traceback (most recent call last):
→ 多分NumPyは1.24.4を入れて解決
別に発生したエラー
The following resources failed to deploy:
Resource Name: LambdaFunction (AWS::Lambda::Function)
Event Type: update
Reason: Resource handler returned message: "Unzipped size must be smaller than 135390475 bytes (Service: Lambda, Status Code: 400, Request ID: a3b51e9a-4734-435e-a001-2c7ce1301ee7)" (RequestToken: 92a2a218-8b38-6b12-baff-133e7d710537, HandlerErrorCode: InvalidRequest)
URL: https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/arn%3Aaws%3Acloudformation%3Aap-northeast-1%3A237156174022%3Astack%2Famplify-slackbottesttwo-dev-162215-functionslackLangchainResponder-1PUTGEZ3KV53F%2F6707b020-344c-11ee-a124-0e162f03cf95/events
PG::Coder.new(hash) is deprecated. Please use keyword arguments instead! Called from /usr/local/bundle/gems/activerecord-7.0.4.3/lib/active_record/connection_adapters/postgresql_adapter.rb:980:in `new'
closure_treeはRailsのfixturesには未対応の模様
closure_treeは、現在のところfixturesと組み合わせて利用されることが想定されていないようです。
と言うのも、closure_tree gemを利用したRails 7のappのtestにおいて、fixturesを用いているのですが、いくつか困った現象に遭遇しているためです。
開発で困っている現象
具体的には、以下のような現象に遭遇しています。
foos(:one).self_and_descendant_ids #=> []
(少なくともselfのIDが含まれるはずなので、空の配列はおかしい)現在の対応策
これらの現象は、test中でcreateメソッド等を使用して作成したオブジェクトでは発生しません。
そこで前述の現象に対応するため、closure_treeを利用しているモデルでは、create等のメソッドでオブジェクトを作成し、testに用いています。
なお、小手先のテクニックとして、fixturesで記述したテスト用初期設定を、createで作ったオブジェクトに移し替える処理を書くという方法があります。こうすることで、テスト用初期設定はfixturesに書きつつも、困った現象は回避することが出来ます。
Stimulusの記事の情報が集まるTopic
Stimulusには、Targetに、Valueに、Action Parameterにと、HTML側からJavaScript側へ何かしらを引き渡す仕組みがいろいろとあります。ですので、これら3つの仕組みについてサンプルコードを交えて説明する記事を書きました。
Stimulusの記事の情報が集まるTopic
公式ドキュメント(英語)
公式情報がしっかりしているので、まず読むならこれら公式情報でしょうが、英語なのが日本人にはちょっと大変。
AWS Amplifyを使ったSlackbotの開発
※書き途中の内容です。
問題
Amplifyで作成したプロジェクトでamplify pushを使ってデプロイしたLambdaを実行すると
[ERROR] Runtime.ImportModuleError: Unable to import module 'index': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips
というエラーが発生する。そもそも実現したいこと
LambdaでLangChainを使ってPineconeからフロントで入力された質問に対する回答をフロントに返したい。
行った手順
amplify pushでLambdaをデプロイしたところ、
[ERROR] Runtime.ImportModuleError: Unable to import module 'index': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips
というエラーが発生解決策
OpenSSLのバージョンを1.1.1+に変更
次に発生したエラー
→ pip install urllib3で解決
次に発生したエラー
→ 多分NumPyは1.24.4を入れて解決
別に発生したエラー
→以下の手順で解決
■レイヤーの作り方
rails 7.0.4 で pg 1.5 を使うと警告が出る問題
昨日rails 7.0.5がリリースされました。
早速試したところ、rails 7.0.5とpg 1.5の組み合わせでは、前述の警告が出ないことを確認できました。
そこで、この結果を踏まえて、このTopicの先頭コメントの記述を更新しました。
rails 7.0.4 で pg 1.5 を使うと警告が出る問題
結論
railsのバージョンを7.0.5以上に上げてから、pg 1.5 にバージョンを上げれば、警告の問題は発生しません。
問題が発生したバージョン
問題を引き起こした作業内容
bundle update
でpgのバージョンを1.4系から1.5系に上げた。発生した問題
rails test
で以下のような警告が複数出るようになった。rails 7.0.5のリリース後に行った対処
Gemfile
にて、pgは1.5以降、railsは7.0.5以降を使うように指定してから、bundle update
コマンドを実行した。その後で
rails test
を実行し、前述の警告が出ないことを確認した。rails 7.0.5のリリース前に行った対処
Gemfile
に以下のように記述して、利用するpgを1.4系に留めるように指定した。rails本家の対応状況
bundleコマンドの公式マニュアル
bundleコマンドの公式マニュアルは、公式サイトから、
Docs > Reference Guides
で辿ることができる。例えば、bundle updateのマニュアルはこちら。こちらでは、利用できるオプションについてもきちんと説明されています。
ちなみに、Google検索からでは、なぜか公式マニュアルにたどり着きにくい気がするので、このTopicを立てました。
Railsを用いた運用中のサービスのアップグレードの仕方
まずはRubyをアップグレード
「RubyのアップグレードとRailsのアップグレードは別々に行うのがよい方法です。最初にRubyを可能な限り最新版にアップグレードし、それからRailsをアップグレードします。」 Railsガイドより
次にRailsを1つずつアップグレード
「Railsのバージョンを変更する場合、マイナーバージョンを1つずつゆっくりと上げながら、その都度表示される非推奨機能の警告メッセージを上手に利用するのがベストです。」Railsガイドより
具体的には、以下の手順を繰り返す。
bin/rails app:update
を実行して設定等を最新のバージョンに合わせる。参考:1.4 アップデートタスク、1.5 フレームワークのデフォルトを設定する用途はHTML出力に限らず・・・
HTMLに限らず、様々なドキュメントのレンダリングに利用できる。 私はCソースコードの出力に使っています。
qart.jsで作成したQRコードを紙に印刷して使う場合のノウハウ
QRコードのセル数を少なくするために(つまり、印刷されたときの1つのセルを大きくするために)Versionはできるだけ小さく、また、くっきりと印刷するためにSizeは大きめに設定すると良いようです。 ちなみに、合成したQRコードを家庭用プリンタで縦横4cm弱で印刷しましたが、Versionを10に設定した場合はときどきしか認識に成功しませんでした。そこで、Versionを4に設定したところ、認識率が大分改善しました。