kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

Rails + Puma環境で起きるクラス変数/クラスインスタンス変数の競合について

これはなに? PumaでRailsをマルチスレッドで運用すると、同一メソッドが同時に実行されたタイミングで、クラス変数/クラスインスタンス変数の値がごっちゃになることがあるよってお話です 前提: Pumaの基本構造 Pumaはマルチプロセス + マルチスレッドのハイ…

MemcachedとRedisのノード障害時の挙動

これはなに? MemcachedとRedisのクラスタ構成ごとのノードが死んだ場合の挙動のメモです Memcached クラスタ 構成 resource "aws_elasticache_cluster" "memcached" { engine = "memcached" num_cache_nodes = 3 } ノード障害時の挙動 操作 挙動 説明 既存デ…

Fastlyでwwwありのドメインへのアクセスをwwwなしに転送する

先にコード sub vcl_recv { #FASTLY recv # www付きドメインはwwwなしにリダイレクト if (req.http.host ~ "^www\.") { error 618 "redirect"; } return (lookup); } sub vcl_error { #FASTLY error # www付きドメインはwwwなしにリダイレクト if (obj.statu…

Capybaraでフルサイズのスクショを取る方法メモ

def take_full_page_screenshot(device, path, host) Capybara.app_host = "https://#{host}" visit path # 一旦windowサイズをリセット window = Capybara.current_session.driver.browser.manage.window window.resize_to(1600, 1080) # その後、縦幅は最…

CloudWatchでのMetrics Insightsクエリと、検索式(Search Expression)の使い分け

Metrics Insightsクエリ SELECT みたいなSQL風の構文で、CloudWatchメトリクスを検索、分析できる機能 主に、分析やCloudWatchAlarmなどの条件式の作成向け 検索式(Search Expression) Search(〜 みたいな独自構文で、CloudWatchメトリクスを検索できる機能 …

非rootユーザで雑にコンテナ内でスクリプトを定期実行する方法

これはなに? Dockerコンテナ内で、メインで動く処理と別に、スクリプトを定期実行したかった。 しかし、非rootユーザでは cron がうまく動かなかった。 苦肉の策でやった方法をメモ Dockerfile (略) # 実行ユーザ変更 USER nginx # 初回実行するスクリプト C…

AWS SSO を利用したDocker Rails環境の認証設定

作業の流れ AWS access portal から、AWS IAM Identity Centerの情報を取得 ローカル環境で AWS IAM Identity Center 認証情報を使い、AWSに接続 direnvで自動認証 ローカル環境で動作確認 dockerでもSSOできるように設定 コンテナ上の rails console で動作…

varnishでキャッシュを保持したまま設定を再読込する方法

先に結論 /etc/init.d/varnish reload reload : キャッシュを維持したまま、設定ファイルを読み直す restart: varnishをstop/startする。起動時に既存の設定ファイルを読み直す。キャッシュはクリアされる reloadの仕組み varnish にはキャッシュを保持した…

SESでデフォルトのMAIL FROMのままでは、SPFとDMARCのドメインアライメントが合わないので警告が出る話

これの続き techblog.lclco.com 書いてあることはほとんどこれと同じ。自分の覚え書き用 dev.classmethod.jp 発生した問題 IDの推奨事項に「MAIL FROMレコードが調整されていません」という警告がでる で、「問題の解決」にはDMARCレコードのセットアップと…

Amazon Auroraのバックアップ関係のおぼえがき

Aurora PostgreSQL前提です 定期バックアップ クラスタボリュームをバックアップウィンドウで指定された時間に定期的にバックアップする バックアップ先はS3。このS3は特殊なやつで、直接アクセスは不可能 バックアップウィンドウのデフォルトは、東京リージ…

Amazon CloudFrontおぼえがき

DDoS対策は? デフォルトでAWS Shieldが入っているので、それで対策される 脆弱性攻撃対策は? WAFを入れれば対策できる Basic認証入れたい CloudFront Functions を使う 特定のPATHの場合リダイレクトしたい CloudFront Functions を使う Lambda@Edgeと、Clou…

Amazon CloudFrontのTTL挙動おぼえがき

TTLの挙動は、これ見るのが一番早い christina04.hatenablog.com Cache-Control ヘッダについては、こちらを参照 techblog.lclco.com なんでこんなにややこしいの オリジン側の Cache-Control を尊重した上で、CDNではどう振る舞うのか? を考慮しているため……

RDS Auroraの自動バックアップ、スナップショットのおぼえがき

自動バックアップとスナップショットの違い スナップショット: フルバックアップ。手動のみ。保存期間無限 自動バックアップ: 差分バックアップ。1日1回自動。保存期間は1〜35日。任意の日時で復元が可能(PITR) どちらもクラスタ単位。復元では新しいクラス…

Terraformでの配列の接続と、文字列の配列の各要素に文字を追加する方法

配列の接続 concat を使う addresses = concat( var.white-list-ip-address, [for ip in local.ips] ) } 文字列の配列の各要素に文字を追加する方法 for を使う * local.ips のそれぞれの末尾に /32 を追加する場合 [for ip in local.ips : "${ip}/32"]

RDS Auroraのreaderからのpg_dumpの途中で接続が切れる場合、max_standby_streaming_delay を上げると良いよ

タイトルで言いたいことだいたい言っちゃったんですが、 readerエンドポイントでpg_dump を実行していたら、大きめのテーブルをdumpしている時に接続がちょこちょこ途切れる現象が発生していました。 それで、DBのログを見てみたら以下のエラーがありました …

Amazon Athenaでアクセスログから、特定PATHの分ごとのアクセス数をカウントする方法

以下は、2023/11/18の15:00〜15:10の間の https://example.com:443/hoge への分単位のアクセス数を取るSQL SELECT minute, COUNT(minute) AS count FROM ( SELECT date_trunc('minute', from_iso8601_timestamp(time)) AS minute FROM "alb_access_logs" WHE…

AUTOVACUUMが動かない時に調べること

AUTOVACUUMの設定 SELECT name, setting FROM pg_settings WHERE name LIKE '%autovacuum%'; autovacuum が on であること 他の数値も異常な値でないこと(どう考えても実行されない閾値とか) AUTOVACUUMの最終実行日時 SELECT relname, last_autovacuum,last…

Railsのdatabase.ymlのpoolの適正数

先に結論 Railsの中でスレッド処理をしていないのであれば Unicornの場合 1 Pumaの場合 スレッドの数 なんで UnicornとPumaで数が違うの? ざっくりいうと、Unicornはマルチプロセスで、Pumaはマルチスレッドだから (厳密には違うけど) それで、コネクション…

AWSコスト最適化ガイドブック 読書メモ

AWSコスト最適化ガイドブック作者:門畑 顕博,仁戸 潤一郎,柳 嘉起,杉 達也,小野 俊樹,藤本 剛志KADOKAWAAmazon 初学者やAWS詳しくない人が、最適な使い方を学ぶのには良い本でした 逆にある程度くわしい人は、知らないところをつまみ食いすればそれで終わる…

メール関係の用語おぼえがき

勉強する必要が出たのでおぼえがき レピュテーション(reputation) 「レピュテーション(reputation)」とは、電子メールの送信元の信頼性や評判を示す指標 スパムメールや悪意のあるメールの送信者と、信頼性のあるメール送信者を区別するために使用される …

RDS の Aurora の昇格についておぼえがき

RDS Auroraでライターインスタンスが死んだ場合、どういうルールで昇格するんだっけ? ライターインスタンスの内「優先度」が最も低い値のインスタンスから選ばれる(0がデフォルト) 同じ「優先度」の場合、同じサブネット、AZのものが優先される Terraformで…

GitHubのRSA SSH ホスト鍵変更に対してクライアント側の修正方法

GitHubのRSA SSH 秘密鍵が漏洩したため、2023/03/24 にGitHubのRSA SSH ホスト鍵が変更されました github.blog RSA SSH 秘密鍵って? RSAは暗号化方式 RSA SSH 秘密鍵は、RSAでSSHするためにGitHubが持っている秘密鍵 今回これが漏洩した RSA SSH ホスト鍵っ…

AWS コスト削減チェックリスト

前提 金銭的なコスト削減のために、運用コストが上昇したら元も子もないので注意!!! 全体 EC2 から、ECS(Fargate)、lambdaへの移行を検討中ならば、Compute Savings Plansを使用する そもそも使っていないインスタンスを停止する EC2 性能が過剰ならば、より…

PostgreSQLでのdump、restore、COPYおぼえがき

データベースの dump pg_dump -d ${dbname} > /var/tmp/dbname.dump 特定のテーブルのみ dump pg_dump -d ${dbname} -t ${tablename} > /var/tmp/dbname.dump 特定のテーブル 以外を dump pg_dump -d ${dbname} -T ${tablename} > /var/tmp/dbname.dump デー…

curlおぼえがき

転送に対応 curl -L 'https://example.com' UserAgentを追加 curl -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1' 'https://example.com' レ…

最近のかせいさんの情報収集方法 2021年版

この記事はLCL Advent Calendar 2021 - 18日目です。 qiita.com こんにちは、 id:kasei_san です。 皆さん、技術情報の情報収集どうしてますか? 昔はLiveDoorReaderとか、はてなブックマークとかで集めれば割と良かったのですが、RSSがオワコンになり、はて…

Access-Control-Allow-Origin の値を動的に設定するときには、Vary 'Origin' も設定する必要があるよって話

これの続き blog.kasei-san.com Access-Control-Allow-Origin の値を動的に設定する必要があるパターン 複数のオリジンからクロスドメインのリクエストを受けるサーバが Access-Control-Allow-Origin を返す場合、オリジンごとに異なる値を動的に返す必要が…

2021/09/30 から、OpenSSL1.0.x でLet'sEncryptの証明書を使っているところと接続できなくなる問題とEC2での対策方法

現象 $ echo|openssl s_client -connect helloworld.letsencrypt.org:443 -servername helloworld.letsencrypt.org Verify return code: 20 (unable to get local issuer certificate) OpenSSLを使っている、curl やRuby なども影響を受ける 原因 Let'sEncry…

今更CentOS6でRubyを検証するDocker環境がほしい時みる記事

どうしても古いままの環境をいじらざるを得ない時ありますよね... Dockerfile FROM centos:6 RUN \ sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo &&\ sed -i…

Rails7のフロントエンドの方向性について理解したことをメモ

ざっくりまとめ Rails7は、StimulusとTurboのHotwireを標準のjsとしているが、jsまわりのトレンドとは方向が異なる Railsでリッチなフロントエンドをバリバリやるのは難しく、そのあたりの不満がフロントエンド側から表出している Railsは(最初から)、小さい…