AWS と Terraformで実現するInfrastructure as Code

インフラの手運用なんてもうイヤだ!そんなあなたに贈る Infrastracture as Code の大本命!AWS上の環境構築をコーディングしよう!

4.52 (772 reviews)
Udemy
platform
日本語
language
Other
category
instructor
8,142
students
10.5 hours
content
Mar 2024
last update
$54.99
regular price

What you will learn

Terraformを使って AWS リソース(EC2, ELB, CloudFront, ACM, S3 など) を プロビジョニング する方法

Terraform 0.14 の構文(変数、メタ引数、ループと分岐など)、コマンド

Terraform のコードをモジュール化する方法

Infrastructure as Code の実態がどのようなものであるのか

Terraform を使った AWSリソース の管理

Description

クラウド開発を行っているといまだに手作業でやっていて疑問に感じることはありませんか?

そんな疑問や不安を解決する手段として、本講座では「Terraform」というツールを使って「AWSのインフラ環境構築をコード化/自動化する方法」を学びます。

まだまだ発展途上の領域ではありますが、「運用をコード化する」ということがどのようなものなのかを体験できるコースです。

ぜひ、一緒に学習をしていきましょう!


【概要】

本講座では環境構築から始まり、入門ともいえる簡易なEC2起動、本格的なシステム構築…といったステップで進めていきます。

学習できる内容には以下のようなものが含まれます。


◆Infrastructure as Code とは

  • IaCに関わるツール


◆Terraformの基礎(文法)

Terraformのコマンドや構文について学習します。
インフラ環境構築で必要となるタイミングでそれぞれ学習できるよう織り込んでいます。

  • HCL2構文

  • tfstateファイル

  • メタ引数

  • リソース依存関係の制御

  • ループと分岐

  • モジュール


◆AWSのインフラ構築

以下のリソースを Terraform で作成する方法を学習します。
基本的に単独のコーディングを学習するのではなく、Webアプリケーション向けのインフラ構築を総合的に行うよう組み合わせて学習を進めていきます。

  • VPC

  • セキュリティグループ

  • RDS(MySQL)

  • EC2

  • パラメータストア

  • AMI

  • ELB

  • ACM

  • S3

  • CloudFront

  • オートスケーリンググループ

  • IAM(ポリシー/グループ/ユーザー)


【謝辞】

今回も同僚の力を借りて作成することになりました。本コース作成にあたり実務上の知見や講座内容に対するフィードバックをしてくれた古澤魁さんには大変感謝しています。


【更新履歴】

v1.0.4 2021/07/23 「外部から変数を与える」レクチャーを追加
v1.0.3 2021/06/06 「添付リソースの一括ダウンロード」レクチャーを追加
v1.0.2 2012/03/31 SGの説明を修正
v1.0.1 2021/03/12 振り返りレクチャー追加
v1.0.0 2021/03/02 初版リリース


Content

はじめに

講座概要
Udemyの受講にあたって
[補足] 関連コース受講済みの方

Infrastructure as Code

クラウド開発における課題とは
HashiCorp社製品の紹介
Terraformとは

環境準備

AWS CLI インストール
Terraform用IAMユーザー作成
GitBashインストール
Terraformインストール
git-secretsインストール
VSCodeプラグインインストール
VSCodeデフォルトターミナルの変更

Terraform入門

はじめてのTerraform
tfstateファイル
EC2の変更(再作成なし)
EC2の変更(再作成あり)
EC2の削除
Terraformの基本コマンド

Terraform基本構文

HCL2とは
変数(locals, variables)
外部から変数を与える
Terraform設定(terraform)
プロバイダ(provider)
データリソース(data)
出力(output)
リソース参照
組み込み関数
ファイル分割
公式ドキュメントの見方
ひな型作成

作成するWebアプリケーション

Webアプリケーションの概要

【VPC】ネットワーク設定

VPCの作成
サブネットの作成
ルートテーブルの作成
インターネットゲートウェイの作成

【SG】ファイアウォール設定

セキュリティグループのリソース
セキュリティグループの作成(1)
プレフィックスリストの取得
セキュリティグループの作成(2)

【RDS】データベース作成

パラメータグループの作成
オプショングループの作成
サブネットグループの作成
ランダム文字列の生成
RDSの作成
RDSの作成(演習)
RDSのパスワード
RDSの削除
RDS接続用踏み台サーバー作成(手動)
RDSへデータ投入(手動)

【EC2】APサーバー作成(1)

AMIの検索
キーペアの作成
EC2の作成
EC2の作成(演習)

Terraform(ステートファイル)

tfstateをS3へ保管
リソース一覧の確認
リソース詳細の確認
リソース名の変更
リソースの取り込み
リソースの削除
現状の反映

【IAM】ロールの作成

IAMロールのデータ構造
信頼ポリシーの作成
IAMロールの作成
ポリシーのアタッチ
インスタンスプロフィールの作成
EC2へIAMロールを適用

【パラメータストア】環境変数設定

DB接続情報の作成

【AMI】APサーバーイメージ作成

