PulumiとはどんなIaCツールか
Pulumiは、汎用プログラミング言語でクラウドインフラを定義・デプロイ・管理できるInfrastructure as Code(IaC)プラットフォームだ。Terraform のようにHCLという独自言語を覚える必要がなく、Python、TypeScript、Go、C#、Javaといった言語がそのまま使える。
AWS、Azure、GCPをはじめ120以上のクラウドプロバイダーに対応しており、マルチクラウド構成も1つのコードベースで管理できる。
主な機能とAWSインフラ管理での強み
- 汎用言語でインフラ定義:TypeScript、Python、Go、C#、Javaに対応。IDEの補完・型チェックがそのまま使える
- 120以上のプロバイダー対応:AWS、Azure、GCP、Kubernetes、Cloudflare など主要サービスをカバー
- Automation API:CI/CDパイプラインにIaCを組み込める。GitHub Actionsとの連携も容易
- シークレット管理:Pulumi ESCで環境変数や秘密情報を安全に管理
- ステート管理:Pulumi Cloudまたは自前バックエンド(S3、GCS、ローカル)に保存可能
- 再利用可能なコンポーネント:パッケージとして共有でき、チーム間でインフラパターンを標準化できる
導入方法とAWSプロジェクトの始め方
# macOS / Linux
curl -fsSL https://get.pulumi.com/ | sh
# Homebrew
brew install pulumi/tap/pulumi
AWSプロジェクトの作成:
mkdir my-aws-infra && cd my-aws-infra
pulumi new aws-typescript
TypeScriptでS3バケットを作成する例:
import * as aws from "@pulumi/aws";
const bucket = new aws.s3.Bucket("my-bucket", {
website: {
indexDocument: "index.html",
},
});
export const bucketName = bucket.id;
デプロイの実行:
pulumi up
pulumi up を実行すると変更のプレビューが表示され、確認後にデプロイが実行される。pulumi destroy でリソースを削除できる。
Terraform との違いと競合比較
| ツール | 定義言語 | マルチクラウド | 学習コスト | ステート管理 |
|---|---|---|---|---|
| Pulumi | Python/TS/Go/C#/Java | ◎ 120以上 | ◎ 既存言語でOK | Pulumi Cloud or S3 |
| Terraform | HCL(独自DSL) | ◎ 多数 | △ HCL習得が必要 | Terraform Cloud or S3 |
| AWS CDK | TypeScript/Python | △ AWS専用 | ○ 言語は自由 | CloudFormation |
| Crossplane | YAML(K8s CRD) | ○ 対応 | △ K8s知識が必要 | Kubernetes |
差別化ポイント:Pulumiは汎用言語を使える点でTerraformと差別化される。条件分岐やループ、テストフレームワークの活用が自然にできるため、複雑なインフラ構成をプログラム的に管理したいチームに向いている。一方、Terraformはエコシステムの成熟度とコミュニティの規模で優位に立つ。
データパイプライン・AI基盤との連携
PulumiでAWSのMLインフラを構築する場合、SageMaker、ECS、Lambda、S3などのリソースをコードで一括管理できる。Apache Airflowのワークフローと組み合わせれば、データパイプラインのインフラ構築からジョブ実行までを自動化できる。
LLMアプリケーションの本番環境を構築する際にも、ECSクラスタ、ALB、RDS、VPCといったリソースをPulumiで定義しておけば、環境の再現性が担保される。RAGFlowのようなRAGシステムのデプロイ先インフラとしても活用できる。
まとめ:Pulumiが向いているケース
Pulumiは「既にプログラミング言語に習熟しているチームが、新たにHCLを学ぶコストを省きたい」場合に最適な選択肢だ。TypeScriptやPythonでインフラを書けるため、アプリケーションコードとインフラコードのレビュープロセスを統一でき、開発フローがシンプルになる。