AWSエンジニアへの道

自分用記録日記です。

【AWS入門⑥】EBSスナップショットをライフサイクルマネージャーで自動化してみた

はじめに

前回はEBSのスナップショットを手動で作成・復元する方法を試しました。

ryo57.hatenablog.com


「手動で毎回バックアップを取るのは正直めんどくさいだろうな」と思うので、今回は Amazon Data Lifecycle Manager(DLM) を使ってスナップショット作成を自動化してみます。


ライフサイクルマネージャーを開く

EC2メニューの「Elastic Block Store」から ライフサイクルマネージャー を選択します。



「カスタムポリシー」→「EBSスナップショットポリシー」を選んでスタート。


ターゲットリソースを指定する

自動スナップショットを取りたいEBSを指定します。
今回はテスト用に作成した ec2-hello2 を対象にしました。



説明文は分かりやすい名前にしておくと後で管理しやすいです。


スケジュールを設定する

「いつ・どのくらいの頻度でバックアップするか」を決めます。



今回は以下の設定にしました:

  • 頻度:毎日

  • 実行時刻:9:00(UTC

  • 保持数:最新3つまで

これで古いスナップショットは自動的に削除され、ストレージコストを抑えられます。


設定内容を確認

作成前に確認画面が出ます。



問題なければ「ポリシーを作成」をクリック。


ポリシー作成完了!

作成が完了すると一覧に表示されます。



状態が 有効 になっていればOK。
あとは指定したスケジュールでスナップショットが自動作成されます。


まとめ

今回は ライフサイクルマネージャーを使ってスナップショット作成を自動化 しました。

  • 手動でポチポチしなくてもOK

  • 古いスナップショットも自動で削除してくれる

  • コスト最適化にもつながる

前回の記事では少しめんどくささを感じましたが、これが自動化できるのは感動です!

次回は、一区切りとして WordPressをEBS上に構築してみる 予定です。
これまで学んだ「EBSのマウント」「スナップショットの復元」などの知識が全部つながるので、いよいよ本番っぽい環境に挑戦です!


👉 前回の記事はこちら

ryo57.hatenablog.com

👉 次回の記事はこちら
(公開後リンクを更新予定)

【AWS入門⑥】EBSスナップショットからの復元を試してみた

はじめに

前回の記事(【AWS入門⑤】EBSに配置したHTMLをブラウザで表示してみる )では、EBSをNginxのドキュメントルートに設定し、実際に「Hello from EBS」というHTMLをブラウザで確認するところまでやりました。

今回はその続きとして「スナップショットを作成し、そこからEBSを復元する」という流れを試してみました。AWSのEBSスナップショットはバックアップの基本になるので、入門としてぜひ押さえておきたいところです。


1. スナップショットを作成

まずは、既存のEBSボリュームからスナップショットを作成します。

  • ソースボリュームを選択(今回は /data を置いていたEBS)

  • 説明欄には「/data_backup」と入力(日本語は使えなかったので注意!)

  • タグを「ebs-hello-snap」と設定

こうしておくと後で検索しやすくなります。



作成が完了すると、スナップショット一覧に表示されます。




2. スナップショットから新しいEBSを作成

次に、このスナップショットを元に新しいEBSを作成します。

ここで注意点として、EBSは**インスタンスと同じアベイラビリティゾーン(us-east-1b)**に作成する必要があります。

また、スナップショット候補は自動生成されたものも含めて大量に出てきますが、今回はタグ「ebs-hello-snap」で検索して、意図したスナップショットを選択しました。これでタグ付けした意味も生きますね。



作成後、ボリューム一覧に新しいEBSが表示されました。今回は名前を「2」と付けて区別しやすくしました。




3. 復元したEBSをアタッチ

次に、この新しいボリュームをEC2にアタッチします。

  • 既に /dev/sdf を使っていたので、今回は /dev/sdg を指定しました。

アタッチ後に lsblk で確認すると、確かに xvdg として認識されています。




4. マウントして中身を確認

マウント用ディレクト/restore を作成し、復元したEBSをそこにマウントしました。

sudo mkdir /restore
sudo mount /dev/xvdg /restore
ls /restore
cat /restore/index.html

すると、以前配置した index.html がそのまま残っていました!




おわりに

今回は「EBSスナップショットを作成し、そこから新しいボリュームを復元して中身を確認する」ところまでやってみました。

AWSの学習を始めると、どうしてもインスタンスの起動や停止に意識がいきがちですが、実際の運用ではこうしたバックアップ・復元の仕組みがとても大事になります。

次回は、さらに応用として「スナップショットを使った本番置き換え」や「複数EBSの運用」にも触れていければと思います。


👉 前回の記事はこちら

ryo57.hatenablog.com

👉 次回の記事はこちら
(公開後リンクを更新予定)

【AWS入門⑤】EBSに配置したHTMLをブラウザで表示してみる

はじめに

前回の記事【AWS入門④】では、EBSをEC2にアタッチしてマウントし、自動マウントの設定(fstab編集)までを行いました。
👉 【AWS入門④】EC2にEBSを追加してマウントする方法

ryo57.hatenablog.com

今回はその続きとして、EBSに配置したHTMLファイルをブラウザからアクセスして表示させる ところまでを体験していきます。


1. HTMLファイルをEBS上に配置する

まずはEBSに作成したマウントポイント /data にHTMLファイルを置きます。

echo "<h1>Hello from EBS</h1>" | sudo tee /data/index.html
cat /data/index.html

これで /data/index.html が作成されました。


2. Nginxの設定を変更する

EC2にNginxをインストール済みであれば、設定ファイル /etc/nginx/nginx.conf を編集します。
(※Nginxがまだの方は、以前の記事【AWS入門②】を参考にインストールしてください 

👉 【AWS入門②】EC2にWebサーバーを構築してブラウザからアクセスする

ryo57.hatenablog.com

以下の root ディレクティブを /usr/share/nginx/html から /data に変更します。

server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root         /data;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}




3. Nginxを再起動する

設定が正しいかを確認し、Nginxを再起動します。

sudo nginx -t
sudo systemctl restart nginx

 


4. ブラウザでアクセスする

最後に、EC2インスタンスのパブリックIPにブラウザでアクセスします。

EBS上に置いた index.html がブラウザに表示されました!🎉


まとめ

今回はEBSに配置したHTMLファイルを、Nginxを通してブラウザに表示するところまで行いました。

  • /data にHTMLを配置

  • nginx.conf の root を /data に変更

  • Nginxを再起動してブラウザからアクセス

という流れで、EBSを使った簡単なWebサイト配信を体験できました。

👉 次回は、今回作成したEBSをもとに 「スナップショットの取得と復元」 に挑戦します。
EBSの真骨頂は災害対策等で必要になってくる「バックアップと復元」です。
運用で必ず必要になる知識なので、ここでしっかり基礎を固めていきたいと思います。


👉 前回の記事はこちら

ryo57.hatenablog.com

👉 次回の記事はこちら

ryo57.hatenablog.com

【AWS入門④】EC2にEBSを追加してマウントする方法

はじめに

前回の記事では → 👉 【AWS入門③】EBS作成で失敗した話

ryo57.hatenablog.com


EBSの作成に失敗してしまった体験談を共有しました。

今回はそのリベンジとして、EC2インスタンスに新しくEBSボリュームを作成・アタッチし、マウントするまでの流れをまとめます。実際のAWSコンソール画面やターミナルの操作スクショを交えて解説するので、初めての方でも安心して進められます。


ステップ1:EC2インスタンスの作成

まずはEC2インスタンスを新規作成します。
名前は ec2-hello2 としました。

設定は前回と同じ、Amazon Linux 2023、t2.micro、既存のキーペア、既存のセキュリティグループを選択しています。

 


ステップ2:EBSボリュームの作成

次にEBSボリュームを新規作成します。
今回も汎用SSD(gp3)8GBを選択し、アベイラビリティゾーンをインスタンスと同じ us-east-1b に設定しました。

 


ステップ3:EBSをEC2にアタッチ

作成したEBSをインスタンス ec2-hello2 にアタッチします。
バイス名は /dev/sdf を指定しました。

 


ステップ4:EBSを確認

SSHでEC2に接続し、lsblk コマンドでディスクを確認します。
新しく xvdf として認識されているのが確認できます。

 


ステップ5:ファイルシステム作成 & マウント

作成したボリュームに XFS ファイルシステムを作成し、/data ディレクトリを作ってマウントしました。

sudo mkfs -t xfs /dev/xvdf
sudo mkdir /data
sudo mount /dev/xvdf /data
df -h

 


ステップ6:永続化(/etc/fstabの編集)

リブート後も自動でマウントされるように、/etc/fstab にUUIDを追記します。

sudo blkid /dev/xvdf

で取得したUUIDを使って /etc/fstab を編集しました。

最後に以下で反映を確認します。

sudo mount -a
df -h




まとめ

ここまでで、

  • EC2に新しいEBSを作成・アタッチ

  • フォーマットしてマウント

  • /etc/fstabに登録して永続化

まで完了しました!

これでリブートしても自動でマウントされる環境が整いました。追加ストレージを使う準備は完了です。

👉 前回:【AWS入門③】EBS作成で失敗した話

ryo57.hatenablog.com


👉 次回:【AWS入門⑤】EBSに配置したHTMLをブラウザで表示してみる

ryo57.hatenablog.com

 

【AWS入門③】ルートボリュームを削除してしまいインスタンスが起動しなくなった話

はじめに

前回までは、EC2インスタンスを作成してログイン、Nginxをインストールしてブラウザから「Welcome to nginx!」を表示するところまでやりました。
👉 まだ読んでいない方はこちらからどうぞ → 

ryo57.hatenablog.com

 

今回はさらに進んで、EBS(Elastic Block Store)を追加してみる実験をしました。
しかし作業の途中で大きなミスをしてしまい、結果的にインスタンスが起動できなくなりました…。
その経緯と学びを残しておきます。


やったこと

EBSボリュームを作成

まずはEC2コンソールから、新しいEBSボリュームを作成しました。
サイズはお試しで8GB、AZはインスタンスと同じに設定。

 

インスタンスにアタッチ

作成したEBSをインスタンスにアタッチしました。
ただし、このとき本来は /dev/xvdf などを指定すべきだったのですが、間違ってルート用の /dev/xvda にアタッチしてしまいました。

 

インスタンスを起動

アタッチ後にインスタンスを起動すると、最初は「実行中」になりました。
しかし数分後、自動的に「停止中」に変わってしまいました。

 




出たエラー

再度起動を試みても以下のエラーが表示され、インスタンスは起動できませんでした。

Invalid value 'i-xxxxxxxx' for instanceId. Instance does not have a volume attached at root (/dev/xvda)

このメッセージ通り、ルートボリュームが存在しない状態になっていたのです。
実際には不要なボリュームを消したつもりで、本来のルートボリュームを削除してしまっていたことが原因でした。


学んだこと

  • ルートボリュームを削除したらOSごと消えるので、インスタンスは起動できなくなる

  • データ用EBSは /dev/xvdf 以降を使うのが正解

  • 削除や操作をする前に「どのボリュームがルートなのか」を必ず確認する必要がある

  • スナップショットを取っていれば復旧の可能性があった


今後の方針

今回は「EBSを追加する実験」で大きな失敗をしてしまいましたが、逆に強い学びになりました。
次回はインスタンスを再作成し、正しい手順でEBSを追加・マウントして再挑戦します。


👉 前回の記事はこちら

ryo57.hatenablog.com

👉 次回の記事はこちら

ryo57.hatenablog.com

【AWS入門②】EC2にWebサーバーを構築してブラウザからアクセスする

はじめに

前回の記事では、EC2インスタンスを作成しSSHでログインして「Hello World」を出すところまでをやりました。
👉 まだ読んでいない方はこちらからどうぞ → 

ryo57.hatenablog.com

今回はその続きとして、EC2にWebサーバーを構築し、実際にブラウザからアクセスして確認する ことを目標に進めます。


ステップ1:HTTP(80)をセキュリティグループに追加

デフォルトではSSH(22)しか許可されていません。
ブラウザからアクセスできるようにするため、HTTP(80)を全世界から許可します。

セキュリティグループのインバウンドルールにHTTPを追加すると、画面は次のようになります。
SSHとHTTPが並んで表示されていればOKです。




ステップ2:EC2にログインしてNginxをインストール

PowerShellからEC2にログインし、以下のコマンドを実行してNginxをインストール&起動します。

sudo dnf update -y
sudo dnf install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

サービスの状態を確認します。

systemctl status nginx

active (running) となっていれば起動成功です。




ステップ3:ブラウザからアクセス

最後に、AWSコンソールのEC2画面で表示されるパブリックIPv4アドレスをコピーし、
ブラウザで http://<パブリックIP> にアクセスします。

下記のような「Welcome to nginx!」ページが表示されれば成功です。




まとめ

今回の流れを振り返ると:

  1. セキュリティグループにHTTP(80)を追加

  2. EC2にログインしてNginxをインストール&起動

  3. ブラウザからアクセスして「Welcome to nginx!」を確認

これで EC2をWebサーバーとして動かす第一歩 が完了しました!


👉 前回の記事はこちら

ryo57.hatenablog.com

👉 次回の記事はこちら

ryo57.hatenablog.com

 

【AWS入門①】IAMユーザー作成からEC2にログインして「Hello World」を出すまで

はじめに

今回のゴールは、AWSで初めてのEC2インスタンスを起動し、実際にサーバーへログインして「Hello World」を表示することです。
これができれば「AWSでサーバーを立ち上げて操作できる!」という最初の体験を得られます。


ステップ1:IAMユーザーを作成する

今回はすでにAWSアカウントを持っていたため、ルートアカウントでのログイン方法やアカウント作成手順は割愛します
セキュリティの観点から、普段の操作は必ず IAMユーザー を使うのがベストプラクティスです。

ユーザー作成時には必ず
✅「AWS マネジメントコンソールへのユーザーアクセスを提供する」
にチェックを入れ、コンソール用のパスワードを設定しましょう。

もしここを忘れると、後から「セキュリティ認証情報」タブでパスワードを手動で追加しないといけないため、初心者の方は必ずチェックを入れるのがおすすめです。

権限は「AdministratorAccess」を付与し、今回は管理者用ユーザー admin を作成しました。


①IAMユーザー作成

 

②AdministratorAccess付与

 

③作成完了

 

④ログイン成功

 


ステップ2:EC2インスタンスを作成する

次にEC2インスタンスを作成します。名前はわかりやすく ec2-hello としました。

設定内容は以下の通りです。

  • AMIAmazon Linux 2023

  • インスタンスタイプ:t2.micro(無料枠対象)

  • キーペア:新規作成(ec2-hello-key.pem

  • セキュリティグループSSH (22番ポート) を「自分のIP」から許可

これで、外部から安全にSSH接続ができるようになります。

 

インスタンス作成画面

 

②セキュリティグループ設定

 

③起動完了


④実行中状態

 


ステップ3:EC2にSSHでログインする

次に、作成したインスタンスへ接続します。
Windows PowerShellを使って、以下の手順で接続しました。

1) pemファイルの権限を変更

icacls .\ec2-hello-key.pem /inheritance:r
icacls .\ec2-hello-key.pem /grant:r "$($env:USERNAME):(R)"

2) SSHでログイン

ssh -i .\ec2-hello-key.pem ec2-user@<パブリックIP>

初回は「Are you sure you want to continue connecting?」と聞かれるので yes と入力します。

ログインに成功すると、次のように表示されます。

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$

PowerShellでログイン成功画面


ステップ4:「Hello World」を出してみる

ログイン後に以下を実行しました。

echo "Hello World from EC2"

出力:

Hello World from EC2

これで、無事にAWS上のサーバーに入ってコマンドを実行できました 🎉

 

Hello World 出力画面

 


まとめ

👉 次回は、このEC2に Webサーバーをインストールしてブラウザからアクセスできる「Hello World」ページを表示する 流れをやっていきます!


👉 次回の記事はこちら

ryo57.hatenablog.com