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を超えると、課金が発生するのでご注意ください。
詳細については公式サイトでご確認ください。
AWS S3のEC2へのマウントには、有償ソフトウェア「TntDrive」を使用しました。
30日の無料お試し期間がありますが、引き続き利用するには購入が必要です。
価格は商用利用で$59.95(USD)です。
S3にバケットを作成
AWSの管理コンソールからS3を選択して、[バケットの作成]をクリックします。
バケット名を入力します。
バケットへのアクセスを記録する場合は[ログ記録のセットアップ]をクリックします。
「有効」にチェックが入っていることを確認して[作成]をクリックします。
バケットが作成されます。
バケットの利用ユーザーを作成
作成したバケットを利用できるユーザーを作成します。
AWSの管理コンソールから、IAMのダッシュボードを表示して、サイドバーから[ユーザー]をクリックします。
[新規ユーザーの作成]をクリックして、ユーザー名を入力します。
アクセスキーが必要なので、[ユーザーごとにアクセスキーを生成]にチェックを入れたまま、[作成]をクリックします。
[ユーザーのセキュリティ認証情報を表示]をクリックして認証情報を確認します。
[認証情報のダウンロード]をクリックしてファイルを保存しておきましょう。
後で、S3をマウントする時に参照します。
利用ユーザーにアクセス権限付与
作成したユーザーをクリックします。
[アクセス許可]タブの[ポリシーのアタッチ]をクリックします。
「AmazonS3FullAccess」を選択して[ポリシーのアタッチ]をクリックします。
これでバッケトを使用できるユーザーができました。
TntDriveのインストール
次のサイトからインストーラーをダウンロードします。
リモートデスクトップから、インストーラーをサーバーにコピー&ペーストします。
コピペが完了したらインストーラーを起動します。
インストール先を入力します。デフォルトのままで大丈夫です。
[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)に見合う価値はあると思いました。