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
29
9.6k
初心者こそ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
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
350
re:Invent2024で広がった AWS Verified Accessの可能性を探る
maimyyym
1
77
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
390
IAM JSON ポリシーと仲良くなろう
maimyyym
3
100
2年目エンジニアが過ごしたre:Invent、私にできる明日からのEverything starts with security
maimyyym
0
110
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
330
AWS Well-Architected Framework をみんなで読んでいる話
maimyyym
1
100
課金体系を紐解いて学ぶAWS WAF
maimyyym
2
170
自由で便利なLaravelのしんどいポイントを楽しさに変える
maimyyym
1
160
Other Decks in Technology
See All in Technology
地味にいろいろあった! 2025春のAmazon Bedrockアップデートおさらい
minorun365
PRO
1
290
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
240
Making a MIDI controller device with PicoRuby/R2P2 (RubyKaigi 2025 LT)
risgk
1
300
watsonx.data上のベクトル・データベース Milvusを見てみよう/20250418-milvus-dojo
mayumihirano
0
120
読んで学ぶ Amplify Gen2 / Amplify と CDK の関係を紐解く #jawsug_tokyo
tacck
PRO
1
220
Writing Ruby Scripts with TypeProf
mame
0
260
C++26アップデート 2025-03
faithandbrave
0
870
クォータ監視、AWS Organizations環境でも楽勝です✌️
iwamot
PRO
1
330
品質文化を支える小さいクロスファンクショナルなチーム / Cross-functional teams fostering quality culture
toma_sm
0
130
クラウド開発環境Cloud Workstationsの紹介
yunosukey
0
190
AWS Control Towerを 数年運用してきての気づきとこれから/aws-controltower-ops-tips
tadayukinakamura
0
170
意思決定を支える検索体験を目指してやってきたこと
hinatades
PRO
0
230
Featured
See All Featured
Done Done
chrislema
183
16k
Unsuck your backbone
ammeep
670
57k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Code Review Best Practice
trishagee
67
18k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.6k
RailsConf 2023
tenderlove
30
1.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.6k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
A Tale of Four Properties
chriscoyier
158
23k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.3k
Into the Great Unknown - MozCon
thekraken
37
1.7k
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/