Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マネコン操作いらず! TerraformでAWSインフラのコーディングに入門しよう
Search
みのるん
PRO
March 13, 2025
Technology
7
2.5k
マネコン操作いらず! TerraformでAWSインフラのコーディングに入門しよう
JAWS-UG東京 IaC Night 〜入門から上級まで!AWSをコードで構築しよう〜
https://jawsug.connpass.com/event/344954/
みのるん
PRO
March 13, 2025
Tweet
Share
More Decks by みのるん
See All by みのるん
AWSの最新サービスでAIエージェント構築に楽しく入門しよう
minorun365
PRO
10
610
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
PRO
8
480
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
19
7.1k
本部長の代わりに提案書レビュー! KDDI営業が毎日使うAIエージェント「A-BOSS」開発秘話
minorun365
PRO
16
3.9k
やさしい認証認可
minorun365
PRO
32
14k
やさしいClaude Code入門
minorun365
PRO
46
40k
地味にいろいろあった! 2025春のAmazon Bedrockアップデートおさらい
minorun365
PRO
2
810
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
18
6.2k
やさしいMCP入門
minorun365
PRO
202
170k
Other Decks in Technology
See All in Technology
サービスロボット最前線:ugoが挑むPhysical AI活用
kmatsuiugo
0
190
広島発!スタートアップ開発の裏側
tsankyo
0
210
Devinを使ったモバイルアプリ開発 / Mobile app development with Devin
yanzm
0
160
サイボウズフロントエンドの横断活動から考える AI時代にできること
mugi_uno
4
1.4k
KiroでGameDay開催してみよう(準備編)
yuuuuuuu168
1
120
マイクロモビリティシェアサービスを支える プラットフォームアーキテクチャ
grimoh
1
190
2025新卒研修・Webアプリケーションセキュリティ #弁護士ドットコム
bengo4com
3
10k
あなたの知らない OneDrive
murachiakira
0
230
ZOZOTOWNフロントエンドにおけるディレクトリの分割戦略
zozotech
PRO
14
4.9k
モダンな現場と従来型の組織——そこに生じる "不整合" を解消してこそチームがパフォーマンスを発揮できる / Team-oriented Organization Design 20250825
mtx2s
5
500
RAID6 を楔形文字で組んで現代人を怖がらせましょう(実装編)
mimifuwa
0
290
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
2
20k
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
What's in a price? How to price your products and services
michaelherold
246
12k
Scaling GitHub
holman
462
140k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
For a Future-Friendly Web
brad_frost
179
9.9k
Building Applications with DynamoDB
mza
96
6.6k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
780
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Agile that works and the tools we love
rasmusluckow
329
21k
Making Projects Easy
brettharned
117
6.3k
Transcript
公開情報 マネコン操作いらず︕ TerraformでAWSインフラの コーディングに⼊⾨しよう KDDIアジャイル開発センター株式会社 テックエバンジェリスト 御⽥ 稔(みのるん)
公開情報 1 KDDI Agile Development Center Corporation $ whoami 御⽥
稔(みのるん) @minorun365 テックエバンジェリスト KDDIアジャイル開発センター株式会社(KAG) クラウドや⽣成AIで内製開発を⾏いながら 技術の楽しさを広める活動をしています AWS Community Hero AWS Samurai 2023-2024 2024 Japan AWS Top Engineer 2024 Japan AWS All Certs Engineer Qiita 2024 Top Contributor
公開情報 2 KDDI Agile Development Center Corporation みなさん、 楽しくAWS構築してますか︖
公開情報 3 KDDI Agile Development Center Corporation もしかして 毎回マネコンで同じようなリソース 構築してませんか…︖
公開情報 4 KDDI Agile Development Center Corporation それ、IaC使うと楽ですよ︕
公開情報 5 KDDI Agile Development Center Corporation IaCとは • IaC
= Infrastructure as Codeの略 • パブリッククラウドのように、インフラの抽象化が進んだことで 昔のような⼿動構築ではなくアプリケーションのようにコードで記述し デプロイできるようになった • 「構成管理」と表現されることもある
公開情報 6 KDDI Agile Development Center Corporation 定義型コードで 低レイヤーのまま扱う プログラミング⾔語で
抽象化して扱う 代表的なIaCツール OSやミドルウェアの 設定⾃動化 インフラ構築の ⾃動化 Ansible AWS CloudFormation Terraform AWS CDK Pulumi
公開情報 7 KDDI Agile Development Center Corporation IaCを使うと、何が嬉しいの︖ • 構築作業を効率化できる(⾃動化、⼀括削除)
• 似た構成を簡単に再現したり、使い回せる • インフラの構成や変更履歴をGitで管理できる + • ⽣成AIにインフラ構築をサポートしてもらいやすい
公開情報 8 KDDI Agile Development Center Corporation クラウドはAPIだからコードで扱える 実はマネコンでもCLIでも、クラウドはAPI経由でインフラが操作されている 開発者
Webブラウザ (AWSマネコン) ターミナル (AWS CLI) プログラミング⾔語 (AWS SDK) パブリッククラウド API 各サービス コントロール プレーン データ プレーン
公開情報 9 KDDI Agile Development Center Corporation クラウドはAPIだからコードで扱える 例えばTerraformはGo⾔語で動作し、AWS SDK
for Go経由でインフラリソースを操作する 開発者 Webブラウザ (AWSマネコン) ターミナル (AWS CLI) プログラミング⾔語 (AWS SDK) パブリッククラウド API 各サービス コントロール プレーン データ プレーン
公開情報 10 KDDI Agile Development Center Corporation ⼈気のIaCツール Terraformの紹介
公開情報 11 KDDI Agile Development Center Corporation Terraformとは︖ • HashiCorp社が開発するIaCツールの⼀つ
特徴 • AWSなどの各種クラウドを始め、様々なインフラサービスに対応している • 2014年から存在する⽼舗で、シェアが⾼い • ソースコードが公開されており無料で利⽤可能。 便利なSaaS版もある
公開情報 12 KDDI Agile Development Center Corporation Terraform界の登場⼈物 AWS API
.tf モジュール コンフィグ Terraform本体 コア プロバイダー ステート 開発者 作業PCの中
公開情報 13 KDDI Agile Development Center Corporation Terraform界の登場⼈物 AWS API
.tf モジュール コンフィグ Terraform本体 コア プロバイダー ステート 開発者 作業PCの中 モジュールというフォルダーの中に コンフィグというメインの定義ファイルを置く
公開情報 14 KDDI Agile Development Center Corporation Terraform界の登場⼈物 AWS API
.tf モジュール コンフィグ Terraform本体 コア プロバイダー ステート 開発者 作業PCの中 Terraform本体のソフトウェアは、 コア部分+プロバイダー (デプロイ先の製品⽤プラグイン) を組み合わせて使う
公開情報 15 KDDI Agile Development Center Corporation Terraform界の登場⼈物 AWS API
.tf モジュール コンフィグ Terraform本体 コア プロバイダー ステート 開発者 作業PCの中 コンフィグと実クラウドの 差分だけをデプロイできるように 実際のリソース状況が ステートファイルに随時記録される
公開情報 16 KDDI Agile Development Center Corporation 実際に使ってみよう︕
公開情報 17 KDDI Agile Development Center Corporation まずはAWSアカウントを準備しよう AWS側の設定 •
AWSアカウントを作成 • IAM Identity Centerをセットアップ(SSOユーザーを作成) 作業PCでの設定 • AWS CLIをインストールして認証設定(aws configure sso) • ターミナルの環境変数に認証情報を⼀時設定(export AWS_PROFILE=XXX)
公開情報 18 KDDI Agile Development Center Corporation Terraformのコードを書いてみよう 作業⽤ディレクトリ(ルートモジュール)を作って 「main.tf」(コンフィグファイル)を作成
terraform ブロック Terraform⾃体の設定を書く(使うプロバイダーなど) providor ブロック プロバイダー⾃体の設定を⾏う resource ブロック 実際に構築したいリソースの内容を書く
公開情報 19 KDDI Agile Development Center Corporation Terraformのコードを書いてみよう 作業⽤ディレクトリ(ルートモジュール)を作って 「main.tf」(コンフィグファイル)を作成
terraform ブロック Terraform⾃体の設定を書く(使うプロバイダーなど) 今回はAWSへのデプロイを⾏いたいので、 AWSプロバイダー(AWS向けのTerraformプラグイン) を指定している。 互換性の問題が起きないように Terraform本体や、プロバイダーのバージョンも指定。
公開情報 20 KDDI Agile Development Center Corporation Terraformのコードを書いてみよう 作業⽤ディレクトリ(ルートモジュール)を作って 「main.tf」(コンフィグファイル)を作成
providor ブロック プロバイダー⾃体の設定を⾏う 今回はAWSプロバイダーの設定。 例では「リージョン=東京」を全体の共通設定として指定
公開情報 21 KDDI Agile Development Center Corporation Terraformのコードを書いてみよう 作業⽤ディレクトリ(ルートモジュール)を作って 「main.tf」(コンフィグファイル)を作成
resource ブロック 実際に構築したいリソースの内容を書く 「リソース種別」と「識別⼦(好きな名前)」を指定し、 カッコの中に属性(設定値)を記述していく 宣⾔型(差分ではなく、最終的にありたい状態)で 書くのがTerraformの特徴︕
公開情報 22 KDDI Agile Development Center Corporation コンフィグファイルを書くときのコツ • 「Terraform
+ 作りたいAWSサービス名」でGoogle検索して、 Terraform AWSプロバイダーの公式ドキュメントで記述⽅法を確認しよう • ⼿っ取り早くベースを作りたいときは、Cline等でLLMにまるっと⽣成してもらおう
公開情報 23 KDDI Agile Development Center Corporation コンフィグが書けたら、コマンドを実⾏してデプロイしよう • terraform
init 今回使う作業ディレクトリを初期化する • terraform plan 記述内容をデプロイしたときの想定差分を表⽰する(ドライラン) • terraform apply 記述内容を実際のクラウド環境にデプロイする ➡ たったこれだけでインフラの構築が完了︕
公開情報 24 KDDI Agile Development Center Corporation terraform planを実⾏すると、コンフィグとステートが⽐較されます AWS
API .tf モジュール コンフィグ Terraform本体 コア プロバイダー ステート 開発者 作業PCの中 実際のリソース状況を ステートに反映する
公開情報 25 KDDI Agile Development Center Corporation terraform planの実⾏結果の⾒かた 今回の変更点サマリー
各リソースの変更点の詳細 + 追加 - 削除 ~ 更新 -/+ 置き換え
公開情報 26 KDDI Agile Development Center Corporation 実機デモ
公開情報 27 KDDI Agile Development Center Corporation 実際にMacから、EC2の構築を実演します
公開情報 28 KDDI Agile Development Center Corporation 便利な機能も使ってみよう︕
公開情報 29 KDDI Agile Development Center Corporation コンフィグファイルが⻑くなるので分けたい Terraformのコンフィグ(.tf)は複数のファイルに分けてもOK︕ •
拡張⼦が .tf であれば、ファイル名は⾃由 • 同じディレクトリ(モジュール)階層内であれば、インポートなど不要で勝⼿に読まれる frontend.tf network.tf
公開情報 30 KDDI Agile Development Center Corporation 他のリソースの値を参照したい 例えば「インターネットゲートウェイを作るときにVPCのIDを指定したい」など、 別のリソースの設定値を「リソース種別.識別⼦.属性名」という相対指定で参照できる
公開情報 31 KDDI Agile Development Center Corporation 既存のAWSリソースを参照したい data ブロックを使うと、すでに存在しているAWSリソースを参照して
Terraformコンフィグ内で設定値などを使い回すことができる マネコンで以前に作ったVPCを TerraformからID指定で参照する 参照した既存VPCを使って そこにIGWをTerraformで新規作成する
公開情報 32 KDDI Agile Development Center Corporation 変数をまとめたい locals ブロックを使うと、同じ変数を
複数のリソースで利⽤できる。 例えば、複数のEC2インスタンスに対して 同じインスタンスタイプを指定したいときに便利 変数を定義 「local.変数名」で呼び出せる ※変数をコンフィグに事前定義するのではなく、 実⾏時に外から渡したい場合は localsの代わりにvaluableブロックを使う
公開情報 33 KDDI Agile Development Center Corporation tfstateファイルをクラウド上に配置したい terraform applyを初回実⾏すると「terraform.tfstate」というJSONファイルが⽣成される。
次回からapplyをするたび、クラウドの最新状態がこのファイルに更新される 複数のPCやメンバーで作業する場合、このステートファイルを共有しやすいよう ローカルではなくS3バケットを指定しよう(terraformブロックに記述する)
公開情報 34 KDDI Agile Development Center Corporation 次のステップ
公開情報 35 KDDI Agile Development Center Corporation 慣れたら「モジュール分割」を使いこなそう︕ 環境を分けたり、リソース群を抽象化して使い回すために実務ではほぼ必須。 クラメソのよなさんが昨年、東京⽀部で死ぬほど分かりやすいLTしてくれたので必⾒です
speakerdeck.com/yonasou
公開情報 36 KDDI Agile Development Center Corporation 参考⽂献 • Terraform
Documentation(Hashicorp) https://developer.hashicorp.com/terraform • [詳解]AWS Infrastructure as Code -- 使って⽐べるTerraform&AWS CDK(技術評論社) https://gihyo.jp/book/2025/978-4-297-14724-2 • 完全初⼼者向けTerraform⼊⾨(AWS) | DCS blog https://blog.dcs.co.jp/aws/20210401-terraformaws.html
Be a Change Leader. アジャイルに⼒を与え 共に成⻑し続ける社会を創る