Pulumi-aws-nativeを使ってECS Fargateのデプロイ環境を作ってみた
ふとしたことから業務でAWSの環境構築をIaCのpulumiを使ってやることになってハマりにハマったので記事化してみました。
とりあえずPrivate subnet上にFargateのインスタンスを立てて、ALBのPublic IP経由でインターネットからアクセスしてみたかっただけなのでインフラ構成としては
ECS Fargateのデプロイ環境をCFnでサクッと構築してみた(Rollingアップデート編)
を基本にして以下を手抜き、改修しています。
- 良く見る @pulumi/aws ではなく @pulumi/aws-native で記述
- ECR,CI/CD環境は無し
- auto scalling設定なし(private subnetもコメントアウトして1系のみ)
- ALBのログ設定なし
- 個人のAWS環境で動作確認していたので、勉強ついでにFargateのSPOTインスタンスを使うようにして費用削減しています。
動作確認したpulumiのソースはこちら
以下愚痴
私自身がAWSで1からネットワーク含めて構築するのが今回始めてだったので具体的なインフラ構成を理解、構築するところで時間喰いました…。
pulumiでAWSを利用するものとしては pulumi/awsが先にあったのですが、 2024/10/1にPulumi’s AWS Cloud Control Provider(旧:aws native)がGAになったのでそちらを使うとしたら、サンプルが意外と見つからなくて予想以上に苦戦しました。
Pulumiが提供している生成AIのpulumi AIを無償でも使えるので使ってみましたが、aws nativeではなくpulumi awsの方のプログラミング形式で提案しちゃうことが多くてツラい目に…。
業務の方で大分迷惑をかけている(現在進行系)ではあるのですが、苦労した甲斐があってCloud Formationよりもかなりプログラマブルにかけるようになっています。TypeScriptで記述している+かなり厳密に型定義を使っているのでなんのパラメーターが必要なのかは後から見て分かりやすいと思います。
気力があればもうちょっと実業務の使えるようなDEV/STG/PROD環境向けのサンプルソースを出すと思います(実は先にそっちを書いてた)
正月の2日使って半年以上ほったらかしにしていた自分の開発用Xubuntuの久々のアップデート、公開できる形のソース修正、pulumi独特のリソースの依存関係の修正などをヘロヘロになりながらやっていたんでgithubのcommitログがひどいことになっていますがご容赦ください。
Discussion