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
初心者こそIaC!Terraformで学ぶAWS構築の基礎
Search
mai miya
January 19, 2024
Technology
32
11k
初心者こそIaC!Terraformで学ぶAWS構築の基礎
2024/01/19
フレッシュメンLT #1 冬休みの自由研究
https://connpass.com/event/301006/
mai miya
January 19, 2024
Tweet
Share
More Decks by mai miya
See All by mai miya
組織とセキュリティ文化と、自分の一歩
maimyyym
3
1.4k
大規模サーバーレスプロジェクトのリアルな零れ話
maimyyym
3
320
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
440
re:Invent2024で広がった AWS Verified Accessの可能性を探る
maimyyym
1
140
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
420
IAM JSON ポリシーと仲良くなろう
maimyyym
3
120
2年目エンジニアが過ごしたre:Invent、私にできる明日からのEverything starts with security
maimyyym
0
130
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
410
AWS Well-Architected Framework をみんなで読んでいる話
maimyyym
1
110
Other Decks in Technology
See All in Technology
Witchcraft for Memory
pocke
1
660
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
180
生まれ変わった AWS Security Hub (Preview) を紹介 #reInforce_osaka / reInforce New Security Hub
masahirokawahara
0
370
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
3
260
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
300
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
1
180
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
5
4.6k
本が全く読めなかった過去の自分へ
genshun9
0
710
Oracle Cloud Infrastructure:2025年6月度サービス・アップデート
oracle4engineer
PRO
2
310
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
1
250
論文紹介:LLMDet (CVPR2025 Highlight)
tattaka
0
240
Lambda Web Adapterについて自分なりに理解してみた
smt7174
5
140
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Navigating Team Friction
lara
187
15k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Code Review Best Practice
trishagee
69
18k
How GitHub (no longer) Works
holman
314
140k
RailsConf 2023
tenderlove
30
1.1k
Building Applications with DynamoDB
mza
95
6.5k
Speed Design
sergeychernyshev
32
1k
Transcript
初⼼者こそIaC︕ Terraformで学ぶAWS構築の基礎 フレッシュメンLT #1 冬休みの⾃由研究 2024.01.19 宮崎 真⾐ (@maimyyym) 1
アジェンダ • [0] はじめに • [1] AWS初⼼者の課題 • [2] 初⼼者にとってのTerraform
• [3] 具体例 • [4] 考察 • [5] まとめ 2
0 はじめに
私のここがフレッシュ 4
私のここがフレッシュ IT未経験 5
私のここがフレッシュ IT未経験 ⼊社3ヶ⽉ 6
⾃⼰紹介 宮崎 真⾐ Miyazaki Mai - Account - ︓@maimyyym -
Work at - 株式会社 Fusic (at 福岡︕) 技術本部/技術開発部⾨所属 - エンジニア - Skill - PHP(Laravel) - AWS - TypeScript 7 image
⾃⼰紹介 宮崎 真⾐ Miyazaki Mai - Account - ︓@maimyyym -
Work at - 株式会社 Fusic (at 福岡︕) 技術本部/技術開発部⾨所属 - エンジニア - Skill - PHP(Laravel) - AWS - TypeScript 8 image
私のここがフレッシュ(再) IT未経験 ⼊社3ヶ⽉ 9
私のここがフレッシュ(再) IT未経験 AWS実務経験なし 10
フレッシュな私の今⽇の話 認定試験に合格できる構築知識を学ぶために Terraformが役に⽴った︕ という話をします 11
どんな話を︖ # この発表で話さないこと 12 • 細かい制御の話 • 実際の開発運⽤の話 • CDKについて
どんな話を︖ # 話すこと 13 • 初⼼者こそIaC(Terraform)がおすすめ︕という主張 • 学び⽅の話
01 AWS初⼼者の課題
⽤語の整理 # AWSとは 15 Amazonが提供するクラウドプラットフォーム # AWS認定試験とは クラウド(AWS)に関する 専⾨知識・スキルを証明する ための資格試験
引⽤︓https://aws.amazon.com/jp/certification/
⽤語の整理 # AWSとは 16 Amazonが提供するクラウドプラットフォーム # AWS認定試験とは クラウド(AWS)に関する 専⾨知識・スキルを証明する ための資格試験
引⽤︓https://aws.amazon.com/jp/certification/
認定試験に必要な知識 # SAP や SCS に共通して必要な知識 17 ※個⼈的な所感です ユーザーやリソースのアクセスに関する ポリシー、ロールなどの権限設定
認定試験に必要な知識 # SAP や SCS に共通して必要な知識 18 “ユーザーやリソースのアクセスに 関するポリシー、ロールなどの 権限設定”
・・・︖🤔 →こういう問題︕ SCS-C01公式サンプル問題より引⽤ (※現在のバージョンはC02)
認定試験に必要な知識 # SAP や SCS に共通して必要な知識 19 • この問題は読み取り許可の話。 •
実際は複数の権限設定がある。 • 試験問題を解くためには、 全てを理解している必要がある (バケットポリシー)
⽤語の整理 # SAP や SCS に共通して必要な知識 20 考えること、多すぎ︕ やってもやっても覚えられない🤯
⽤語の整理 # SAP や SCS に共通して必要な知識 21 でも、なんとか整理できました
⽤語の整理 # SAP や SCS に共通して必要な知識 22 Terraformのおかげ︕
02 初⼼者にとっての Terraform
Terraform︖ 24 IaC (Infrastructure as Code)ツールの⼀つ # Terraformとは
IaCとは # IaC (Infrastructure as Code)とは 25 サーバーやネットワーク、ストレージなどの インフラストラクチャをコードで管理すること
IaCとは # AWSにとってのIaC 26 CloudFormation CDK Terraform AWS環境構築のためのAWSが提供するIaCサービス。 JSONまたはYAMLでテンプレートを定義する。 AWSクラウド開発キット=プログラミング⾔語を使⽤して記述したインフラ定義を
CloudFormationを通じてデプロイするためのフレームワーク。 HashiCorp社によって開発されたオープンソースのIaCツール。HCLという⾔語で記述。 AWSだけではなく、AzureやGCP等のクラウドサービスでも使える。
IaCとは 27 • インフラ環境構築を⾃動化 → ⼿作業のコスト・ミスの減少 • 設定の追加や変更が容易になる • チームで管理しやすい
# IaC化のメリット
でも・・・ 28 IaCって上級者向けでは︖ むずかしそう・・・
でも・・・ 29 特にTerraformは インフラエンジニアじゃないと ハードルが⾼そう(※偏⾒)
やってみよう 30 どうせいつか使うし、 やってみよう・・・︕
やってみよう 31 やってみた
Terraform # 初⼼者にとってのTerraformの利点 32 • 必要なリソースが分かる • 必要な設定が分かる • 各リソースの関係性・構築の全体像が分かる
03 具体例
やってみる # 構成図 34 SessionManagerからEC2に接続してS3バケットを表⽰したい︕
やってみる # 構成図 35
やってみる # 必要なリソース 36 • VPC • サブネット • EC2インスタンス
• S3バケット • VPCエンドポイント • セキュリティグループ (EC2、VPCエンドポイントにアタッチ) • IAMロール (S3権限、SSM権限のポリシーをアタッチ) • SessionManager⽤ • S3⽤
やってみる # 必要なリソース 37 • VPC • サブネット • EC2インスタンス
• S3バケット • VPCエンドポイント • セキュリティグループ (EC2、VPCエンドポイントにアタッチ) • IAMロール (S3権限、SSM権限のポリシーをアタッチ) • SessionManager⽤ • S3⽤ 本⽇は⼀部のみ抜粋します
やってみる # マネジメントコンソールの場合 38 • VPC作成 • サブネット作成 ※推奨される設定が デフォルトで既に⼊っている。
例︓CIDRブロック
やってみる # マネジメントコンソールの場合 39 • EC2インスタンス起動 ※推奨される設定が デフォルトで既に⼊っている。 例︓AMI インスタンスタイプ
セキュリティグループ
やってみる # マネジメントコンソールの場合 40 • EC2⽤IAMロールの作成 ※推奨される設定が デフォルトで既に⼊っている。 例︓信頼ポリシー
やってみる # マネジメントコンソールの場合 41 ※その他リソースの作成は省略 ネットワークリソース、サーバー関連だけでも 必要・推奨の設定が分かりやすく⽰されている ⚠実案件での運⽤ではなく、あくまで学習時の話です
やってみる # IaCの場合 - Terraform 42 • VPC • サブネット
やってみる # IaCの場合 - Terraform 43 • VPC • サブネット
◎CIDRブロックの記述
やってみる # IaCの場合 - Terraform 44 • EC2インスタンスとIAM ※SSM⽤のポリシーのみ付与している状態のため、S3⽤に さらに記述が必要。
やってみる # IaCの場合 - Terraform 45 • EC2インスタンスとIAM ◎AMIとインスタンスタイプの選択 ◎IAMポリシー
→ IAMロール → インスタンスプロファイルの流れ が分かりやすい ◎ポリシーの記述 ※SSM⽤のポリシーのみ付与している状態のため、S3⽤に さらに記述が必要。
やってみる # IaCの場合 - Terraform 46 • CIDRブロックを考える必要がある • AMI、インスタンスタイプを⾃ら考えて選ぶ必要がある
• IAMロール、ポリシーの関連が分かりやすい • ポリシーを記述することで、⼿で覚えることができる
04 考察
マネコン VS Terraform # どうして、Terraform︖ - CDKを選ばない理由 48 • 宣⾔的である
リソース作成に必要な設定をコードで可視化 各種プロパティ名が実際のリソース名・設定項⽬とほぼ同じ → コードを⾒れば中⾝が分かる • マルチプラットフォーム対応 抽象化が難しい︖全ての記述が必要 → ツール側で補うことがないため、隅々まで学べる
マネコン VS Terraform # マネジメントコンソールの必要性 49 • IaCツールはユーザー依存 設定・管理は全てユーザーの記述による。 コンソールはAWS側から⾒たリソースの状態が⽰されている。
必要な設定への導線もある (IaCにはない。※⽣成AIがここで役⽴つ︕) • 「IaCで作成→マネコンで確認」が⼤事 ⾃分が書いた設定とAWS上の設定を対⽐→理解が深まる
マネコン VS Terraform # IaCと⽣成AI 50 • IaCツールの利⽤に⽣成AIはほぼ必須 ※学習⽬的において コードの⾃動補完は必要な設定の導線となる。
⽣成されたコードを⼀⾏ずつ理解することが学びとなる。 →学習スピードUPには不可⽋。
05 まとめ
ちなみに、この発表のきっかけは 52 # 実際に構築して学びが⼤きかった ⼊社時研修で取り組んでみた Laravelアプリケーション構成 (CI/CDパイプライン込み)
ちなみに、この発表のきっかけは 53 # 実際に構築して学びが⼤きかった 【得られたこと】 • パブリックサブネットとIGW、各ルートテーブル • ALBの各設定項⽬ •
セキュリティグループの関連付け • ECS: タスクロールとタスク実⾏ロール • ECS: CloudWatchLogsの設定が必要 • ParameterStoreのSecureString値取得に必要な KMS権限 • CI/CDパイプライン構築⽅法(初の取り組みだった)
ちなみに、この発表のきっかけは 54 # 実際に構築して学びが⼤きかった 【得られたこと】 • パブリックサブネットとIGW、各ルートテーブル • ALBの各設定項⽬ •
セキュリティグループの関連付け • ECS: タスクロールとタスク実⾏ロール • ECS: CloudWatchLogsの設定が必要 • ParameterStoreのSecureString値取得に必要な KMS権限 • CI/CDパイプライン構築⽅法(初の取り組みだった) <どんな設定がどのリソースに必要か>
資格試験に有⽤だったこと 55 • ポリシーの記述→そのまま覚えられる • 複雑な構成における設定の抜け漏れが分かる • Professional、Spacialtyレベルで必要な細部までの理解 ができる
資格試験に有⽤だったこと 56 • ポリシーの記述→そのまま覚えられる • 複雑な構成における設定の抜け漏れが分かる • Professional、Spacialtyレベルで必要な細部までの理解 ができる
実務にもつながる 57 細部までの理解 実案件の開発・運⽤には必須
初⼼者にとってのTerraform 58 AWS構築に必要な知識を網羅して学ぶことができる
初⼼者にとってのTerraform 59 AWS構築に必要な知識を網羅して学ぶことができる
初⼼者にとってのIaC 60 • ⽬と⼿で覚えるタイプには抜群の効果がある • CDKにも初⼼者にとってのメリットがある(本⽇は省略) • 学習も開発運⽤も、ツールは適材適所で選ぶ # 補足
Point AWS初⼼者、考えること・理解すべきことが膨⼤に感じていた Point 3 Terraformの”細部まで網羅して記述する必要性” = 学びにとって有⽤ 61 Point 1
TerraformでAWS環境を構築したら、整理して覚えることができた︕ Point 2 初⼼者こそコードでインフラ構築をやってみよう︕ Point 4
ご清聴いただきありがとうございました Thank You We are Hiring ! https://recruit.fusic.co.jp/