APサーバー構築(1)(手動)

【EC2】APサーバー作成(2)

APサーバー構築(2)(手動)

Terraform(メタ引数)

メタ引数とは
リソース依存定義(depends_on)
複数リソース生成(count)
複数リソース生成(for_each)
ライフサイクル(lifecycle)

Terraform(リソース依存関係)

リソース依存関係の可視化(概要)
VSCodeプラグインインストール(Graphviz)
リソース依存関係の可視化(演習)

Terraform(ループと分岐)

for文
3項演算子

【ELB】負荷分散設定

ALBの作成
ターゲットグループの作成
リスナーの作成

【Route53】ドメイン設定

[補足] 独自ドメインの取得
Route53ゾーンの作成
Route53レコードの作成
ドメインサービス側への登録(手動)

【ACM】証明書の発行/設定

ACMの作成
DNS検証リソースの作成
ドメインの設定と検証(手動)
ELBに証明書設定
バージニアリージョンに作成

【S3】ストレージ作成

S3リソース
一般公開バケット作成
プライベートバケット作成

【CloudFront】キャッシュサーバー設定

CloudFrontリソース
CloudFrontの作成(ELBオリジン)
CloudFrontの作成(S3オリジン)

【EC2】オートスケーリング設定

起動テンプレートのリソース
起動テンプレートの作成
オートスケーリンググループのリソース
オートスケーリンググループの作成

Terraform(モジュール)

モジュールとは
モジュールの定義と利用

【IAM】グループ/ユーザーの作成

ポリシーの作成
グループの作成
PGPとは
ユーザーの作成

おわりに

[補足] 作成した成果物の削除
まとめとこれから

Screenshots

AWS と Terraformで実現するInfrastructure as Code - Screenshot_01AWS と Terraformで実現するInfrastructure as Code - Screenshot_02AWS と Terraformで実現するInfrastructure as Code - Screenshot_03AWS と Terraformで実現するInfrastructure as Code - Screenshot_04

Reviews

