AWS S3をEC2にマウントしてRedmineの添付ファイルを保存する方法

Redmineの始め方

AWSには「S3(Simple Storage Service)」というストレージサービスがあります。
このS3をEC2にマウントして、Redmineの添付ファイルを保存する方法を紹介します。

環境
・EC2インスタンス:Windows Server 2012 R2
・S3バケット
・マウントツール:TntDrive 3.9.7(x64) Trial Version
・BTS/ITS:Bitnami Redmine Stack 3.3.0-1

 

AWS S3では「バケット」を作成して、ファイルを格納します。
格納できるファイルは、一つにつき最大5TBまでで数に制限はありません。
但し、使用量が無料利用枠の5GBを超えると、課金が発生するのでご注意ください。
詳細については公式サイトでご確認ください。

よくある質問 - Amazon S3 |AWS

 

AWS S3のEC2へのマウントには、有償ソフトウェア「TntDrive」を使用しました。
30日の無料お試し期間がありますが、引き続き利用するには購入が必要です。
価格は商用利用で$59.95(USD)です。

S3 Drive. Mount Amazon S3 Bucket as a Windows Drive. Map Amazon S3 Bucket. Mount S3 Drive. Amazon S3 Disk.
TntDrive allows you to mount (map) Amazon S3 Buckets as Network Drive under Windows.

 

スポンサーリンク

S3にバケットを作成

AWSの管理コンソールからS3を選択して、[バケットの作成]をクリックします。

 

バケット名を入力します。
バケットへのアクセスを記録する場合は[ログ記録のセットアップ]をクリックします。

 

「有効」にチェックが入っていることを確認して[作成]をクリックします。

 

バケットが作成されます。

 

バケットの利用ユーザーを作成

作成したバケットを利用できるユーザーを作成します。
AWSの管理コンソールから、IAMのダッシュボードを表示して、サイドバーから[ユーザー]をクリックします。

 

[新規ユーザーの作成]をクリックして、ユーザー名を入力します。
アクセスキーが必要なので、[ユーザーごとにアクセスキーを生成]にチェックを入れたまま、[作成]をクリックします。

 

[ユーザーのセキュリティ認証情報を表示]をクリックして認証情報を確認します。

 

[認証情報のダウンロード]をクリックしてファイルを保存しておきましょう。
後で、S3をマウントする時に参照します。

 

利用ユーザーにアクセス権限付与

作成したユーザーをクリックします。

 

[アクセス許可]タブの[ポリシーのアタッチ]をクリックします。

 

「AmazonS3FullAccess」を選択して[ポリシーのアタッチ]をクリックします。

 

これでバッケトを使用できるユーザーができました。

 

TntDriveのインストール

次のサイトからインストーラーをダウンロードします。

Download TntDrive. Download TntDrive to Mount S3 Bucket as Windows Drive!
TntDrive download page. Download TntDrive to mount s3 bucket as windows drive.

リモートデスクトップから、インストーラーをサーバーにコピー&ペーストします。
コピペが完了したらインストーラーを起動します。

 

インストール先を入力します。デフォルトのままで大丈夫です。

 

[Create a desktop icon]にチェックを入れて[Next >]をクリックします。
インストールが開始されます。

 

[Finish]をクリックしてインストールを完了します。
サーバーが再起動するので、再起動してもよい状態でクリックしてください。

 

S3バケットのマウント

少し待って、再度、サーバーにリモートデスクトップで接続します。
デスクトップに作成されたアイコンから、TntDriveを起動します。

 

さきほどダウンロードしておいたファイルを参照して、Access Key IDとSecret Access Keyを入力します。

少し不具合っぽいのですが、指定するドライブレターによっては、2つ設定されたりします。
Eドライブを指定すると、DドライブとEドライブにマウントされました。どちらも普通に使えそうでしたが(^^;)

入力が終わったら、[Add new drive]をクリックします。

 

エクスプローラーで確認すると、Dドライブがマウントされています。

 

S3に作成したバケット「gabby-redmine-attachments」にアクセスできました。

 

添付ファイルの格納先をS3に変更

Redmineの設定を変更します。
Bitnami Redmine Stackの管理コンソールから、サービス一式を停止しておきましょう。

「(Redmineのインストールフォルダ)\apps\redmine\htdocs\config」にある「configuration.yml」をエディタで開きます。

 

「attachments_storage_path」の部分に、マウントしたS3のバケット「D:/gabby-redmine-attachments」を入力して保存します。

# Absolute path to the directory where attachments are stored.
# The default is the 'files' directory in your Redmine instance.
# Your Redmine instance needs to have write permission on this
# directory.
# Examples:
# attachments_storage_path: /var/redmine/files
# attachments_storage_path: D:/redmine/files
attachments_storage_path: D:/gabby-redmine-attachments

 

Bitnami Redmine Stackの管理コンソールから、サービス一式を再起動します。
サービスが起動したら、サーバーでの作業は終了です。

 

実際に格納されるところを確認

実際に、添付ファイルがS3バケットに格納されるか、確認してみます。

チケットにファイルを添付します。

 

リモートデスクトップで接続したサーバーで、エクスプローラーを起動します。
DドライブのS3バケットに「\年\月」フォルダが作成されて、チケットに添付したファイルが格納されていました。

 

まとめ

AWSのEC2でRedmineを運用する場合、S3は添付ファイルの格納先として向いています。
マウントも簡単ですが、使用量が5GBを超えると課金が発生するので、その点だけは注意が必要です。

また、EC2インスタンスにS3バケットをマウントできる「TntDrive」ですが、とても良くできたソフトです。個人的には、価格($39.95)に見合う価値はあると思いました。