Synology NASのバックアップをAWSにとってみた

# はじめに
現在私はストレージ製品の設計開発に携わっており、個別のエンプラ系のお客様のSIにも関わることがあるのですが、エンプラ系の大抵のお客様は何らかの形でオンラインストレージのバックアップを持つことになります。

そんなお客様のバックアップに対する意識の高さを目の当たりにして、私の自宅にあるNASもバックアップを取ったほうがいいのでは…？と思い至った訳ですが、でもNAS筐体2台持つのはいやだな…とも思ってしまうわけで、そうするとクラウドへのバックアップが視野に入ってきます。

クラウドといえばAWSということで、今回はAmazon AWS S3に自宅NASのバックアップを取った際の設定方法を備忘録として残そうと思います。

### 使用しているNAS装置
- Synology DS416Slim
    - 小さい筐体だが、2.5インチSSDベイを4つ搭載できる
    - 小さくてかわいいね
![IMG_0131.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/35b70314-ed3c-e2bb-9fb3-190175971c2b.jpeg)


# 構成
- 以下のような構成をとることとした
    - Synologyストレージにバンドルされている"Hyper Backup"アプリを使用して、S3にNASデータのバックアップを転送
    - S3のライフサイクルルールを使用して、最新の非現行バージョン以外のバージョンをGlacierに移行
![ATE_zu_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/4bac94a0-80ce-dcec-2498-3a10a11e08a8.png)


# 設定手順
### 手順の概要
全部で4ステップになった
- 1, [AWS側]IAMユーザーの作成
- 2, [AWS側]S3バケットの作成
- 3, [自宅側]Hyper Backupの設定
- 4, [AWS側]S3ライフサイクルルールの作成

### 手順詳細
##### 1, [AWS側]IAMユーザーの作成
- (1) ユーザーの作成ボタンを押す
    - 赤枠のボタンをおす！
    ![スクリーンショット 2024-03-17 171710.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/fcad585d-0f34-355d-6489-fdee8166a7b3.png)

- (2) ユーザー名を入力
    - 流行りのカッコいい名前を付けましょう(そんなことよりもわかりやすい名前が重要です)
![スクリーンショット 2024-03-17 171843.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/488f33d8-26ca-e5c8-f986-f7c85c796978.png)


- (3) ポリシーのアタッチ
    - 今回は"ポリシーを直接アタッチする"方法を選択しました
        - S3FullAccessを選択
        ![スクリーンショット 2024-03-17 171956.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/9cc6f68f-5784-e890-f370-d6495dba3c7b.png)

- (4) 設定を確認して作成
    - 最後に右下の"ユーザーの作成"ボタンを押すと、IAMユーザーの作成が完了します
![スクリーンショット 2024-03-17 172057.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/1619509c-ea81-c979-9276-9bcad7e8a93c.png)



##### 2, [AWS側]S3バケットの作成
- (1) "バケットを作成"ボタンを押す
![スクリーンショット 2024-03-17 174413.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/ec96a2ea-53a5-89f3-81c4-26ea1d1fd480.png)

- (2) バケット名を入力し、バケットの各種設定を選択
    - バケット名の入力が必須ですが、それ以外にもいくつか設定項目があります。
        - **AWSリージョン**：自分のおうちに一番近いところが低レイテンシーで良いよね
        - **バケットタイプ**：基本的に汎用を選んでおけば大半のケースで問題ない
        - **タグ付与**：管理のためのタグを付与することができます
        - **デフォルトの暗号化**：暗号化の方式を選択します
![スクリーンショット 2024-03-17 174505.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/cb1ad35e-4cb7-eb91-3324-4d0e052199d9.png)
![スクリーンショット 2024-03-17 174553.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/44ae978b-99e9-2a00-adb4-5de3a6ab46f7.png)
- (3) 設定がすべて終わったら、右下の"バケットの作成"ボタンを押せば、作成が完了します

