【入門編】Pulumi入門:AWS環境構築ハンズオン(TypeScript版) – インフラ構成管理(IaC)活用バイブル

エンジニアの皆さん、こんにちは。

インフラの世界へようこそ。これまで手動でAWSコンソールをポチポチとクリックし、「あれ、この設定ってどうなってたっけ?」と冷や汗をかいた経験はありませんか?

今日紹介するPulumi(プラミ)は、その悪夢を終わらせるための武器です。Terraformのような宣言的インフラ管理を、使い慣れたプログラミング言語(今回はTypeScript)で記述できる。つまり、「インフラをアプリケーションコードの一部として扱う」という、現代のSREにおける究極の到達点です。

これをマスターすれば、環境構築は「作業」から「確実な設計」へと進化します。さあ、一緒に深淵を覗いてみましょう。

—

1. 前提条件と環境構築

Pulumiは、あなたの書いたコードをAWS APIに翻訳する「翻訳機」のような役割を果たします。まずは道具を揃えましょう。

必要なもの

  • AWS CLI: 認証の要です。インストールし、`aws configure`でアクセスキーとシークレットキーを設定しておいてください。
  • Node.js: TypeScriptを実行するためのランタイムです。
  • Pulumi CLI: [公式サイト](https://www.pulumi.com/docs/get-started/install/)からインストールしてください。

インストールが終わったら、ターミナルで `pulumi version` と打ってみてください。バージョンが表示されれば、戦う準備は完了です。

—

2. プロジェクトの初期化(神殿の基礎を作る)

任意のディレクトリを作成し、以下のコマンドを叩いてください。

mkdir my-pulumi-infra && cd my-pulumi-infra
pulumi new aws-typescript

いくつかの質問が来ますが、デフォルトのままでOKです。すると、ディレクトリ内に `index.ts` という心臓部が生成されます。これが、これからあなたのインフラを定義する「設計図」になります。

—

3. VPCとEC2をコードで構築する

さて、ここからが本番です。`index.ts` を開き、以下のコードを記述してみてください。なぜこの書き方なのか、その理由はコメントで添えています。

import as pulumi from “@pulumi/pulumi”;
import as aws from “@pulumi/aws”;

// 1. VPCの作成
// インフラを「モジュール」として扱うことで、再利用性が飛躍的に高まります
const vpc = new aws.ec2.Vpc(“my-vpc”, {
cidrBlock: “10.0.0.0/16”,
enableDnsHostnames: true,
});

// 2. サブネットの作成
const subnet = new aws.ec2.Subnet(“my-subnet”, {
vpcId: vpc.id,
cidrBlock: “10.0.1.0/24”,
});

// 3. セキュリティグループの定義(インバウンドを許可)
const sg = new aws.ec2.SecurityGroup(“web-sg”, {
vpcId: vpc.id,
ingress: [{ protocol: “tcp”, fromPort: 22, toPort: 22, cidrBlocks: [“0.0.0.0/0”] }],
});

// 4. EC2インスタンスの構築
// 重要なのは「リソース間の依存関係」を明示的に書かなくても、
// Pulumiが変数(vpc.id等)を通じて自動で解決してくれる点です。
const server = new aws.ec2.Instance(“web-server”, {
instanceType: “t2.micro”,
ami: “ami-0c55b159cbfafe1f0”, // Amazon Linux 2 (リージョンによって変更してください)
subnetId: subnet.id,
vpcSecurityGroupIds: [sg.id],
});

// デプロイ後にインスタンスのIPアドレスを表示する
export const publicIp = server.publicIp;

—

4. デプロイと破棄(破壊と創造のサイクル)

コードを書いたら、いよいよAWS上に具現化させます。

デプロイ(pulumi up)

ターミナルで以下のコマンドを実行してください。

pulumi up

すると、Pulumiが「現在と理想(コード)」の差分を計算し、実行計画を表示します。`yes` を選ぶと、魔法のようにAWSリソースが生成されます。

破棄(pulumi destroy)

学習が終わったら、必ずリソースを片付けましょう。これが「課金事故を防ぐ」SREの鉄則です。

pulumi destroy

—

なぜ今、Pulumiなのか?

初心者のうちは、「単にYAMLやHCL(Terraformの言語)を書けばいいのでは?」と思うかもしれません。しかし、大規模なシステムになればなるほど、「条件分岐(if文)」「ループ(for文)」「関数による抽象化」が必要になります。

Pulumiなら、TypeScriptの強力な型システムを使いながら、安全に、そして何より楽しくインフラを構築できます。

今日学んだことは、インフラ自動化のほんの入り口です。このコードをベースに、次は「RDSを立てる」「Lambdaを接続する」と、パズルのピースを組み合わせるように世界を広げていってください。

何か分からないことがあれば、いつでも聞いてください。インフラの深淵で、あなたを待っています。

タイトルとURLをコピーしました