OpenSearch をローカル環境で起動する、そしてRubyからクエリを実行する
表題のことをやってみました。 今年のre:InventでOpenSearch Serverlessが発表されたので、いい機会だしいっちょOpenSearch触ってみるかと思った次第。
最初はOpenSearch Serverlessを起動してみたりしたんですが、2〜3日過ぎたら請求が$120くらい増えててビビって消しました。
ところがその数日後に請求額を見てみると、そのOpenSearchの利用料がきれいに消えていたのです。 何が起こったんでしょうね。
ともあれ、Serverlessだからといってタダで使えるわけではないので、とりあえずOpenSearchを雑に使ってみようということでローカル環境でOpenSearchを起動してみることにしたのでした。
続きを読むAWS Amplify のビルドで『The input value type 'AuthRule' is not present when resolving type 'AMPLIFY'』が発生した際の対応
AWSの発表しているAmplify + Reactで簡単なアプリケーションをデプロイするというチュートリアルをやっていたところ、表題の問題に遭遇。
https://aws.amazon.com/jp/getting-started/hands-on/build-react-app-amplify-graphql/module-four/
ローカルでの動作は問題なくGraphQLを使ったデータ登録ができたものの、その変更をpushし、amplifyにデプロイしようとしたところで以下のようなエラーが出てビルドに失敗した。
CloudFormation上では以下のようなログ
続きを読むInstant Potを使った簡単ほろほろチキンのスパイスカレー試作
※ "試作" とタイトルに入れた通り、出来上がりにはあまり満足していない。 鶏肉はホロホロになったものの、味がしっかりしみておらず、カレー全体としても塩っ気が足りない気がした。
- 鶏肉を圧力鍋にかけて柔らかくしつつ鶏のスープを作り、それにスパイスカレーの素を加えればお手軽にほろほろチキンのカレーができあがるのでは?
- 鶏肉に軽く焼き目をつけて圧力をかける
- スパイスカレーの素を作る
- 圧力をかけた鶏肉を入れる
- できました
うちでは Instant Potがかなり活躍している。 鶏肉(またはウィンナー、ベーコン)・キャベツ・じゃがいも入れてコンソメキューブを入れて圧力をかければサクッと野菜スープ(ないしポトフ)ができあがる。 野菜がドロッドロになるけど僕はこれくらいが食べやすくてすき。このスープを週1~2で食べるようになったら体重が2~3キロ減った。
ところで本日 1/22はカレーの日らしい。
ということで
鶏肉を圧力鍋にかけて柔らかくしつつ鶏のスープを作り、それにスパイスカレーの素を加えればお手軽にほろほろチキンのカレーができあがるのでは?
と思いやってみた次第。
これまでに何度もスパイスカレーを作ってきたものの、実はあまり安定して満足のいくものが作れていない。できるだけ簡単に、かつ再現性の高いレシピを目指したい。
いろいろなレシピを試してみたけど、最近はこちらの作り方を参考にしている。
あとはこちらも。
続きを読むRuby 2.5.0コンテナでRails6の開発環境を作るときのトラブルシューティング
こちらのハンズオンをやっていたところ、いくつかの問題に遭遇したので対処法をまとめておく。
Rails アプリケーションをコンテナで開発しよう ! 第 1 回 - まずは Rails アプリケーション作りから
Rails7のインストールに失敗する
記事では Ruby2.5 & Rails6 を使用しているが、現時点(2022/1)での最新版は 7.0.1
。
エラーメッセージにもあるように7.0.1
ではRuby2.7以上が必要であるため gem install rails
に失敗する。
root@810c33297af8:/work# gem install rails Fetching: concurrent-ruby-1.1.9.gem (100%) Successfully installed concurrent-ruby-1.1.9 Fetching: i18n-1.8.11.gem (100%) Successfully installed i18n-1.8.11 Fetching: tzinfo-2.0.4.gem (100%) Successfully installed tzinfo-2.0.4 Fetching: activesupport-7.0.1.gem (100%) ERROR: Error installing rails: There are no versions of activesupport (= 7.0.1) compatible with your Ruby & RubyGems. Maybe try installing an older version of the gem you're looking for? activesupport requires Ruby version >= 2.7.0. The current ruby version is 2.5.0.
gem install
のオプションでRailsのバージョンを指定してインストールすることとした。
root@810c33297af8:/work# gem install -v 6.0.3.2 rails
Nokogiriのインストールに失敗する
さて、Railのバージョン指定をして改めてgem installを実施したところ、
root@810c33297af8:/work# gem install -v 6.0.3.2 rails ... Fetching: activesupport-6.0.3.2.gem (100%) Successfully installed activesupport-6.0.3.2 ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) bad response Forbidden 403 (https://api.rubygems.org/quick/Marshal.4.8/nokogiri-1.13.0-x64-unknown.gemspec.rz)
Nokogiri 1.13.0のインストールに失敗している。 403なのでライブラリが不足している的なやつではないみたい。
rubygems.org でNokogiriの過去バージョンを調べて 1.12.5
を予めインストールすることで解決。
root@810c33297af8:/work# gem install nokogiri -v 1.12.5 Fetching: nokogiri-1.12.5-x86_64-linux.gem (100%) Successfully installed nokogiri-1.12.5-x86_64-linux 1 gem installed
root@810c33297af8:/work# gem install -v 6.0.3.2 rails Fetching: loofah-2.13.0.gem (100%) Successfully installed loofah-2.13.0 Fetching: rails-html-sanitizer-1.4.2.gem (100%) Successfully installed rails-html-sanitizer-1.4.2 Fetching: rails-dom-testing-2.0.3.gem (100%) Successfully installed rails-dom-testing-2.0.3 Fetching: builder-3.2.4.gem (100%) Successfully installed builder-3.2.4 Fetching: erubi-1.10.0.gem (100%) Successfully installed erubi-1.10.0 Fetching: actionview-6.0.3.2.gem (100%) Successfully installed actionview-6.0.3.2 Fetching: actionpack-6.0.3.2.gem (100%) Successfully installed actionpack-6.0.3.2 Fetching: activemodel-6.0.3.2.gem (100%) Successfully installed activemodel-6.0.3.2 Fetching: activerecord-6.0.3.2.gem (100%) Successfully installed activerecord-6.0.3.2 Fetching: globalid-1.0.0.gem (100%) Successfully installed globalid-1.0.0 Fetching: activejob-6.0.3.2.gem (100%) Successfully installed activejob-6.0.3.2 Fetching: mini_mime-1.1.2.gem (100%) Successfully installed mini_mime-1.1.2 Fetching: mail-2.7.1.gem (100%) Successfully installed mail-2.7.1 Fetching: actionmailer-6.0.3.2.gem (100%) Successfully installed actionmailer-6.0.3.2 Fetching: nio4r-2.5.8.gem (100%) Building native extensions. This could take a while... Successfully installed nio4r-2.5.8 Fetching: websocket-extensions-0.1.5.gem (100%) Successfully installed websocket-extensions-0.1.5 Fetching: websocket-driver-0.7.5.gem (100%) Building native extensions. This could take a while... Successfully installed websocket-driver-0.7.5 Fetching: actioncable-6.0.3.2.gem (100%) Successfully installed actioncable-6.0.3.2 Fetching: mimemagic-0.3.10.gem (100%) Building native extensions. This could take a while... Successfully installed mimemagic-0.3.10 Fetching: marcel-0.3.3.gem (100%) Successfully installed marcel-0.3.3 Fetching: activestorage-6.0.3.2.gem (100%) Successfully installed activestorage-6.0.3.2 Fetching: actionmailbox-6.0.3.2.gem (100%) Successfully installed actionmailbox-6.0.3.2 Fetching: actiontext-6.0.3.2.gem (100%) Successfully installed actiontext-6.0.3.2 Fetching: thor-1.2.1.gem (100%) Successfully installed thor-1.2.1 Fetching: method_source-1.0.0.gem (100%) Successfully installed method_source-1.0.0 Fetching: railties-6.0.3.2.gem (100%) Successfully installed railties-6.0.3.2 Fetching: sprockets-4.0.2.gem (100%) Successfully installed sprockets-4.0.2 Fetching: sprockets-rails-3.4.2.gem (100%) Successfully installed sprockets-rails-3.4.2 Fetching: rails-6.0.3.2.gem (100%) Successfully installed rails-6.0.3.2 29 gems installed
CloudWatch Rumを試す
今開催されているAWS re:Invent2021 にて、CloudWatchの新機能が発表された模様。
CloudWatch RUM(Real-User monotoring) はWebアプリケーションのログやエラー、アクセスしているユーザーの情報をモニタリングすることができる様子。
ざっくり言えばAWS版Googleアナリティクスって感じですか。
先月までAmplifyアプリケーションからCloudWatchLogsにログを送る方法を四苦八苦していたのですが、この CloudWatch RUMがあればその必要も無さそうな気がしてきた。。
で、簡単に試してみました(手間なので設定の仕方はいちいち書きません。。)
強いて言えば、RUMにデータを送るためのIdentityPoolを作るときに一緒に作成されるIAMロールに対してRUMへイベントを送ることを許可してあげる必要があるくらい。
IdentityPoolに紐付けられているIAMロールに対してrum:PutRumEvents
アクションを許可してやります。
あとは作成された Javascriptスニペットをアプリケーションのindex.html
の header内に貼り付けてデプロイしてやるだけです。
CloudWatch RUMの画面で見れるデータ。だいたいGoogleアナリティクスと似たようなデータが取れている気がする。。?(GAあんまし使ったことないけど)
ところでログが取れるようになってもアプリケーションのコンソールに色々エラーが出るんだけど大丈夫なのかな。
ちなみに↓のアプリケーションに組み込んだのでぜひぜひアクセスしていただいて、ログを収集するのに協力していただければと思います。
webspeechtranslate.yutoogi.com
ところでこのアプリケーションですが、先日開催された JAWS Pankration 2021にて開発について発表したのでした。
AmplifyでデプロイしたアプリケーションからCloudWatchLogsにログを送る方法について話したんですけど冒頭に書いたとおり、CloudWatch RUMがあれば本番稼働しているアプリケーションのログ収集が楽勝でできそうで、この発表で話したようなことを頑張らなくても大丈夫になりそうです。