##### 3, [自宅側]Hyper Backupの設定
次に、自宅NAS側でHyper Backupの設定を行います。
SynologyのNASは自前の管理コンソール(GUI)を持っていて、ブラウザからアクセス可能となっています
- (1) アクセスキーの作成
    - まずはAWS側でアクセスキーを作成します。AWSのベストプラクティスと比較するとあまり推奨された方法ではありませんが、Hyper Backupと連携する上では、現状これ以外のやり方がありません
    - "アクセスキーを作成"のリンクをクリックします
    ![スクリーンショット 2024-03-17 172144.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/3013c8ea-57b9-d229-9e7d-d42efb9da38c.png)
    - 次のページで、"AWSの外部で実行されるアプリケーション"を選択します
        - このようなページが用意されている時点で、単純なアクセスキーを用いた認証がいかに推奨されていないかがよくわかりますね…
![スクリーンショット 2024-03-17 174111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/61054784-a0d4-48a1-f751-10c68e88b529.png)
    -このページの次のページで、アクセスキーとシークレットキーのペアが表示されるので、忘れずにメモします。特にシークレットキーの表示は一度きりなので、忘れずにメモしてください

- (2) バックアップ先の作成
    - Synologyの管理コンソール側に移動します
        - パッケージセンターからHyper Backupを選択し、バックアップ対象としてAmazon S3を選択すると、この画面になります
            - 作成済のバケット、IAMユーザーのアクセスキーとシークレットキーを入力します
            ![スクリーンショット 2024-03-17 175235.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/be901a00-f6c0-1350-cfc3-7ce385876536.png)

- (3) バックアップ対象の選択
    - 今回は"pics"フォルダを選択します
![スクリーンショット 2024-03-17 175441.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/efe8540a-c3c6-3292-a3f8-d74ac784fa66.png)

- (4) バックアップ設定
    - 各種バックアップ設定をします。以下のような設定項目があります
        - データ圧縮の有無
        - 転送データ暗号化(DIFE)の有無
        - バックアップの開始時間・頻度
        - 整合性チェックの開始時間・頻度

![スクリーンショット 2024-03-17 175616.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/80ab66fa-cfc3-b58f-227f-d1e0accecc8b.png)
- (5) ローテーション設定
    - バックアップデータのローテーション設定をします
        - これを設定すると、NAS側から一定以上古くなった旧バージョンのバックアップデータを削除してくれるはず(そうだといいな)
        ![スクリーンショット 2024-03-17 175734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/75ef4de7-a995-9210-fdfa-6461f3eaa2e4.png)
- (6) バックアップ開始
    - "(5) ローテーション設定"まで終わると、今すぐバックアップするかどうか聞いてくるので、とりあえずやってみる
    ![スクリーンショット 2024-03-17 175734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/1b319dff-0eb1-0d2c-9b29-9b152fdb4a7b.png)

    - 成功
        ![スクリーンショット 2024-03-17 222238.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/a94545f6-5ac4-38a8-947f-48e0c4ba8022.png)


##### 4, [AWS側]S3ライフサイクルルールの作成
せっかくなので古くなったバックアップを、より安価な格納場所にTieringすることにする
- (1) バケットの管理タブで"ライフサイクルルールを作成する"ボタンをクリック
    - 赤枠の部分が2か所ありますが、どちらを押しても同じ画面に遷移します
![scr_lcr001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/3f189a10-0735-6bcb-79a2-024e50bc9899.png)

- (2) 各種設定項目を入力
    - 次に各種設定項目を入力、選択します
        - **ライフサイクルルール名**：255文字以内のカッコいい名前を付けます
        - **ルールスコープを選択**：以下2つの内、いずれかを選択する
            - 1つ以上のフィルターを使用してこのルールのスコープを制限する
            - バケット内のすべてのオブジェクトに適用
        - **フィルタータイプ**：ルールスコープで、"1つ以上のフィルターを使用してこのルールのスコープを制限する"を選択すると、設定が必要になる
        - **ライフサイクルルールのアクション**： どのバージョンにどのようなアクションを適用するかを選択する
![scr_lcr002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/3c569843-9777-bc9a-4d44-943e7c26a004.png)


- (3) "ルールの作成"ボタンを押す
![scr_lcr003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3741295/b634a32d-611d-4130-23bb-1b0fa7a55f3f.png)



    - ライフサイクルルールが出来上がった。これで全工程完了。

# 思うこと
- 設定は簡単でいいね
- セキュリティ面：Synology側に、アクセスキーとシークレットキーをベタ打ちする選択肢しかなさそうなのが何とかできないかな…という感じはする。IAM Roles Anywhereが使えるように証明書交換に対応できるようになるとなおよし