aws
ECSローリングアップデートの minimumHealthyPercent と maximumPercent、「タスク数の上下限でしょ」って思ってたんですけど、実際は旧タスクと新タスクのどっちが先に動くかを決めてるパラメータなんですよね。 この2つの組み合わせを正確に理解しておかな…
CUR(Cost and Usage Report)を Athena でクエリしていて、スキャン量が思ったより多くてびっくりした。 調べてたら、Glue ETL で事前に集計しておくと劇的にデータ量を削減できるとわかったのでまとめておく。 CUR の生データがどれだけ大きいか CUR を Ho…
ECSネイティブBlue/Greenで同一ListenerRuleにカナリア用TGを同居できない理由と回避策 ECSネイティブBlue/Greenデプロイは、advanced_configuration で指定した ListenerRule の forward config を排他的に管理します。同一 ListenerRule 上にカナリア用の3…
CannotPullContainerError: ECRイメージpull失敗はS3へのegress許可が必要 VPC Endpoint構成(NATなし)かつSGのegressを絞っているECS Fargateで CannotPullContainerError が出たら、SGのegressにS3 prefix listが抜けている可能性があります。 ECRのイメ…
lambrollで PackageType: Image のLambda関数をデプロイする場合、ディレクトリにはfunction.jsonだけ置けばいい。 コードはECR上のDockerイメージに含まれているので、lambrollはローカルコードをzip化してアップロードする必要がなく、Code.ImageUri でイ…
zip -r でLambdaのデプロイパッケージを作ると、ソースから削除したファイルがzip内に残り続ける。原因は zip -r が既存アーカイブに対して「追加・上書き」する仕様。 対策は rm -f してから zip -r するか、-FS オプションを使う。 何が起きたか Lambdaの…
Lambda関数にProvisioned Concurrencyを設定しようとしたら UnreservedConcurrentExecution below its minimum value of [10] エラーで弾かれた。調べたところ、自分の環境ではApplied quotaが10になっていた。 新規アカウントではreduced quotaが適用される…
AWSのマルチアカウント環境を一発で構築できるLanding Zone Accelerator(LZA)。35以上のAWSサービスを横断管理する強力なソリューションですが、初回デプロイは「多種多様なエラーと戦い約6時間」という報告があります。 公式目安は最小構成で80〜110分程…
Lambda Provisioned Concurrency(PC)付きのデプロイで、エイリアス切替をPC設定より先にやると、PCなし状態でトラフィックが流れる窓が開きます。 正しい順序は「publish → PC設定 → PC READY待ち → エイリアス切替」です。順序を1つ入れ替えるだけで、PC…
ECS Fargate に CrowdStrike Falcon を入れるとき、「サイドカー方式で対応」と説明されることが多い。でもこの「サイドカー」という言葉が結構誤解を生む。実態を掘り下げてみたら、サイドカーとして動いているわけではなかった。 タスク定義パッチとは何を…
2026年3月12日、AWSから「Amazon S3 アカウントリージョナル名前空間」がGAになったという発表がありました。 aws.amazon.com S3バケット名の「グローバルで一意でなければならない」制約を回避できる新しい名前空間モデル、とのこと。 はてぶもそれなりにつ…
ECRに入っているイメージのタグを付け替えるとき、docker pull → docker tag → docker push とやらなくても、マニフェストを取得して新タグで再登録するだけでリタグできます。 イメージ本体のダウンロード/アップロードが不要で、数秒で完了します。 何を調…
Redditを見ていたら、以下のような記事が目に留まりました。 https://www.reddit.com/r/aws/comments/1rlrlwi/psa_the_modern_way_to_host_sites_in_s3/ 内容的にはチュートリアル通りだとパブリックBucketを構成している人多いけど、今だとCloudfront + OAC…
lambrollの {{ tfstate }} テンプレートを使うと、TerraformのstateファイルからIAMロールARNやSSMの値をデプロイ時に自動展開できます。 Terraformで管理している値をlambrollのfunction.jsonに持ってこれるので、function.jsonに機密情報を書かずに管理す…
ecspressoとlambrollには diff というサブコマンドがあって、ローカルの定義ファイルとAWS上の現行設定の差分を出してくれる。 Terraformでいう plan と同じ感覚で使える。デプロイ前に「何が変わるか」を確認できるので、事故防止にかなり効く。 ecspresso…
aws-vault exec 経由でMakefileのコマンドを実行したら context deadline exceeded で失敗した。 原因はMakefile内の export AWS_PROFILE(プロファイルに role_arn が設定されていた)が、aws-vaultが注入した一時クレデンシャルと衝突して二重AssumeRoleが…
data "aws_ami" で most_recent = true を使っていると、AWSが新しいAMIを公開したタイミングで terraform apply がEC2インスタンスをdestroy → createします。 原因はAMI IDの変更がForceNew属性であること。本番ではAMI IDを固定値で管理するのが対策です…
AWS Lambda Durable Functionsが2025年末にプレビューで登場してから、「Step Functionsはもう要らないのか?」という話が出ています。実際にOhioリージョンで動作確認したうえで、どちらを選ぶべきかを整理してみます。 何が変わったのか これまでLambdaで…
AWSのコスト最適化でRI(Reserved Instances)とSavings Plans(SP)のどっちを買うか。 EC2コンピュートに限れば、ほとんどの場合はCompute Savings Plansをベースにするのが2026年時点の定石です。 データ層にはDatabase Savings PlansかRIを使い分ける。 …
EC2の定期停止/起動は、EventBridge SchedulerのUniversal Targetを使えばLambda関数なしで実現できます。 IAMロール1つとスケジュール2つだけ。Terraformで完結します。 何を調べたか なんやかんやでいまだに使うEC2。Bastionホストを夜間・休日に止めてコ…
CrowdStrike Falconが入ったECS Fargate環境では、ファイルにログを吐いてtailで転送する構成だと、1行のログに対してファイルI/O起因のカーネルフックが2回走る。stdout + FireLensにするとファイルI/Oを経由しないので、この分のフックがなくなる。ログ量…
ECS FargateにCrowdStrike Falconのコンテナセンサーを入れる方法は2つあります。 イメージパッチ(falconutil)とタスク定義パッチ。結論から言うと、ほとんどのケースでイメージパッチが正解っぽいです。 何を比較したか ECS FargateにはホストOSがないの…
AWS Cost CategoriesのSplit Charge Rulesとは マルチプロダクトやマルチチームで共有しているAWSリソース(RDS、NAT Gateway、サポートプランなど)のコストを、各プロダクトやチームに按分したいというのはよくある話だと思います。 AWS Cost Categoriesに…
lambrollでLambdaをデプロイするとき、環境変数にデータベースのパスワードやAPIキーを渡したい場面があります。 function.json に直書きするわけにはいかないし、かといってデプロイのたびに手作業で設定するのも避けたいところです。 この記事では、SSM Pa…
lambroll deploy --publish でデプロイしたバージョン番号をCIパイプラインで使いたい場面はよくある。 取得する方法は2つ: AWS CLIの get-alias でエイリアスから取得する方式と、lambrollの --log-format json で構造化ログをパースする方式。CI/CDで使う…
CrowdStrike FalconをECS Fargate環境に導入するとき、利用者側から提供元に確認しておくべきことも結構あるんですよね。 導入後に「聞いてなかった」で問題が起きるのを防ぐために、利用者側の視点で確認事項を整理しました。 この記事の前提 対象環境: ECS…
EC2のProxy環境で aws ecr get-login-password や aws sts get-caller-identity がタイムアウトする場合、まず NO_PROXY に 169.254.169.254 が入っているか確認するとほぼ解決します。 見えているエラーはSTSですが、実際に詰まっているのはその手前のIMDS…
この記事は EC2 user_data シリーズ(全3回) の3本目です。 aws_instance の user_data に lifecycle { ignore_changes } を入れると意図しない stop/start は止まります。でも「いざ新しい user_data を適用したくなったらどうするのか」が次の問題になる…
この記事は EC2 user_data シリーズ(全3回) の2本目です。 Terraform の aws_instance に user_data_replace_on_change という属性があります。これは Provider v4 のメジャーアップデートで user_data 変更時の挙動が変わり、困ったユーザーのために後か…
この記事は EC2 user_data シリーズ(全3回) の1本目です。 Terraform で aws_instance の user_data を変更して terraform apply したら、インスタンスが stop/start してしまうので、サービス断発生してしまいます。 しかも新しい user_data のスクリプト…