/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

aws

ECSローリングアップデートのminimumHealthyPercentとmaximumPercentの挙動を図解

aws

ECSローリングアップデートの minimumHealthyPercent と maximumPercent、「タスク数の上下限でしょ」って思ってたんですけど、実際は旧タスクと新タスクのどっちが先に動くかを決めてるパラメータなんですよね。 この2つの組み合わせを正確に理解しておかな…

AWS CUR のデータ量を Glue 事前集計で削減する方法(Athena スキャン課金対策)

aws

CUR(Cost and Usage Report)を Athena でクエリしていて、スキャン量が思ったより多くてびっくりした。 調べてたら、Glue ETL で事前に集計しておくと劇的にデータ量を削減できるとわかったのでまとめておく。 CUR の生データがどれだけ大きいか CUR を Ho…

ECSネイティブBlue/Greenで同一ListenerRuleにカナリア用TGを同居できない理由と回避策

aws

ECSネイティブBlue/Greenで同一ListenerRuleにカナリア用TGを同居できない理由と回避策 ECSネイティブBlue/Greenデプロイは、advanced_configuration で指定した ListenerRule の forward config を排他的に管理します。同一 ListenerRule 上にカナリア用の3…

CannotPullContainerError: ECRイメージpull失敗はS3へのegress許可が必要

aws

CannotPullContainerError: ECRイメージpull失敗はS3へのegress許可が必要 VPC Endpoint構成(NATなし)かつSGのegressを絞っているECS Fargateで CannotPullContainerError が出たら、SGのegressにS3 prefix listが抜けている可能性があります。 ECRのイメ…

lambrollでコンテナイメージLambdaをデプロイする方法(function.jsonだけでOK)

aws

lambrollで PackageType: Image のLambda関数をデプロイする場合、ディレクトリにはfunction.jsonだけ置けばいい。 コードはECR上のDockerイメージに含まれているので、lambrollはローカルコードをzip化してアップロードする必要がなく、Code.ImageUri でイ…

zip -r で削除したファイルがLambdaに残る原因と対策

aws

zip -r でLambdaのデプロイパッケージを作ると、ソースから削除したファイルがzip内に残り続ける。原因は zip -r が既存アーカイブに対して「追加・上書き」する仕様。 対策は rm -f してから zip -r するか、-FS オプションを使う。 何が起きたか Lambdaの…

Lambda同時実行数が10に制限される原因 — Applied quotaとDefault quotaの違い

aws

Lambda関数にProvisioned Concurrencyを設定しようとしたら UnreservedConcurrentExecution below its minimum value of [10] エラーで弾かれた。調べたところ、自分の環境ではApplied quotaが10になっていた。 新規アカウントではreduced quotaが適用される…

AWS Landing Zone Accelerator 初回デプロイの所要時間と注意点 — Control Tower含めて6時間の内訳

aws

AWSのマルチアカウント環境を一発で構築できるLanding Zone Accelerator(LZA)。35以上のAWSサービスを横断管理する強力なソリューションですが、初回デプロイは「多種多様なエラーと戦い約6時間」という報告があります。 公式目安は最小構成で80〜110分程…

Lambda Provisioned Concurrency: ゼロダウンタイムデプロイの正しい手順

aws

Lambda Provisioned Concurrency(PC)付きのデプロイで、エイリアス切替をPC設定より先にやると、PCなし状態でトラフィックが流れる窓が開きます。 正しい順序は「publish → PC設定 → PC READY待ち → エイリアス切替」です。順序を1つ入れ替えるだけで、PC…

CrowdStrike Falcon の Fargate 対応 — タスク定義パッチの仕組みと監視の落とし穴

ECS Fargate に CrowdStrike Falcon を入れるとき、「サイドカー方式で対応」と説明されることが多い。でもこの「サイドカー」という言葉が結構誤解を生む。実態を掘り下げてみたら、サイドカーとして動いているわけではなかった。 タスク定義パッチとは何を…

