AR ホームベーカリー

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

AWS

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

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

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

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

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

AWS

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

Terraform の backend を S3 にする

ロケ地 Terraform 1.3.6 hashicorp/aws 4.45.0 Error loading state state がローカルやんけ! と気づいて、 backend "s3" を書いて、リモートに手動でバケットを作成 (設定は名前以外、全部変更なしのアクセスきつきつでオッケー)。 後に terraform init -m…

Terraform リソース作成時にデフォルトで付与するタグを管理する

作成したリソースが Terraform 由来であること 複数の企業が単一アカウント ID に AdministratorAccess 持っている という状態のインフラを管理しているので、それぞれ AWS のリソース作成時のタグに Build: Terrafrom Company: 会社名 を付与する運用にして…

assets が見えないのは net::ERR_HTTP2_PROTOCOL_ERROR かと思っていた

アカウント ID が異なる環境で、動いているアプリケーションを環境ごとクローンする、というタスクがあって、規模的に手動で作業しなおしても大丈夫だなと思って着手したらひどい目にあった、という話。 ページデザインが崩れる デプロイして動作確認を行っ…

RDS で LOAD DATA LOCAL INFILE を実行する

いつも忘れて調べるんだけど、正解がシュッと出てこないのでインターネットの敗北。 我の勝利〜。 --local-infile=1 を利用する デフォルトで用意されるパラメータグループか、それに準拠するパラメータを利用していれば、 --local-infile=1 を付けて mysql コ…

おじいさんに選ばれたのは大きなトランザクションでした

RDS で LOAD DATA LOCAL INFILE って素直に使えるんだっけ? と思って調べていたら以下のような記述を見つけてしまった。 バイナリログ作成を有効にすると、トランザクションが大きい場合、IOPS とディスク消費量が 3 倍になります。これは、ディスクに書き…

CloudFront のオリジン (S3) に加えた変更をすぐに反映する

キャッシュ無効化、という手法があります。 soypocket.com ただこれ運用戦略的に正しいのか? みたいな疑問符はあるんで、今回は「開発中だったり本番向け環境じゃない」という前提のもと、キャッシュの時間を調整します。 キャッシュポリシー 前回の記事で…

フロントエンドを CloudFront (S3) で配信する

React とか Vue あたりで作って、 npm run build で出力したやつをフロントエンドと呼んでいます、雑ゥ! とにかくこれを S3 にぶっこみつつ、CloudFront で配信します。 最近のウェブ系はだいたいこんな感じですよねというヤツのふりかえり。

530 Must issue a STARTTLS command first (Net::SMTPAuthenticationError)

自前運用の SMTP サーバから AWS SES に切り替える作業があったんだけど、表題のエラーが出て「!?」となっていた。 Must issue a STARTTLS command first 答えは全部ここに書いてあるんですが、ちゃんと暗号化して送信しろ、という話です。 エラー時の該当…

CloudFront にとりあえずの Basic 認証

dev.classmethod.jp Lambda@Edge に function 配置してたおじさんだった (node v6 とか v8 の時代マン) ので、えらいお手軽に出来るようになったなー、という感じだった。 いやまあ Basic 認証くらい CloudFront 標準機能で用意しとけよ、という感じはある。

Route53 の A レコードは A レコードだけど A レコードじゃない (ので CNAMEAlreadyExists したら使え) という話

AWS

普通「A レコード!」っていうと、 IP アドレスと関連付くアレを想像する。 ただ AWS だと A は A でも A(LIAS) ということらしい。 よくよく Route53 で A レコード選択時の項目を見ると、 IPv4 アドレスと一部の AWS リソースにトラフィックをルーティング…

同一の IMAGE ID を持つ docker イメージの削除 (タグを消す)

以下の状態でローカルに存在する IMAGE ID 000000000000 を、 REPOSITORY TAG IMAGE ID CREATED SIZE example1 0.0.1 000000000000 1weeks ago 100MB ECR (例として example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration) へタグ latest を付与して p…

BucketNotEmpty: The bucket you tried to delete is not empty. You must delete all versions in the bucket.

AWS

Terraform や CloudFormation で Destroy などで一括リソース破棄を行う場合、BucketNotEmpty: The bucket you tried to delete is not empty. You must delete all versions in the bucket. と言われてエラーで処理が中断される場合がある。 これ、ずっと S…

AmazonLinux2 で httpd + PHP が動かない時

見たら php-fpm が標準で有効になっとっる、これかあという感じだった。 とりあえず動かしたいので、以下のようにする。 [ec2-user@localhost ~]$ sudo vi /etc/httpd/conf.modules.d/00-mpm.conf [ec2-user@localhost ~]$ sudo systemctl restart httpd /et…

