Slide 1

Slide 1 text

初⼼者こそIaC︕ Terraformで学ぶAWS構築の基礎 フレッシュメンLT #1 冬休みの⾃由研究 2024.01.19 宮崎 真⾐ (@maimyyym) 1

Slide 2

Slide 2 text

アジェンダ • [0] はじめに • [1] AWS初⼼者の課題 • [2] 初⼼者にとってのTerraform • [3] 具体例 • [4] 考察 • [5] まとめ 2

Slide 3

Slide 3 text

0 はじめに

Slide 4

Slide 4 text

私のここがフレッシュ 4

Slide 5

Slide 5 text

私のここがフレッシュ IT未経験 5

Slide 6

Slide 6 text

私のここがフレッシュ IT未経験 ⼊社3ヶ⽉ 6

Slide 7

Slide 7 text

⾃⼰紹介 宮崎 真⾐ Miyazaki Mai - Account - ︓@maimyyym - Work at - 株式会社 Fusic (at 福岡︕) 技術本部/技術開発部⾨所属 - エンジニア - Skill - PHP(Laravel) - AWS - TypeScript 7 image

Slide 8

Slide 8 text

⾃⼰紹介 宮崎 真⾐ Miyazaki Mai - Account - ︓@maimyyym - Work at - 株式会社 Fusic (at 福岡︕) 技術本部/技術開発部⾨所属 - エンジニア - Skill - PHP(Laravel) - AWS - TypeScript 8 image

Slide 9

Slide 9 text

私のここがフレッシュ(再) IT未経験 ⼊社3ヶ⽉ 9

Slide 10

Slide 10 text

私のここがフレッシュ(再) IT未経験 AWS実務経験なし 10

Slide 11

Slide 11 text

フレッシュな私の今⽇の話 認定試験に合格できる構築知識を学ぶために Terraformが役に⽴った︕ という話をします 11

Slide 12

Slide 12 text

どんな話を︖ # この発表で話さないこと 12 • 細かい制御の話 • 実際の開発運⽤の話 • CDKについて

Slide 13

Slide 13 text

どんな話を︖ # 話すこと 13 • 初⼼者こそIaC(Terraform)がおすすめ︕という主張 • 学び⽅の話

Slide 14

Slide 14 text

01 AWS初⼼者の課題

Slide 15

Slide 15 text

⽤語の整理 # AWSとは 15 Amazonが提供するクラウドプラットフォーム # AWS認定試験とは クラウド(AWS)に関する 専⾨知識・スキルを証明する ための資格試験 引⽤︓https://aws.amazon.com/jp/certification/

Slide 16

Slide 16 text

⽤語の整理 # AWSとは 16 Amazonが提供するクラウドプラットフォーム # AWS認定試験とは クラウド(AWS)に関する 専⾨知識・スキルを証明する ための資格試験 引⽤︓https://aws.amazon.com/jp/certification/

Slide 17

Slide 17 text

認定試験に必要な知識 # SAP や SCS に共通して必要な知識 17 ※個⼈的な所感です ユーザーやリソースのアクセスに関する ポリシー、ロールなどの権限設定

Slide 18

Slide 18 text

認定試験に必要な知識 # SAP や SCS に共通して必要な知識 18 “ユーザーやリソースのアクセスに 関するポリシー、ロールなどの 権限設定” ・・・︖🤔 →こういう問題︕ SCS-C01公式サンプル問題より引⽤ (※現在のバージョンはC02)

Slide 19

Slide 19 text

認定試験に必要な知識 # SAP や SCS に共通して必要な知識 19 • この問題は読み取り許可の話。 • 実際は複数の権限設定がある。 • 試験問題を解くためには、 全てを理解している必要がある (バケットポリシー)

Slide 20

Slide 20 text

⽤語の整理 # SAP や SCS に共通して必要な知識 20 考えること、多すぎ︕ やってもやっても覚えられない🤯

Slide 21

Slide 21 text

⽤語の整理 # SAP や SCS に共通して必要な知識 21 でも、なんとか整理できました

Slide 22

Slide 22 text

⽤語の整理 # SAP や SCS に共通して必要な知識 22 Terraformのおかげ︕

Slide 23

Slide 23 text

02 初⼼者にとっての Terraform

Slide 24

Slide 24 text

Terraform︖ 24 IaC (Infrastructure as Code)ツールの⼀つ # Terraformとは

Slide 25

Slide 25 text

IaCとは # IaC (Infrastructure as Code)とは 25 サーバーやネットワーク、ストレージなどの インフラストラクチャをコードで管理すること

