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 みのるん
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
PRO
6
220
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
19
6.8k
本部長の代わりに提案書レビュー! KDDI営業が毎日使うAIエージェント「A-BOSS」開発秘話
minorun365
PRO
15
3.5k
やさしい認証認可
minorun365
PRO
31
13k
やさしいClaude Code入門
minorun365
PRO
45
40k
地味にいろいろあった! 2025春のAmazon Bedrockアップデートおさらい
minorun365
PRO
2
790
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
18
6.2k
やさしいMCP入門
minorun365
PRO
200
160k
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
2
880
Other Decks in Technology
See All in Technology
S3 Glacier のデータを Athena からクエリしようとしたらどうなるのか/try-to-query-s3-glacier-from-athena
emiki
0
180
帳票構造化タスクにおけるLLMファインチューニングの性能評価
yosukeyoshida
1
230
Kiroから考える AIコーディングツールの潮流
s4yuba
4
650
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
9
1.5k
AI によるドキュメント処理を加速するためのOCR 結果の永続化と再利用戦略
tomoaki25
0
380
ビジネス文書に特化した基盤モデル開発 / SaaSxML_Session_2
sansan_randd
0
250
Claude Codeから我々が学ぶべきこと
s4yuba
6
1.7k
多様なニーズに応える Movable Type ラインナップ 全紹介
masakah
0
130
相互運用可能な学修歴クレデンシャルに向けた標準技術と国際動向
fujie
0
200
dipにおけるSRE変革の軌跡
dip_tech
PRO
1
220
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
170
バクラクによるコーポレート業務の自動運転 #BetAIDay
layerx
PRO
1
830
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Building Applications with DynamoDB
mza
95
6.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
332
22k
Code Reviewing Like a Champion
maltzj
524
40k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
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. アジャイルに⼒を与え 共に成⻑し続ける社会を創る