AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Rails の delivery_method で AWS SES を指定してメール送信する

だいぶ悩んでしまったのと、ググると出てくる例が delivery_method をオーバーライドしてるものが多いのでという気持ち。 ロケ地 Ruby 3.1.0 Rails 6.1.6 aws-sdk-rails 3.7 aws-sdk-ses は v1 系利用 TLDR aws-sdk-rails gem を追加して、 config.action_ma…

Rails console から Sidekiq のキューを調査する

以前 console から接続できない場合に、という感じで以下記事を書いた。 donbulinux.hatenablog.jp とはいえハングアップするのは、よっぽどギリギリのリソースで動かしているとかじゃなければ頻発しないはずなので、通常時どうするのか、というお話。 キュ…

Terraform で AWS SES する

AWS

以下を参考にしながら Terraform 公式のリソース解説と反復横跳びして確認した。 cha-shu00.hatenablog.com 以下、作業していてつまづいた、注意しておくところ。 SPF 周り mail_from_domain は必ずサブドメイン指定が必要 (以下 domain に指定しているのは…

ECS exec が動くかチェックする

RDS をメンテしようと思い立つも、 ECS exec でポートフォワードできない。 ❯ aws ssm start-session \ --target ecs:stg-tf-example-ecs-cluster_00001111222233334444555566667777_00001111222233334444555566667777-99998888 \ --document-name AWS-Start…

RDS で mysqldump すると FLUSH TABLES WITH READ LOCK

単体で動作させている RDS だと、以前書いたような以下のようなお作法で一貫性のある SQL ダンプが取得できる。 donbulinux.hatenablog.jp これをこのままマルチ AZ な RDS 環境で実行すると以下のエラーになる。 mysqldump: Couldn't execute 'FLUSH TABLES…

ClientException: Too many concurrent attempts to create a new revision of the specified family. が出たら、再実行すればいい

タイトルがすべてシリーズ rails db:create を実行するためだけに null_resource (aws_ecs_task_definition.initialize_db という target) を採用しているんだけど、偶然こんなエラーに遭遇した。 ╷ │ Error: failed creating ECS Task Definition (example-…

M1 で kSar

M1 MBP に変更してから kSar 使ってなかったので、必要になったこのタイミングでインストール……と思ったらまず Java がなかった。 brew 経由で openjdk をインストールする。

ruby 公式の Docker イメージで jemalloc

パフォーマンスチューニングの値があと一歩伸び悩んでいるので、ふと思い立って jemalloc を導入してみた。 # runtime stage: LD_PRELOAD で jemalloc を指定 FROM ruby:3.1.0-slim-bullseye as app ENV APP=/app \ LANG=C.UTF-8 \ RUNTIME_PACKAGES="tzdata…

M1 mac で rbenv install 3.1.2 が失敗して ld: library not found for -lcapstone

主に 3.1.0, 3.1.1, 3.1.2 あたりだけども。 ※追記:記事の最後に capstone がどこからきたのか、を追記しました。 結論からいうと環境によっては Ruby 3.1.2 など capstone で問題が起きるバージョンは諦めてコンテナとかで動かしましょう。

ECS exec 実行時のタイムアウトを防ぎたい

aws ssm start-session ... --document-name AWS-StartPortForwardingSessionToRemoteHost ... などして、 ECS exec 経由で fargate コンテナを踏み台に RDS 接続などしていると、作業によってはタイムアウトによって中断されることがままある。 めっちゃ辛…

AWS Transfer for SFTP で S3 バケットに SFTP する

AWS

大正義クラスメソッドくんの記事通りにやればとりあえず作れる。 dev.classmethod.jp んだけど、 IAM まわりがどうしてもうまくいかなく、ログイン後にディレクトリ一覧などが取れず「ンガガガ」となっていた。 List を許可したのにダメなんか? と思ってい…

managed_policy_arns と aws_iam_role_policy_attachment を利用すると apply 毎にアタッチとデタッチを繰り返す

タイトルがすべてシリーズ。 とりあえず 僕の用途では、aws_iam_role_policy_attachment に全部そろえよう、となった。

Fargate の料金を計算する

AWS

いつもざっくり AWS で計算していたのだけど、 vCPU 8, 16 が選択できず 「まあ Linux だけサポートしてるし、ざっくりの範疇を超えてるかー。 手動で計算すっか」 と思っていたら、公式のコストシミュレータがちゃんと使えるものになっていた。 とはいえ相…

AWS でホストしている Web アプリケーションに脆弱性診断をする時の事前申請

AWS

なんか申請しないといけない、という記憶だったんだけど、だいぶ昔にほぼ申請不要になっていた。 aws.amazon.com 気をつけないといけないのはフラッディングくらいですかね、負荷テストすると意図せず引き起こされそうな可能性ある。 基本的にテストする業者…

ECS (fargate) からパブリック IP を剥奪したら SSM とか ECR に接続できずに起動しなくなった

タイトルがすべてシリーズ。 Terraform で管理している ECS (fargate) の 1.4.0 で特定の RAILS_ENV だけ問題が起きる、という現象の調査をしていて、それはほぼ解決したんだけど、なぜか ECS Cluster をデプロイしなおしたら以下のエラーが出るようになった…

Error: adding LB Listener Certificate: UnsupportedCertificate

Terraform を複数環境に対応させる作業をしていたタイミングで、apply 時に「ALB に証明書を追加する動作」が失敗するようになった。 エラーは以下。 Error: adding LB Listener Certificate: UnsupportedCertificate: The certificate 'arn:aws:acm:ap-nort…

2013 to 2023

scrapbox.io 呼んでて「はえー」ってなるやつと「あったあった」というのが入り混じって、なんだかんだワイもエンジニアやれてるんだなと思ったり。 async/await は一気に普及した感じあるし、NoSQL や RDBMS の特性が SSD の登場 (ハードウェア性能の向上) …

errors inspecting instance

fargate の起動イメージにしているコンテナの確認したくて、 docker (lima) を立ち上げようとしたらエラーに。 ❯ limactl start docker_x86_64 INFO[0000] Using the existing instance "docker_x86_64" FATA[0000] errors inspecting instance: [failed to …

rbenv で ld: symbol(s) not found for architecture arm64

以前、古いバージョンの Ruby がインストールできない、という記事を書いたが、また遭遇してしまった。 Ruby 2.6.5 である。 donbulinux.hatenablog.jp 今回はプロダクトオーナーでもコーダーでもないので、ガッとパッと環境を更新することができない。 とい…

nginx:latest の config 中身が知りたかった

fargate 用に雑に書いたコンフィグを /etc/nginx/conf.d/ 以下に放り込んでいたんだけど、「これデフォルトのファイルどうなってんだ?」 という疑問がシュッと出てきたので確認してみた (DockerHub のリポジトリページ見てたけど、それっぽい記述が見当たら…

Terraform で import した resource を tfstate から削除する

terraform state rm ${リソース名} で消せる。

terraform import 実行時に変数読み込みファイル (var-file) を指定する

追記: これルートドメインを管理しようとしているけど、ルートドメインのホストゾーンは Terraform で管理しないほうが良いらしい (結果として管理やめたので救われた感 -var-file を指定してから terraform の各種第 2 引数にあたるコマンドを書くのだと思…

MacriumReflect

システムドライブ用の SSD を PCIe4 に変更しよう、と思って以前購入していた覆面 SSD に入れ替えた。 内容はクローンすればいいかあー、と思っていたんだけど、今どきはみんなフリー配布やめたんすねえという感じであった。 EaseUS Todo Backup Free 使おう…

MySQL にタイムゾーンを追加する

ロケ地 MySQL 8.0.31 macOS Ventura 先日の Unbale ... の記事でも書いた通り、インストール直後の MySQL は Asia/Tokyo をタイムゾーンに指定するとエラーを返します。 ゆるせねえよ……、わからせてやる! しかしこの手の話題、 OS とか物理筐体移行する際に…

ERROR! The server quit without updating PID file

macOS が一番お目にかかるんじゃないすかねー、 brew でインストールしていざ起動したらこれ。 よく言われている pid ファイルの不在と MySQL の data-dir 権限を対応しても動かない時は。 一度 mysql 系のプロセスを全部消すか、OS ごと再起動する mysql --…

Slack にロードアベレージの高まりを通知する簡単なスクリプト

メトリクス監視や APM を入れる (ほどでもない|環境整備する時間がない) みたいな状態のときあると思います。 とりあえず Slack に投げて監視体制はごまかそう、という趣旨。 こんな感じで通知される 実行例 実環境でテストしていたのでちょいちょいモザイク…

M1 MacbookPro で Ruby 2.5 とか古い環境を用意する

追記 こちらで書いたけど、 RUBY_CFLAGS="-w" を付与して rbenv install を叩くのが一番ラク、という結論にたどり着いた。 donbulinux.hatenablog.jp 以前の本文 rbenv install で古いバージョンを入れようとするとこうなる (僕の環境の出力)。 ロケ地 MacBo…

OAC を利用して CloudFront からプライベート設定の S3 をオリジン参照するバケットポリシー

AWS

マネジメントコンソールで OAC を選択するとヘッダに「バケットポリシー変更しろよ!」ってお知らせ出してくれるし、そのまま使えるバケットポリシーをコピペさせてくれるんだけど、 「オリジンになる S3 を、複数の異なるドメイン付与したディストリビュー…

Terraform を書く時に気をつけること

忘れがちなので、気付いたタイミングで書いておく。 backend に変数 (Variables) は利用できない こんな感じで怒られる。 起動時に引数に渡すか、backend 用に別ファイルを作れとのこと。 │ Error: Variables not allowed │ │ on main.tf line 11, in terraf…

MySQL の予約語

groups というテーブルがあるんだけど、SELECT を投げようとして syntax error になった。 mysql> SELECT * FROM groups; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for …