Slide 26

Slide 26 text

IaCとは # AWSにとってのIaC 26 CloudFormation CDK Terraform AWS環境構築のためのAWSが提供するIaCサービス。 JSONまたはYAMLでテンプレートを定義する。 AWSクラウド開発キット=プログラミング⾔語を使⽤して記述したインフラ定義を CloudFormationを通じてデプロイするためのフレームワーク。 HashiCorp社によって開発されたオープンソースのIaCツール。HCLという⾔語で記述。 AWSだけではなく、AzureやGCP等のクラウドサービスでも使える。

Slide 27

Slide 27 text

IaCとは 27 • インフラ環境構築を⾃動化 → ⼿作業のコスト・ミスの減少 • 設定の追加や変更が容易になる • チームで管理しやすい # IaC化のメリット

Slide 28

Slide 28 text

でも・・・ 28 IaCって上級者向けでは︖ むずかしそう・・・

Slide 29

Slide 29 text

でも・・・ 29 特にTerraformは インフラエンジニアじゃないと ハードルが⾼そう(※偏⾒)

Slide 30

Slide 30 text

やってみよう 30 どうせいつか使うし、 やってみよう・・・︕

Slide 31

Slide 31 text

やってみよう 31 やってみた

Slide 32

Slide 32 text

Terraform # 初⼼者にとってのTerraformの利点 32 • 必要なリソースが分かる • 必要な設定が分かる • 各リソースの関係性・構築の全体像が分かる

Slide 33

Slide 33 text

03 具体例

Slide 34

Slide 34 text

やってみる # 構成図 34 SessionManagerからEC2に接続してS3バケットを表⽰したい︕

Slide 35

Slide 35 text

やってみる # 構成図 35

Slide 36

Slide 36 text

やってみる # 必要なリソース 36 • VPC • サブネット • EC2インスタンス • S3バケット • VPCエンドポイント • セキュリティグループ (EC2、VPCエンドポイントにアタッチ) • IAMロール (S3権限、SSM権限のポリシーをアタッチ) • SessionManager⽤ • S3⽤

Slide 37

Slide 37 text

やってみる # 必要なリソース 37 • VPC • サブネット • EC2インスタンス • S3バケット • VPCエンドポイント • セキュリティグループ (EC2、VPCエンドポイントにアタッチ) • IAMロール (S3権限、SSM権限のポリシーをアタッチ) • SessionManager⽤ • S3⽤ 本⽇は⼀部のみ抜粋します

Slide 38

Slide 38 text

やってみる # マネジメントコンソールの場合 38 • VPC作成 • サブネット作成 ※推奨される設定が デフォルトで既に⼊っている。 例︓CIDRブロック

Slide 39

Slide 39 text

やってみる # マネジメントコンソールの場合 39 • EC2インスタンス起動 ※推奨される設定が デフォルトで既に⼊っている。 例︓AMI インスタンスタイプ セキュリティグループ

Slide 40

Slide 40 text

やってみる # マネジメントコンソールの場合 40 • EC2⽤IAMロールの作成 ※推奨される設定が デフォルトで既に⼊っている。 例︓信頼ポリシー

Slide 41

Slide 41 text

やってみる # マネジメントコンソールの場合 41 ※その他リソースの作成は省略 ネットワークリソース、サーバー関連だけでも 必要・推奨の設定が分かりやすく⽰されている ⚠実案件での運⽤ではなく、あくまで学習時の話です

Slide 42

Slide 42 text

やってみる # IaCの場合 - Terraform 42 • VPC • サブネット

Slide 43

Slide 43 text

やってみる # IaCの場合 - Terraform 43 • VPC • サブネット ◎CIDRブロックの記述

Slide 44

Slide 44 text

やってみる # IaCの場合 - Terraform 44 • EC2インスタンスとIAM ※SSM⽤のポリシーのみ付与している状態のため、S3⽤に さらに記述が必要。

Slide 45

Slide 45 text

やってみる # IaCの場合 - Terraform 45 • EC2インスタンスとIAM ◎AMIとインスタンスタイプの選択 ◎IAMポリシー → IAMロール → インスタンスプロファイルの流れ が分かりやすい ◎ポリシーの記述 ※SSM⽤のポリシーのみ付与している状態のため、S3⽤に さらに記述が必要。

Slide 46

Slide 46 text

やってみる # IaCの場合 - Terraform 46 • CIDRブロックを考える必要がある • AMI、インスタンスタイプを⾃ら考えて選ぶ必要がある • IAMロール、ポリシーの関連が分かりやすい • ポリシーを記述することで、⼿で覚えることができる

