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
みのるん
March 13, 2025
Technology
7
2.7k
マネコン操作いらず! TerraformでAWSインフラのコーディングに入門しよう
JAWS-UG東京 IaC Night 〜入門から上級まで!AWSをコードで構築しよう〜
https://jawsug.connpass.com/event/344954/
みのるん
March 13, 2025
Tweet
Share
More Decks by みのるん
See All by みのるん
AIエージェントは「使う」だけじゃなくて「作る」時代! 〜最新フレームワークで楽しく開発入門しよう〜
minorun365
10
1.5k
Bedrock AgentCoreで解き放て! Strands Agentsで構築するマルチエージェントの実装Tips
minorun365
12
3.6k
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
12
2.2k
AWSの最新サービスでAIエージェント構築に楽しく入門しよう
minorun365
14
1.9k
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
10
1.2k
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
20
7.7k
本部長の代わりに提案書レビュー! KDDI営業が毎日使うAIエージェント「A-BOSS」開発秘話
minorun365
17
6.4k
やさしい認証認可
minorun365
38
14k
やさしいClaude Code入門
minorun365
46
42k
Other Decks in Technology
See All in Technology
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
0
230
Data & AIの未来とLakeHouse
ishikawa_satoru
0
640
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
30
20k
Beyond Prompts: Building Intelligent Applications with Genkit and the Model Context Protocol
peterfriese
0
110
コード1ミリもわからないけど Claude CodeでFigjamプラグインを作った話
abokadotyann
1
140
エンジニアにとってコードと並んで重要な「データ」のお話 - データが動くとコードが見える:関数型=データフロー入門
ismk
0
250
フライトコントローラPX4の中身(制御器)を覗いてみた
santana_hammer
1
130
DMARCは導入したんだけど・・・現場のつぶやき 〜 BIMI?何それ美味しいの?
hirachan
1
180
Pythonで構築する全国市町村ナレッジグラフ: GraphRAGを用いた意味的地域検索への応用
negi111111
8
3.1k
お試しで oxlint を導入してみる #vuefes_aftertalk
bengo4com
2
1.3k
文字列操作の達人になる ~ Kotlinの文字列の便利な世界 ~ - Kotlin fest 2025
tomorrowkey
2
570
Amazon Q Developer CLIをClaude Codeから使うためのベストプラクティスを考えてみた
dar_kuma_san
0
370
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
What's in a price? How to price your products and services
michaelherold
246
12k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Visualization
eitanlees
150
16k
A designer walks into a library…
pauljervisheath
210
24k
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. アジャイルに⼒を与え 共に成⻑し続ける社会を創る