無制限ストレージ with ownCloud and Amazon S3

# はじめに

【宣伝】ここらへんの情報が詳しく掲載されたownCloud本が出版されました！
https://owncloud.jp/contacts/book

![ownCloudセキュアストレージ構築ガイド（Think IT Books）](https://owncloud.jp/wp-content/uploads/2016/11/1116101066-520x-235x300.jpg)

*** 

以前紹介した[ownCloudとAmazon S3の連携](http://qiita.com/ukitiyan/items/896c99b6ff0d24c82e45)について、素晴らしい記事がありましたので、本人の同意を得て翻訳させて貰いました。

***

# 無制限ストレージ with ownCloud and Amazon S3
自分でコントロールできて無制限・安価・冗長化の高いストレージといったら、Amazon S3でしょう。
オープンソースのプロダクトであるownCloudは、Amazon S3と簡単に接続することができます。

***

ownCloudは、PCやモバイルデバイスでどこにいても、Web経由で自身のファイルにユニバーサルアクセスできます。
また、Web上での基本的な閲覧・編集や、デバイス間での連絡先、カレンダー、ブックマークを同期するプラットフォームを搭載しています。

そんな魅力的なownCloudをAWS Marketplaceで簡単にインストールすることが可能です。
このインストーラは、[株式会社Stylez](http://owncloud.jp/)によってパッケージングされています。

***

以下の記事では、あなた自身のAWSアカウントでownCloudを設定し、Amazon S3の無制限かつ安価なストレージに接続する方法を紹介します。

## 前提条件
 * AWSのアカウントを取得していること
 * EC2のキーペアを取得していること

***

## ownCloudのセットアップ
 [ownCloud powered by owncloud.jp](https://aws.amazon.com/marketplace/pp/B00F8I7IXG/ref=srh_res_product_title?ie=UTF8&sr=0-3&qid=1380794974138) にアクセスしてください。
（画面はアカウントによって多少の違いがあります）

***

 1. Regionを選択します。
 2. インスタンスタイプを選択します。インスタンスタイプは大きいタイプを選択するほどパフォーマンスが高くなります。ownCloudは無料ですが、EC2は時間ごとに課金されます。価格については、画面右の表を参照してください。動作検証にはFree Tier のt1.microを選択してください。インスタンスタイプは後から変更可能です。
 3.サーバにSSH接続が必要な場合は、鍵ペアを選択します。

***

 4.Launch をクリックします。

![skitch.12.png](https://qiita-image-store.s3.amazonaws.com/0/39596/c7321009-f550-26d3-ba95-d592c075cbf8.png "skitch.12.png")

***

数分後、インスタンスが起動し、ownCloudがインストールされます。以下のいずれかでownCloudにアクセスするためのURLを確認してください。

 * software subscribtions page を確認し、“access software”をクリックします。
 * EC2ダッシュボードのインスタンス画面からPUBLIC DNSを確認してください。（上記で選択したReagionであることを確認してください。）

***

ブラウザにてURLにアクセスすると、以下のownCloudのダッシュボードが表示されます。
![skitch.10.png](https://qiita-image-store.s3.amazonaws.com/0/39596/d07357cf-2d94-657e-2ffb-bc667c35f5ee.png "skitch.10.png")

***

 * この時点でadminユーザのパスワードが設定されています。再度ログインするためにパスワードを以下の方法で確認しておいてください。（ユーザ管理から新しい管理者ユーザを作成することで以下の作業は不要です。）

***

 1.EC2ダッシュボードのインスタンス画面から対象のインスタンスを[右クリック]->[Instance Settings]->[Get System Log]を選択します。
![skitch.55.png](https://qiita-image-store.s3.amazonaws.com/0/39596/f7192776-a464-879c-6f99-72f9fe38a8c3.png "skitch.55.png")

 2.ログウィンドウに表示される[owncloud admin password]の内容が初期パスワードです。
![skitch.54.png](https://qiita-image-store.s3.amazonaws.com/0/39596/4bfb54f1-e53f-1423-8f34-bb5252a69be6.png "skitch.54.png")

***

## AmazonS3 と ownCloudの連携
ownCloudを起動したので、無制限の安価で信頼性の高いストレージであるAmazon S3 との連携を行います。

***

### S3 bucketの作成
S3コンソールに移動し、「Create bucket」をクリックします。
![skitch.6.png](https://qiita-image-store.s3.amazonaws.com/0/39596/0ea1447b-1f56-42fa-f832-798a4e69156f.png "skitch.6.png")

***

### IAM権限のセットアップ
上記bucketのみにアクセス可能なIAMユーザを作成します。
IAMダッシュボードに移動し、「Create New User」をクリックします。
![skitch.9.png](https://qiita-image-store.s3.amazonaws.com/0/39596/d61d25a5-b021-ecf0-b245-89f4d44047be.png "skitch.9.png")

***

ダウンロードしたAccess Key IDとSecret Access Keyが記載されているCSVを安全に保管しておいてください。後ほど利用します。
![skitch.8.png](https://qiita-image-store.s3.amazonaws.com/0/39596/e3277480-346e-7caf-7f7a-966cb2c5ac34.png "skitch.8.png")

***

次にユーザの Permissions タブの「Attach User Policy」をクリックし、アクセス権を定義します。 
「S3 full access」を選択してください。
![skitch.7.png](https://qiita-image-store.s3.amazonaws.com/0/39596/d51fd520-a3f3-e6dc-bfee-cfe48eeda95f.png "skitch.7.png")

***

![skitch.13.png](https://qiita-image-store.s3.amazonaws.com/0/39596/aad7b13f-0083-1596-4a8a-1243e8122244.png "skitch.13.png")

![skitch.4.png](https://qiita-image-store.s3.amazonaws.com/0/39596/2bc54e17-c6da-ab32-7fb4-e37a07ff3988.png "skitch.4.png")

***

このままでは、すべてのS3にアクセス許可が与えられているので、もう少し詳細な設定として、上記で作成したbucketのみアクセス許可を付与するようにしましょう。
次の内容とおりポリシーを変更します。

```
{
  "Statement": [
    {
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::demo-owncloud","arn:aws:s3:::demo-owncloud/*"]
    }
  ]
}
```

***

### ownCloudのセットアップ
まずownCloud内左下に「＋アプリ」ボタンをクリックし、「External storage support」を有効にします。

![skitch.3.png](https://qiita-image-store.s3.amazonaws.com/0/39596/c9774dc3-3172-ea31-abfd-37636a745364.png "skitch.3.png")

***

その後、管理ページに移動し、「External Storage」セクションにて「ストレージの追加」プルダウンメニューから「Amazon S3」を選択します。
![skitch.2.png](https://qiita-image-store.s3.amazonaws.com/0/39596/6f77f7b4-2f73-5f61-0543-e2c9a27a1018.png "skitch.2.png")

***

 * フォルダ名：任意の名称を設定します。
 * Access Key：上記で作成したIAMユーザーのAccess Key IDを入力してください
 * Secret Key：上記で作成したIAMユーザーのSecret Access Keyを入力してください
 * Bucket：上記で作成したBucket名を入力します（例：demo-owncloud）
 * Region：Bucketを作成したRegionを選択します。 例えば、東京では「ap-northeast-1」となります。
 * 適用範囲：この機能を公開するユーザーを設定します。

***

では、ownCloudからS3にドキュメントがアップロードできるか確認します。
![skitch.1.png](https://qiita-image-store.s3.amazonaws.com/0/39596/bc6e29e4-ee0e-d82c-c485-46c9e04dd8bc.png "skitch.1.png")

***

実際にS3にドキュメントが存在するか確認します。
![skitch.png](https://qiita-image-store.s3.amazonaws.com/0/39596/fe9fcb3e-b8b2-7832-ada7-7fb3c2e031eb.png "skitch.png")

上記で完了です。

***

自身で管理されたownCloudからアップロードしたドキュメントが、安全かつ確実にS3に保存されました。
東京リージョンでは、GBで3.4円という低い価格でトリプルミラーのストレージに保管されることになります。

***

## その他
ownCloudのその他設定や、権限変更については、[ownCloudのホームページ](http://owncloud.org/)を確認してください。
[日本語フォーラム](http://owncloud.jp/forum/)もあるので活用してください。

***

# 更新履歴

* 2015/01/27 v7.0.3 からデプロイ後、adminパスワードが自動付与されるようになったので、adminパスワードの確認方法を追記しました。
* 2016/06/26 Qiitaスライドモードに対応してみました
* 2017/01/04 すみません。[ownCloudセキュアストレージ構築ガイド](https://owncloud.jp/contacts/book)の宣伝を追記しました。