Railsアプリケーションでアプリケーションの規模を調べる時、rails statsコマンドがよく使われます。 デフォルトのrails statsコマンドだとデフォルトとして設定されているディレクトリのみしかメソッド数やコード数を計算してくれません。 例えば、Rails En…
Elasticsearchを使って日本語の全文検索機能を実装することはよくあるケースですね。 大量のドキュメントをインデックスに登録し運用していると、想定したドキュメントがヒットしない、関連性が低いドキュメントのスコアが高くなっている等、意図していない…
今回はGoogleのCloud Vision APIを使って画像からテキストを検出し、そのテキストとOpenAIのFunction Callingを用いて構造化データを抽出していきたいと思います。 Cloud Vision API Googleが提供している画像を分析し情報を抽出できるサービスです。OCRによ…
1024bytesを超える環境変数は値が切り捨てられる /etc/environmentに環境変数を設定する場合、値に入れる文字数が多いと正しく読み込まれないことがあります。具体的にいうと1024bytesを超える値を設定しようとすると切り捨てられ、ログファイルには以下のよ…
何をしようとしたか Lambda上で動画や画像のメタデータ取得するためにExifToolのRubyラッパーツールを導入しました。 しかし、ExifToolをLambda上で実行するには一筋縄ではいかなかったので、その解決方法をまとめてみます。 環境 AWS Lambda Ruby3.2 server…
何かしらのイベントのデータ分析をする際に、特定イベントのデイリーのユニークユーザー数を出すだけでなく、その日から過去1週間のユニークユーザー数を出したい場合があるかと思います。 例えば、2023-04-16のユニークユーザー数と2023-04-16から過去1週…
背景 Rspecでテストを行う際にテストデータが大量に必要だったので、create_listを使ってデータ作成していましたが、create_listを使うよりbuild_listしたものをbulk_importした方が高速化できると教えてもらいました。 bulk_importはActiverecord-Importと…
前提 Railsでcreated_atを含む文字列をJSONに変換したものを受け取った後、そのJSON文字列からcreated_atを取り出し、DBにデータを取りに行くような実装がされていたとします。 その際、想定通りのデータがDBから取得できずに困ったので、その調査&原因をま…
基本的なElasticsearchのコマンドは、たくさんまとまった記事があると思うので特に困らないと思いますが、プラスαとしてElasticsearchクラスタを運用していく上で知っていると便利かもと感じたコマンドや使い方を備忘録としてまとめてみました。 定期的に追…
create_listは、複数のインスタンスを作成するときに便利なメソッドですが、作成されるインスタンスのテストデータは同じになってしまいます。 create_list(:article, 3, title: 'test', description: 'test') createメソッドで愚直に1つずつインスタンスを…
1つ目 あるテーブルに新しくカラムを追加し、既存のカラムデータを新規カラムにコピーする ModelName.update_all(new_column = old_column) 2つ目 テーブルサイズが大きい場合、レコードを分割して処理を実行することも可能 ModelName.in_batches(of: 10000)…
何が起きたのか PostgreSQLが立ち上がらなくなってしまったので、再度インストールし直した後rails db:prepareを実行したところ、以下のようなエラーが発生した。 rails aborted! LoadError: dlopen(/Users/xxx/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/g…
作ったもの Google CalendarをCLIで扱えるnpmを公開しました。機能はシンプルですが、ターミナル上でGoogle Calendarのイベントを表示、登録、編集、削除することができます。 www.npmjs.com 作成動機 最近Javascriptを勉強していたこともあり、外部APIを使…
どんなエラー? 遭遇したエラーは以下の通り。 タスク定義の検証に失敗したので、CodePipelineのアクションに記述されている"TaskDefinitionTemplateArtifact"のタスク定義を見直してほしいとのこと。 別のデプロイパイプラインも同じ構成となっているのに関…
これは、「フィヨルドブートキャンプ Part 2 Advent Calendar 2021」2日目の記事です。 adventar.org part1もあるので、こちらもどうぞ! adventar.org はじめに 何かしらのプログラミング言語を使ってコマンドを実装する場合、付属するオプションを自前で解…
aws-cliを使ってEC2インスタンスに接続するの面倒くさいので、簡単に接続できるようにMakefileを書きました。 タグで特定のenvironmentの稼働中インスタンスの名前とインスタンスIDをpecoに渡して、選択したインスタンスIDをHOSTに入れてます。 ssm-ec2: ech…
やっとTerraformのアップグレードに手をつけました。 そのときにつまったときのメモを残しておきます。 リソースに存在しない属性がサポートされていない aws_codedeploy_appリソースに存在しない属性がサポートされていないというエラーが0.13にアップグレ…
概要 AWS WAFv2を実際に使って検証したので、その際につまずいたところや考慮したほうがいいところなどまとめます。 今回はレートベースのルールを使ってリクエストの発生元の IP アドレスが同一のものからリクエストが閾値以上になったらブロックする設定に…
こんにちは。 久しぶりにブログ書きます。 aws-vaultコマンド便利ですよね。 色々触っていたらエラー吐くようになったので調査したときのログです。 今回のエラー 雑な意訳:ネストに気をつけてね。$AWS_VAULTを強制的にアンセットして。 なにこれ? aws-vau…
概要 ALBのヘルスチェックにハマったので、そのときに見直すところのメモ。 構成 ALB ECS Nignxコンテナ Railsコンテナ 確認 ヘルスチェックのエンドポイントが間違っていないか ALBのターゲットグループに設定するヘルスチェックのエンドポイントが間違って…
Firelensとは 去年ECSのログ出力先をカスタマイズできる「Firelens」機能がリリースされました。 それまでは、ECSコンテナのログはCloudwatchLogsか自前でFluendコンテナを立ててログ取集する仕組みを作るみたいなやり方だったと思います。 CloudwatchLogsは…
概要 今までECSのコンテナインスタンスの中に入ってDockerコンテナのデバッグするためには、踏み台サーバー経由して対象のインスタンスにsshする必要がありましたが、ECSエージェントのアップデートによりsshなし踏み台なしでコンテナインスタンスの中に入る…
概要 awsのコマンドラインツールはaws-cliがありますが、ecsに特化したecs-cliを使えば、ローカルからクラスタやタスクの作成や簡単なモニタリングをすることが可能です。 そのecs-cliの導入とちょっと使ってみたときのメモです。 導入 macOSの場合 ecs-cli…
AWS勉強ログ。 Route53 ドメイン管理機能 Route53で新規のドメイン取得や更新ができる 権威DNS機能 ドメインとIPアドレスを変換するシステム ドメインを取得するとき 取得したいドメインを入力し、「チェック」する 入力したドメインが使えるかどうか確認で…
AWS勉強ログ。今回は、CloudFrontです。 CloudFrontとは HTMLファイルやCSS、画像や動画などの静的コンテンツをキャッシュして、オリジンサーバーの代わりに配信するCDN(Contents Delivery Network)サービス AWSは世界中にエッジロケーションが120あり、利…
ECSのタスクロールとタスク実行ロールは何が違うのかのメモ タスクロール AWSの開発者ガイドには以下のように書かれている。 Amazon ECS タスク用の IAM ロールを使用すると、タスクのコンテナで使用できる IAM ロールを指定できます。 上記の文言からだと分…
ECSのtask定義のメモリとCPUをチューニングするときのメモ メモリ制限 メモリは「ハード制限」と「ソフト制限」があり、2つの値を設定するとき必ず「ハード制限>ソフト制限」である必要がある。 「ソフト制限」は、コンテナに予約するメモリ量(MiB) 「ハ…
概要 クラメソさんの記事を読んでaws ecr get-loginがv1では非推奨、v2では使えなくなっていることを知ったので、自分の環境どうだったか確認をかねて新しいコマンドecr get-login-passwordを使ってみました。 dev.classmethod.jp 自分の環境 自分のawsコマ…
概要 Ansible-playbookの1つのタスクで複数のユーザーを作成したり、色んなパッケージをインストールしたいときに役立つのがループ処理です。その代表的なパラメータがwith_itemsではありますが、このパラメータもうまく使わないとwith_itemsに羅列するパラ…
概要 デバッグするために、ECRにあげているDokcerイメージをローカルにプルしてビルドするまでのメモ。 環境 mac10.14.6 aws-vaultコマンドをインストールしている 手順 AWS ECRにログインする 下記コマンドを実行するとDokcerにログインするためのアクセス…