英一
March 15, 2023
極めて教育的。コースの内容を見て興味を持ったなら、本コースを受講することによりきっと得るものがあると思う。 2023/03時点で、自分がつまったところは以下 ・自分だけなのかもしれないが、東京リージョンのアベイラビリティゾーン1aをつかうと、EC2やRDSのインスタンスを起動する際、t2.microのインスタンスを確保できず失敗する。はじめから、アベイラビリティゾーン1aではなくアベイラビリティゾーン1dを使うと良いと思う。 ・RDSを起動する際、MySQLのバージョンが8.0.20だと起動できない。マネジメントコンソールのRDSの起動の設定の画面をみるとバージョンの選択欄があり、この選択欄にあるバージョンだとterraformからでも起動できた。 ・RDSにデータを登録する際、EC2上にmysqlクライアントをインストールするのだが、これがうまくいかなかった。代替のインストール手順は、 sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm sudo yum install -y mysql-community-client mysql --version ・証明書の発行/設定の際、お名前.comではなくAWSでドメインを登録している場合、数分以上ACMで証明書のステータスが保留中の検証のままになっていたら、保留中の検証のトラブルのパターンをググって対策を調べること。AWSの読み物にも書かれており、いくつかのケースがあるらしい。 自分の場合は、ネームサーバーの設定がおかしいのが理由だった。 Route S3 > 登録済みドメインでドメイン名を選択して 表示されるネームサーバーと Route S3 > ホストゾーンでドメイン名を選択して 表示されるネームサーバー、つまりNSレコードのネームサーバーが一致しているか確認してみると、一致していなかった。 NSレコードのネームサーバーを登録済みドメインのネームサーバーの追加/編集で設定する必要があった。 コースの動画でお名前.comにネームサーバーを登録するのと同様の作業が必要だった。 そして、 nslookup -type=ns 自分のドメイン NSレコードのネームサーバー nslookup -type=ns 自分のドメイン 8.8.8.8 などして、ネームサーバーに使いたいドメインが登録されたかどうか確認すること。
Tanigawa
January 9, 2023
今後のプロジェクトでTerraformを使用することになりました。初めて使うため、本教材で勉強しましたが、全体通してわかりやすく一通り理解できました。Terraformは最新バージョン(1.3.6)で使用しましたが、S3のバージョニングの記述でエラーになりました。少し構文が変わったようです。公式サイトを見て解決しました。良い教材なので★4つとさせて頂きました。
齊藤勇貴
January 9, 2023
とても分かりやすくてよい内容だったと思います。 途中、app-serverからRDSへの接続設定を入力しないとエラーで詰む場面がありますが、そちらはレクチャーに出てこないので自力で解決する必要があります。 ある程度知識のある人なら解決できると思います。
tina
December 16, 2022
とても丁寧ですし、awsで作るwebアプリの講座がとてもよかったので、こちらも受講しました。 ただ、今回の講座に関しては、もう一歩踏み込んだ説明があるとより満足でした。 なぜそのコードを書いているのか、どこを参照してそのコードを書いているのか、という説明が多々省かれていた印象。 もう少々かゆいところに手が届く説明が、講義とは別にコード入力中にも欲しかった。 別の方のterraform講義を受けた際とてもアタマに残りやすかったのが、 最初講義も行うが、その後の演習時にもそのコードを何の為にやるのか入力しながら口頭説明をされていたものです。 講義は見てるだけなので、コード入力中にも再度口頭説明をしていただくほうが圧倒的にわかりやすいと感じました。 ただ、講義の項目は基本が網羅されており、話しのペースも丁度よく、わかりやすく伝えようとする姿勢がとても伝わってきたので、 新たなterraform講座が出た際は必ず購入させていただくと思います。
博史
November 29, 2022
標準的な3層構成アーキテクチャをterraformで構築するというメインのストーリーも勿論素晴らしいが、関連するドメイン作成や踏み台サーバ等まで懇切丁寧に説明されているのがありがたい。会社のメンバーにすすめます!
N
October 28, 2022
インフラのコード管理というものをイメージできたので受講してよかったです。AWSで作るWEBアプリケーション 実践講座のほうを先に受講していたので作るもののイメージもできていたし、交互に見て復習しながら進める形にしたので理解しやすかったです。
みっち
October 17, 2022
全くの未経験状態からでも、Terraformを使って現環境を設計しなおしてみようと思える程度に理解は進む。 AWSの基礎レベルは慣れていることが前提の内容となっており、汎用的な内容であるがゆえに、使ったことのない機能については、何をやっているか理解が追い付かないなと感じた。
tomo
September 30, 2022
Terraformの基礎的な使い方を一通り学べます。 ベストプラクティス的なことは学べませんが、まずはTerraformに触れることが大事かと思いますので、Terraform初学者の方に是非オススメしたいです。
Hiro
September 13, 2022
新しい業務を始めるにあたり、Terraformの知識が必要で講座を受講させて頂きました。全体を通して大変分かりやすい説明でTerraformの構築イメージを持つことが出来ました。改めて復習を行い、講座で得た知識を新しい現場で活用させて頂きたいと思います。
藤森健太
August 11, 2022
AWSを学習していない人は、まずそちらを学習してから出ないとAWSやコード自体の説明が少ないので、こちらの講座は理解できないと思う。 逆に、AWSの学習が完了しており、terraformを用いて実践的なインフラを構築してみたい人にはおすすめできる。
Makoto
June 24, 2022
■ 総評 terraform初学習の人にはおすすめです。 大きな問題も無く終えることができました ■ 良い点 教材として非常によく出来ていると思います AWSの基本的なリソースを1つのアーキテクチャ構築という目的の中で綺麗に完結させてます。 何かエラーが出たとしても各講座の添付ファイルに正答も載っているため、答え合わせがし易い。 また、最悪は添付ファイルを使って進められる ■ 良くしてほしい点 terraformのバージョンが古い。 古いのは講座作成時期依存のため仕方ない一方、「v1.x.xでもここまでのバージョンまでなら動きます」等の情報が欲しかった。(できれば新しいバージョンで学習したいため) 実際v.1.2.3にて少し変えればエラーなどせずに動作した 問い合わせのレスポンスが遅い部分が有る様に見えた。 1ヶ月以上放置するのであれば「確認中です」等の反応は見せたほうが良い
富之
May 15, 2022
まだ途中までなので、終わったら更新しますが 受講したところまで(セクション5まで完了)だと構成がいまいちで、理解しにくい印象です。 当方、AWSとTerraform全く使ったことないので、 スキルレベル中級となっているので、少し使ったことがる人ならば、妥当な構成なのかもしれません。
大沼正直
January 29, 2022
内容や資料についてはまとまっていて見やすいし説明もわかりやすいが 問い合わせの時の対応が良くなかった。 対応へのレスポンスに大体1週間程度かかり内容も良く的を得ない回答ばかり 間違い箇所について指摘してもそれについては保留にされて今も回答なし。 27日程度経過しているが原因について解決できず時間と料金だけ浪費してしまった。
yuGot_
January 10, 2022
今回目的とするクラウドサービスではありませんが、Terraformの習得として本講座を受講させていただいております。 Terraform自体の開発スピードに関する注意点と、バージョン管理、ドキュメントの見方についてもカバーしてくださったので今後AWS以外のプロバイダーになっても、対応できそうな感覚がしております。
岩﨑
August 23, 2021
会社でAWS・Terraformを利用していくプロジェクトが立ち上がった際に、こちらの講座を受講させていただき、Terraformの基礎知識を身につけられたのでプロジェクトで大いに役に立てることができました。 有益な講座を提供していただきありがとうございました。

Charts

Price

AWS と Terraformで実現するInfrastructure as Code - Price chart

Rating

AWS と Terraformで実現するInfrastructure as Code - Ratings chart

Enrollment distribution

AWS と Terraformで実現するInfrastructure as Code - Distribution chart
3747522
udemy ID
1/4/2021
course created date
3/3/2021
course indexed date
Bot
course submited by