S3のアカウントリージョナル名前空間、結局何が嬉しいのか?既存の回避策との違いを考える

aws

2026年3月12日、AWSから「Amazon S3 アカウントリージョナル名前空間」がGAになったという発表がありました。 aws.amazon.com S3バケット名の「グローバルで一意でなければならない」制約を回避できる新しい名前空間モデル、とのこと。 はてぶもそれなりにつ…

ECRのイメージタグをpull/push不要で付け替える方法(マニフェスト経由のリタグ)

aws

ECRに入っているイメージのタグを付け替えるとき、docker pull → docker tag → docker push とやらなくても、マニフェストを取得して新タグで再登録するだけでリタグできます。 イメージ本体のダウンロード/アップロードが不要で、数秒で完了します。 何を調…

TerraformでS3+CloudFront+OACを構築する手順(新規ならOAIは不要)

Redditを見ていたら、以下のような記事が目に留まりました。 https://www.reddit.com/r/aws/comments/1rlrlwi/psa_the_modern_way_to_host_sites_in_s3/ 内容的にはチュートリアル通りだとパブリックBucketを構成している人多いけど、今だとCloudfront + OAC…

lambrollでTerraformのstateファイルを参照してLambdaデプロイする手順

lambrollの {{ tfstate }} テンプレートを使うと、TerraformのstateファイルからIAMロールARNやSSMの値をデプロイ時に自動展開できます。 Terraformで管理している値をlambrollのfunction.jsonに持ってこれるので、function.jsonに機密情報を書かずに管理す…

ecspressoとlambrollのdiffコマンドでデプロイ前の設定差分を確認する

aws

ecspressoとlambrollには diff というサブコマンドがあって、ローカルの定義ファイルとAWS上の現行設定の差分を出してくれる。 Terraformでいう plan と同じ感覚で使える。デプロイ前に「何が変わるか」を確認できるので、事故防止にかなり効く。 ecspresso…

aws-vault exec + Makefile内のAWS_PROFILEで「context deadline exceeded」になる原因と対処法

aws

aws-vault exec 経由でMakefileのコマンドを実行したら context deadline exceeded で失敗した。 原因はMakefile内の export AWS_PROFILE(プロファイルに role_arn が設定されていた)が、aws-vaultが注入した一時クレデンシャルと衝突して二重AssumeRoleが…

Terraform data "aws_ami" の most_recent=true でEC2が意図せず再作成される原因と対策

data "aws_ami" で most_recent = true を使っていると、AWSが新しいAMIを公開したタイミングで terraform apply がEC2インスタンスをdestroy → createします。 原因はAMI IDの変更がForceNew属性であること。本番ではAMI IDを固定値で管理するのが対策です…

AWS Lambda Durable Functions vs Step Functions — どちらを選ぶべきか実際に動かして比較した

aws

AWS Lambda Durable Functionsが2025年末にプレビューで登場してから、「Step Functionsはもう要らないのか?」という話が出ています。実際にOhioリージョンで動作確認したうえで、どちらを選ぶべきかを整理してみます。 何が変わったのか これまでLambdaで…

AWS RI vs Savings Plans: 結局どっちを買えばいいのか — 3問で決まる判断フロー

aws

AWSのコスト最適化でRI(Reserved Instances)とSavings Plans(SP)のどっちを買うか。 EC2コンピュートに限れば、ほとんどの場合はCompute Savings Plansをベースにするのが2026年時点の定石です。 データ層にはDatabase Savings PlansかRIを使い分ける。 …

EC2の定期停止/起動をLambdaなしで実現する方法 — EventBridge Scheduler Universal Target

aws

EC2の定期停止/起動は、EventBridge SchedulerのUniversal Targetを使えばLambda関数なしで実現できます。 IAMロール1つとスケジュール2つだけ。Terraformで完結します。 何を調べたか なんやかんやでいまだに使うEC2。Bastionホストを夜間・休日に止めてコ…

