AWS: EC2作成時に「ユーザーデータ」を使ってEFSをマウントする方法

はじめまして。はなはだ簡単ですが、自分のためのメモとして作業記録を記事にしてみました。

作業の目的

AWS EC2からユーザーデータを使いEC2インスタンス作成時にEFSをマウントするようにします。ECSなどを使用している際にも参考になると思います。

AWS EFS(Elastic File System)について

AWS クラウドサービスおよびオンプレミスリソースで利用できる、シンプル、スケーラブル、伸縮自在なファイルストレージです。
Amazon Elastic File System (Amazon EC2のファイルストレージサービス) | AWSより

EFSは比較的新しいサービスで、複数のEC2インスタンスからNFSマウントできるディスク装置です。

環境

EC2のOSはAmazon Linuxが前提です。

ユーザーデータについて

EC2のユーザーデータは、「Linux インスタンスの起動時に実行するコマンド」を指定できる項目のことです(ちょっとわかりにくいネーミングですね)。

ユーザーデータの記載場所は下記になります。

  • EC2インスタンスの作成時

  • 既存のEC2インスタンスの変更時

セキュリティグループ

事前にEFSファイルシステムのセキュリティグループで下記のアクセスを許可してください。
FROM: EC2インスタンスのセキュリティグループ
PORT: TCP 2049(NFS)

ユーザーデータ サンプル

以下のスクリプトを「ユーザーデータ」に入力します。

#!/bin/bash

# 変数設定(EFSのIDとマウントするディレクトリパス)
file_system_id_01=fs-12345678
efs_directory=/mnt/efs

# ディレクトリ作成、/etc/fstab編集
mkdir -p $efs_directory
echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab
# マウント
mount -a -t efs defaults

「変数設定」のEFSファイルシステムのIDとマウントするディレクトリパスは、環境に合わせて変更します。

うまくいくと下記のようになります。EFSファイルシステムは最後の行です。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        2.0G   92K  2.0G   1% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
/dev/xvda1      7.8G  2.4G  5.3G  31% /
127.0.0.1:/     8.0E     0  8.0E   0% /mnt/efs

動作しないとき

下記ユーザーデータのログを確認してください。

/var/log/cloud-init-output.log

参考記事

関連記事

AWSマネジメントコンソールからEC2インスタンスの再起動を行う方法(非エンジニア向け)

無料で使えるAWSアカウント用セキュリティ監査ツールの紹介(翻訳)

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

kotetsu75

kotetsu75の書いた記事

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