AR ホームベーカリー

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

AWS

AmazonLinux2023 が生まれていた

docs.aws.amazon.com AmazonLinux2 もちゃんとメンテされてたし、という感じなのでこれも AWS にお金をぶっこむ限りメンテされていくでしょう! AmazonLinux2 と AmazonLinux2023 の比較は以下。 docs.aws.amazon.com 「Fedrora から fork したけど独自実装…

S3 静的ウェブホスティングをやるときに 403 出しがちで気をつけること

AWS

バケットポリシーを書かないといけない、以上! dev.classmethod.jp いつもバケットポリシー書き忘れて「オアッ AccessDenied!」となってしまっている。

サブドメインごとにホストゾーンを分割すると、分割先のネイキッドドメインで CNAME できない

AWS

RFC というか CNAME の仕様を言われると「それはそう!」となるやつ。 ホストゾーンをサブドメインで分割する サブドメインをたくさん運用する環境があって、ネイキッドドメイン example.com のホストゾーンに全部いれちゃうと見通しが悪い! という事で、サ…

CloudFront encountered an internal error. Please try again.

CloudFront + S3 でフロントエンドをやってるんだけど、毎回デプロイ毎にキャッシュ削除で /* 対象にして投げていたら、今回始めて遭遇した。 詳細は出力されないし Try again で later じゃないらしいので何度か挑戦するもだめ。 なので、一度キャッシュ削…

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…

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…

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 をデプロイしなおしたら以下のエラーが出るようになった…

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 だけコンパイルする手順の記載が存在した。 当時は急いでいて見…