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
28
8.4k
初心者こそ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
AWS Well-Architected Framework をみんなで読んでいる話
maimyyym
1
29
課金体系を紐解いて学ぶAWS WAF
maimyyym
2
110
自由で便利なLaravelのしんどいポイントを楽しさに変える
maimyyym
1
110
LandingZoneAccelerator と学ぶ 「スケーラブルで安全なマルチアカウントAWS環境」と 私たちにもできるベストプラクティス
maimyyym
1
210
初めての札幌と初めてのBedrock ~Bedrock Converse API×SAMで遊んでみる~
maimyyym
1
290
S3操作の落とし穴から学ぶ Laravel File Storageと例外処理
maimyyym
2
630
タイパ重視×アウトプット駆動ではじめるAWS 〜認定資格とコミュニティの先で考えるAWSの学び方〜
maimyyym
2
280
SREがいない”今いる場所”で 「SRE」について聞いて、考えてみた
maimyyym
2
380
IaCからAWSに入門した初心者が CloudFormationを通して考えた「AWS操作」の使い分け
maimyyym
4
950
Other Decks in Technology
See All in Technology
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
5
590
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
510
CysharpのOSS群から見るModern C#の現在地
neuecc
1
3.1k
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
Lambdaと地方とコミュニティ
miu_crescent
2
370
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
複雑なState管理からの脱却
sansantech
PRO
1
140
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
Application Development WG Intro at AppDeveloperCon
salaboy
0
180
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
Featured
See All Featured
Become a Pro
speakerdeck
PRO
25
5k
Producing Creativity
orderedlist
PRO
341
39k
Why Our Code Smells
bkeepers
PRO
334
57k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Bash Introduction
62gerente
608
210k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
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/