ECS Fargateのログ設計 — Falconセンサー環境ではファイルログよりstdout+FireLensが有利な理由

aws

CrowdStrike Falconが入ったECS Fargate環境では、ファイルにログを吐いてtailで転送する構成だと、1行のログに対してファイルI/O起因のカーネルフックが2回走る。stdout + FireLensにするとファイルI/Oを経由しないので、この分のフックがなくなる。ログ量…

ECS FargateにCrowdStrike Falconを導入する2つの方法(falconutil vs タスク定義パッチ)

ECS FargateにCrowdStrike Falconのコンテナセンサーを入れる方法は2つあります。 イメージパッチ(falconutil)とタスク定義パッチ。結論から言うと、ほとんどのケースでイメージパッチが正解っぽいです。 何を比較したか ECS FargateにはホストOSがないの…

AWS Cost Categoriesの按分(Split Charge)で使用量ベースの配分ができない時の対処法

AWS

AWS Cost CategoriesのSplit Charge Rulesとは マルチプロダクトやマルチチームで共有しているAWSリソース(RDS、NAT Gateway、サポートプランなど)のコストを、各プロダクトやチームに按分したいというのはよくある話だと思います。 AWS Cost Categoriesに…

lambrollでLambdaの環境変数にSSMパラメータを渡す方法|Terraform State経由のハンズオン

lambrollでLambdaをデプロイするとき、環境変数にデータベースのパスワードやAPIキーを渡したい場面があります。 function.json に直書きするわけにはいかないし、かといってデプロイのたびに手作業で設定するのも避けたいところです。 この記事では、SSM Pa…

lambrollデプロイ後のバージョン番号を取得する2つの方法(get-alias vs log-format json)

aws

lambroll deploy --publish でデプロイしたバージョン番号をCIパイプラインで使いたい場面はよくある。 取得する方法は2つ: AWS CLIの get-alias でエイリアスから取得する方式と、lambrollの --log-format json で構造化ログをパースする方式。CI/CDで使う…

CrowdStrike Falcon導入時に利用者として確認すべき12のカテゴリ(ECS Fargate環境)

CrowdStrike FalconをECS Fargate環境に導入するとき、利用者側から提供元に確認しておくべきことも結構あるんですよね。 導入後に「聞いてなかった」で問題が起きるのを防ぐために、利用者側の視点で確認事項を整理しました。 この記事の前提 対象環境: ECS…

Connect timeout on endpoint URL: https://sts.ap-northeast-1.amazonaws.com の原因と対処法(EC2 Proxy環境)

aws

EC2のProxy環境で aws ecr get-login-password や aws sts get-caller-identity がタイムアウトする場合、まず NO_PROXY に 169.254.169.254 が入っているか確認するとほぼ解決します。 見えているエラーはSTSですが、実際に詰まっているのはその手前のIMDS…

Terraform EC2: ignore_changes した user_data を安全に適用する方法まとめ

この記事は EC2 user_data シリーズ(全3回) の3本目です。 aws_instance の user_data に lifecycle { ignore_changes } を入れると意図しない stop/start は止まります。でも「いざ新しい user_data を適用したくなったらどうするのか」が次の問題になる…

Terraform user_data_replace_on_change とは — Provider v4で変わったEC2の挙動と使い分け

この記事は EC2 user_data シリーズ(全3回) の2本目です。 Terraform の aws_instance に user_data_replace_on_change という属性があります。これは Provider v4 のメジャーアップデートで user_data 変更時の挙動が変わり、困ったユーザーのために後か…

Terraform aws_instance の user_data 変更で意図しない stop/start が発生する原因と対策

この記事は EC2 user_data シリーズ(全3回) の1本目です。 Terraform で aws_instance の user_data を変更して terraform apply したら、インスタンスが stop/start してしまうので、サービス断発生してしまいます。 しかも新しい user_data のスクリプト…