Slide 47

Slide 47 text

04 考察

Slide 48

Slide 48 text

マネコン VS Terraform # どうして、Terraform︖ - CDKを選ばない理由 48 • 宣⾔的である リソース作成に必要な設定をコードで可視化 各種プロパティ名が実際のリソース名・設定項⽬とほぼ同じ → コードを⾒れば中⾝が分かる • マルチプラットフォーム対応 抽象化が難しい︖全ての記述が必要 → ツール側で補うことがないため、隅々まで学べる

Slide 49

Slide 49 text

マネコン VS Terraform # マネジメントコンソールの必要性 49 • IaCツールはユーザー依存 設定・管理は全てユーザーの記述による。 コンソールはAWS側から⾒たリソースの状態が⽰されている。 必要な設定への導線もある (IaCにはない。※⽣成AIがここで役⽴つ︕) • 「IaCで作成→マネコンで確認」が⼤事 ⾃分が書いた設定とAWS上の設定を対⽐→理解が深まる

Slide 50

Slide 50 text

マネコン VS Terraform # IaCと⽣成AI 50 • IaCツールの利⽤に⽣成AIはほぼ必須 ※学習⽬的において コードの⾃動補完は必要な設定の導線となる。 ⽣成されたコードを⼀⾏ずつ理解することが学びとなる。 →学習スピードUPには不可⽋。

Slide 51

Slide 51 text

05 まとめ

Slide 52

Slide 52 text

ちなみに、この発表のきっかけは 52 # 実際に構築して学びが⼤きかった ⼊社時研修で取り組んでみた Laravelアプリケーション構成 (CI/CDパイプライン込み)

Slide 53

Slide 53 text

ちなみに、この発表のきっかけは 53 # 実際に構築して学びが⼤きかった 【得られたこと】 • パブリックサブネットとIGW、各ルートテーブル • ALBの各設定項⽬ • セキュリティグループの関連付け • ECS: タスクロールとタスク実⾏ロール • ECS: CloudWatchLogsの設定が必要 • ParameterStoreのSecureString値取得に必要な KMS権限 • CI/CDパイプライン構築⽅法(初の取り組みだった)

Slide 54

Slide 54 text

ちなみに、この発表のきっかけは 54 # 実際に構築して学びが⼤きかった 【得られたこと】 • パブリックサブネットとIGW、各ルートテーブル • ALBの各設定項⽬ • セキュリティグループの関連付け • ECS: タスクロールとタスク実⾏ロール • ECS: CloudWatchLogsの設定が必要 • ParameterStoreのSecureString値取得に必要な KMS権限 • CI/CDパイプライン構築⽅法(初の取り組みだった) <どんな設定がどのリソースに必要か>

Slide 55

Slide 55 text

資格試験に有⽤だったこと 55 • ポリシーの記述→そのまま覚えられる • 複雑な構成における設定の抜け漏れが分かる • Professional、Spacialtyレベルで必要な細部までの理解 ができる

Slide 56

Slide 56 text

資格試験に有⽤だったこと 56 • ポリシーの記述→そのまま覚えられる • 複雑な構成における設定の抜け漏れが分かる • Professional、Spacialtyレベルで必要な細部までの理解 ができる

Slide 57

Slide 57 text

実務にもつながる 57 細部までの理解 実案件の開発・運⽤には必須

Slide 58

Slide 58 text

初⼼者にとってのTerraform 58 AWS構築に必要な知識を網羅して学ぶことができる

Slide 59

Slide 59 text

初⼼者にとってのTerraform 59 AWS構築に必要な知識を網羅して学ぶことができる

Slide 60

Slide 60 text

初⼼者にとってのIaC 60 • ⽬と⼿で覚えるタイプには抜群の効果がある • CDKにも初⼼者にとってのメリットがある(本⽇は省略) • 学習も開発運⽤も、ツールは適材適所で選ぶ # 補足

Slide 61

Slide 61 text

Point AWS初⼼者、考えること・理解すべきことが膨⼤に感じていた Point 3 Terraformの”細部まで網羅して記述する必要性” = 学びにとって有⽤ 61 Point 1 TerraformでAWS環境を構築したら、整理して覚えることができた︕ Point 2 初⼼者こそコードでインフラ構築をやってみよう︕ Point 4

Slide 62

Slide 62 text

ご清聴いただきありがとうございました Thank You We are Hiring ! https://recruit.fusic.co.jp/