AWS ElastiCache(Redis) で認証を入れる際の罠

自前で用意する Redis redis.conf へ以下のように requirepass を設定します。 この場合は、 foobared というパスワードが設定されており、TLS などの暗号化通信は必要ない状態です。 # snip # requirepass foobared # snip # blog.shimar.me ちなみに、公式…

Aamzonlinux2 に Redis-cli を入れる

作成した ElastiCache クラスターのエンドポイントと接続確認をしたい。 epel とか remi 使えって書いてあって「いや嘘だろ」って顔になった。 20211221 追記 AWS 公式のヘルプに、 redis-cli だけコンパイルする手順の記載が存在した。 当時は急いでいて見…

AmazonLinux2 に snapd を入れて certbot による証明書自動更新生活を満喫する

前回 CentOS に snap を入れたら、謎のタイムアウトエラーで勝手にデーモンが死ぬ現象に遭遇。あまりに腹が立つので、別の環境で再試行してみることにしたらまた大変だったお話。 ざっと調べてみたら、メタ情報を編集させて認識させる? など一年程度以上前…

bucket-antivirus-function のバケットポリシー

AWS

オリジナルが一年ほど更新されてないしワイも fork して自分用の作っちゃうかなあ、という気持ちになりつつある。

CarrierWave の保存先をローカル指定にする

だいたい以下の記事通り、 config.storage :file とすれば (書き換えれば) 良い。 qiita.com あとは気をつけるとしたら、 config.fog_ などで宣言している箇所を一通りコメントアウトなりしておくと安心だろうか。 もちろん AWS_ 系の環境変数も設定されない…

EBS 拡張で growpart がコケてヒヤヒヤした

古いインスタンス (M3.medium) の EBS を拡張する作業があったのですが、 growpart がエラーを返してきて焦ったので。 LANG が悪い echo $LANG などして、 LANG=ja_JP.UTF-8 つまりシェルが日本語環境だとエラーが帰ってくるようです。 こんなん。 [root@ebs…

EBS の終了時に削除を無効化する

AWS

インスタンスのスケールアップしようとして、 終了時に削除 って Teminate と Stop のどっちだ……? ってご不安になったので、起動中のインスタンスにアタッチされている EBS の設定を変更します。 とりあえず false にしておけば問題あんめえ、というお気持…

マイナーバージョン自動アップグレードの「設定変更」

全環境の RDS インスタンスで運用している MySQL に マイナーバージョン自動アップグレード を入れていた気がして、確認した記録です。 (ちなみにこれを書いている現在、発熱で38度を超えており、本番が突如落ちる謎の悪夢を見て起きたゆえです……ううっ) R…

AWS で解除しておいたほうが困らない制限たち

AWS

AWS は便利なのですが、リソースを増やしていくとすーぐ制限にぶちあたります。 急ぎだったりすると声にならない叫びであじゃぱぱぱぱ、となるので、アカウント開設直後に root アカウントのまま、サポートから以下の制限緩和を投げてしまいましょう。 Elast…

CloudFront + S3 で Basic 認証をする

ウェブ上で掲載されているように、 Lambda で Basic 認証だけ担当してあげる必要がある。 難しいねぇ。

RDS の必要最低限なパラメータグループ ( MySQL 8 世代 ) 設定

MySQL 5.6/5.7 世代で絵文字とかハハパパあたりに苦しめられた人多い問題。 UTF8MB4 を利用する innodb_file_format innodb_large_prefix は ON Barracuda が取り込まれたので、項目が存在しなくなった フレームワークなどからのアクセスで時刻補正されると…

RDS の必要最低限なパラメータグループ ( MySQL 5.6/5.7 世代 ) 設定

いーっつも忘れて過去の手順書を確認するので、ここに記載する! 新しいパラメータグループ作った後に最低限設定するのは以下。 UTF8MB4 を利用する InnoDB のカラム幅を 3072 だか 3074 いっぱいまで拡張する フレームワークなどからのアクセスで時刻補正さ…

T3.micro と M5.large のファイル作成速度差

だいたい二倍位差があるんすかね? はえーすっごい……。 本番と検証の環境作ってる最中に気付いたので。 利用しているのはいずれも EBS の SSD(gp2) だったはずです。 以下コマンド ( /swap に割り当てるファイル作成してる ) を実行した結果です。 dd if=/de…

whenever で cron を設定すると bundle: command not found

産業で whenever 実行するユーザの 環境変数 PATH に /usr/local/bin を追加しろ 2020/01/10 追記 以下のように whenever の設定ファイルに PATH を設定すると PATH を設定できる。 ログ出力と合わせて記述すると確認しやすくて良い、こっちのほうが楽ちんで…