AWSを触ってみる【EC2】
はじめに
AWSが提供する学習プラットフォームAWS Skill Builderの学習プランが11/2まで無料で急ぎでやってみたので学んだことをまとめます。
実際にAWSコンソールを開きながら進められるのでおすすめです。
※自分はAWSを業務で若干しか触ったことないレベルなのでほぼ初心者です。
EC2とは
EC2(Amazon Elastic Compute Cloud)とは、AWSが提供する、クラウド上で仮想サーバーを構築・実行できるサービスです。
EC2の用途
以下のような幅広い用途に利用されています。
- WebサイトやWebアプリケーションのホスティング
- バックエンドAPIの実行環境
- データベース運用
- バッチ処理や機械学習の実行環境
実際にはEC2にDockerをインストールし、アプリケーションやデータベースをコンテナ化して実行する構成がよく使われています。
EC2の特徴、メリット
必要なときに必要なリソースを簡単に用意できる
物理サーバーを購入・設置する必要はなく、ブラウザ上でCPU・メモリ・ディスク・OSなどを選ぶだけで、数分で仮想サーバーを起動できます。
柔軟なスペック変更
CPU・メモリ・ストレージなどは後から簡単に変更可能。
アクセス量や処理負荷に応じてスケールアップ/スケールダウンできます。
従量課金制
使った分だけ料金が発生するため、初期費用を抑えつつ小さく始められます。
EC2インスタンスとは
EC2サービス上で実際に稼働している仮想サーバー「そのもの」。1台1台のことを指します。
EC2を構築する
構築手順
※Skill Builderのタスクに従うため省略しています。
-
AWSマネジメントコンソールから「EC2」を検索し、「インスタンスを起動」をクリック
-
設定をする。主に以下の情報を設定します。
- 名前
- Amazon マシンイメージ(AMI)を選択
- インスタンスタイプを選択
- キーペアの設定(インスタンスにログインする場合に必要)
- ネットワーク設定
- ストレージを設定
以下で抜粋して詳細を説明しています。
- 「インスタンスを起動」をクリック
Amazon マシンイメージ(AMI)とは
AMI(Amazon Machine Image) は、EC2インスタンスの「中身」を決めるテンプレートです。
インスタンスを起動する際に、どんなOSやソフトを入れるかをこのAMIで指定します。
AMIには以下のような情報が含まれます。
- オペレーティングシステム(OS)
- アプリケーションサーバー(例:Apache、Nginx など)
- アプリケーションや設定
AMIは、AWS公式・ユーザーコミュニティ・AWS Marketplace提供のものを選ぶか、自分で設定したサーバーをカスタムAMIとして保存して再利用することもできます。
インスタンスタイプとは
インスタンスタイプ は、EC2インスタンスの「性能・スペック(ハードウェア構成)」を選ぶものです。
CPU・メモリ・ストレージ・ネットワーク性能の組み合わせがあらかじめ定義されており、用途に応じて最適なタイプを選択します。
- CPU
- メモリ容量
- ネットワーク性能
- ストレージ構成
ネットワークの設定
インスタンスを起動する際には、まず どの仮想ネットワーク(VPC)とサブネットに配置するか を指定します。
続いてセキュリティグループを選択します。
セキュリティグループは、インスタンス単位で適用できる仮想ファイアウォールです。
インスタンスへの インバウンド(受信) と アウトバウンド(送信) の通信を制御します。
許可する通信は、以下の項目を組み合わせてルールとして定義します。
- タイプ(例:SSH、HTTP、HTTPS、カスタムTCPなど)
- プロトコル(TCP / UDP / ICMP など通信方式)
- ポート範囲(例:22, 80, 443)
セキュリティグループの比較
ストレージの設定
Amazon EC2 では、Elastic Block Store と呼ばれる、ネットワークに接続された仮想ディスクにデータが保存されます。
インスタンス作成時に付与されるディスクを「ルートボリューム」と呼びます。
ユーザーデータ(起動時スクリプト)
EC2インスタンスを起動するときに、シェルスクリプトやクラウド設定ファイルを渡すことで、起動直後に自動的に実行させることができます。
インフラの初期設定を手作業で行う代わりに、自動化できるのが特徴です。
構築については以上です!
インスタンスをモニタリングする
インスタンスの状態や起動時の処理内容を確認したいときは、システムログを取得します。
起動エラーやユーザーデータスクリプトの実行状況を確認する際にも便利です。
システムログを取得する方法
アクション>モニタリングとタラブルシューティング>システムログを取得
Amazon EC2 インスタンスのシステムログコンソール出力
セキュリティグループを更新する
インスタンスにアクセスできる通信を変更したい場合は、セキュリティグループのインバウンドルールを編集します。
セキュリティグループ>編集したいセキュリティグループを選択>インバウンドルールを編集
例:
- Amazon EC2 インスタンスへの HTTP トラフィックを許可するようセキュリティグループを変更
インスタンスサイズを変更する
使っていくにつれてインスタンスの使用率が高すぎたり、低すぎたりした場合、最適なインスタンスタイプに変更することができます。同様に、EBS ボリュームのサイズも変更できます。
例:
- インスタンスタイプを t3.micro から t3.small に変更
- ルートディスクボリュームを 8 GiB から 10 GiB に変更
変更前にインスタンスを停止する
インスタンスサイズを変更する前に停止する必要があります。
インスタンスタイプを変更する
インスタンスの設定>インスタンスタイプを変更
新しいインスタンスタイプを選択>インスタンスタイプを変更
EBSボリュームのサイズを変更する
ボリューム>変更したいボリュームを選択>アクション>ボリュームの変更
サイズを修正して変更
サイズが変更されたインスタンスを起動する
インスタンス>インスタンスの状態>インスタンスを開始
終了保護の設定
不要になったインスタンスは消去できます。一度終了したインスタンスを再接続したり再起動したりすることはできません。
意図せずインスタンスの終了をしないように保護することができます。
インスタンスを起動>インスタンスの作成時の設定で「高度な詳細」>終了保護を「有効化」に設定
インスタンスの状態>インスタンスを終了(削除)したときにエラーが発生し、終了に失敗=意図しない終了を防止できます。
インスタンスを終了したい場合
アクション>インスタンスの設定>終了保護を変更
有効化を外す>保存
再びインスタンスの状態>インスタンスを終了(削除)
したときに正常に終了しました。
まとめ
また、EC2と比較されるサービスとして、インフラ管理を不要にできる Fargate や、イベント駆動でコードを実行できる Lambdaなどの特徴も調べてみたいと思います。
とりあえず、次回はAWS Skill Builder でS3を学習します^^
Discussion