ソリューションアーキテクトプロフェッショナルに求められる視点(8/14) 「Mountpoint for Amazon S3 」「S3 マルチリージョンアクセスポイント」

## はじめに
ソリューションアーキテクトに求められる視点を整理してみました。

今回は、**「其の一.Mountpoint for Amazon S3 」「其の二.S3 マルチリージョンアクセスポイント」**　です。実務や試験で、ご参考にして頂けましたら、幸いです。

## 其の一.Mountpoint for Amazon S3 

### **アーキテクトに求められる視点**

Auto Scaling グループ内の Linux Amazon EC2 インスタンス群でサービスをホストしている。
設定ファイルは、S3 標準ストレージを持つ Amazon S3 バケットに保存し、
インスタンスの起動時に各 EC2 インスタンスにダウンロードされる。
EC2インスタンスでは、古い設定情報が使用されることがあり、情報が不正確になる可能性がある。

### **ソリューション**
マウントポイント for Amazon S3 を設定して、設定ファイルを含む S3 バケットをマウント。サービスを更新して、マウントポイントと $3 オブジェクトにアクセスするためのパスを指定。 

https://aws.amazon.com/jp/blogs/news/mountpoint-for-amazon-s3-generally-available-and-ready-for-production-workloads/

Amazon S3はオブジェクトストレージサービスであり、通常はファイルシステムのように直接マウントすることはできません。しかし、Amazon S3をファイルシステムのように扱うためのツールやサービスがいくつか存在します。

Amazon S3をマウントポイントとして使用するためには、**`s3fs-fuse`、AWS Storage Gateway、Rclone**などのツールやサービスを利用することができます。これらのツールを使用することで、Amazon S3をローカルファイルシステムのように操作でき、データの管理やアクセスが容易になります。具体的な要件や環境に応じて、最適な方法を選択してください。

### 1. **s3fs-fuse**
`s3fs-fuse`は、FUSE（Filesystem in Userspace）を使用してAmazon S3バケットをLinuxファイルシステムとしてマウントするオープンソースのツールです。

#### 特徴
- **簡単なセットアップ** 簡単にインストールして設定できます。
- **ファイルシステムのように操作** S3バケットをローカルファイルシステムのように操作できます。
- **セキュリティ** IAMロールやアクセスキーを使用して認証を行います。

#### インストールと設定手順
1. **インストール**
   ```bash
   sudo apt-get update
   sudo apt-get install s3fs
   ```

2. **認証情報の設定**
   - `~/.passwd-s3fs`ファイルにAWSアクセスキーとシークレットキーを保存します。
   ```plaintext
   ACCESS_KEY_ID:SECRET_ACCESS_KEY
   ```
   - ファイルのパーミッションを変更します。
   ```bash
   chmod 600 ~/.passwd-s3fs
   ```

3. **マウント**
   ```bash
   s3fs my-bucket-name /path/to/mountpoint -o passwd_file=~/.passwd-s3fs
   ```

### 2. **AWS Storage Gateway**
AWS Storage Gatewayは、オンプレミスのアプリケーションとAmazon S3を統合するためのハイブリッドクラウドストレージサービスです。ファイルゲートウェイを使用すると、NFSまたはSMBプロトコルを介してAmazon S3にアクセスできます。

#### 特徴
- **ハイブリッドクラウド** オンプレミスとクラウドのストレージを統合できます。
- **プロトコルサポート** NFSおよびSMBプロトコルをサポートします。
- **キャッシュ** ローカルキャッシュを使用してパフォーマンスを向上させます。

#### 設定手順
1. **AWS Management ConsoleでStorage Gatewayを作成**
   - AWS Management Consoleにログインし、Storage Gatewayサービスに移動します。
   - 「Create gateway」をクリックし、ファイルゲートウェイを選択します。

2. **ゲートウェイの設定**
   - ゲートウェイの名前、ホストプラットフォーム（オンプレミスまたはEC2）、キャッシュストレージなどを設定します。

3. **ファイル共有の作成**
   - ゲートウェイが作成されたら、「Create file share」をクリックし、NFSまたはSMBプロトコルを選択します。
   - S3バケットを指定し、ファイル共有を作成します。

4. **マウント**
   - NFSまたはSMBクライアントを使用して、ファイル共有をマウントします。
   ```bash
   # NFSの場合
   sudo mount -t nfs -o vers=4.1 file-gateway-endpoint:/my-share /path/to/mountpoint

   # SMBの場合
   sudo mount -t cifs //file-gateway-endpoint/my-share /path/to/mountpoint -o username=smbuser,password=smbpassword
   ```

### 3. **Rclone**
Rcloneは、クラウドストレージサービス間でデータを同期、バックアップ、転送するためのコマンドラインツールです。Rcloneを使用してAmazon S3をマウントすることもできます。

#### 特徴
- **多機能** データの同期、バックアップ、転送が可能です。
- **クロスプラットフォーム** Linux、Windows、macOSで動作します。
- **セキュリティ** IAMロールやアクセスキーを使用して認証を行います。

#### インストールと設定手順
1. **インストール**
   ```bash
   curl https://rclone.org/install.sh | sudo bash
   ```

2. **設定**
   ```bash
   rclone config
   ```
   - 新しいリモートを追加し、Amazon S3を選択します。
   - 必要な認証情報を入力します。

3. **マウント**
   ```bash
   rclone mount myremote:mybucket /path/to/mountpoint --daemon
   ```


## 其の二.S3 マルチリージョンアクセスポイント


### **アーキテクトに求められる視点**
世界中の顧客にサービスを提供する静的コンテンツ配信プラットフォームを運営。
Amazon S3 バケットからコンテンツを提供。
S3 ファイルゲートウェイを使用して、オンプレミス環境から S3 バケットにコンテンツをアップロード。
顧客に地理的に最も近い AWS リージョンからコンテンツを提供することで、プラットフォームのパフォーマンスと信頼性を向上したい。
オンプレミスのデータを、最小限のレイテンシーで、パブリックインターネットに公開することなく、Amazon S3 にルーティングしたい。

### **ソリューション**

S3 マルチリージョン アクセス ポイントを実装する

Amazon S3 マルチリージョンアクセスポイントを使用すると、複数の AWS リージョン にある S3 バケットからのリクエストをアプリケーションが実行するために使用できる**グローバルエンドポイントを作成できます。**　マルチリージョンアクセスポイントを使用して、単一のリージョンで使用するのと同じシンプルなアーキテクチャでマルチリージョンアプリケーションを構築し、**世界中のどこでも**これらのアプリケーションを実行することができます。

マルチリージョンのアクセスポイントは、輻輳したパブリックインターネット経由でリクエストを送信する代わりに、Amazon S3 へのインターネットベースのリクエストを高速化する組み込みのネットワーク耐障害性を実現します。

:::note info
マルチリージョンアクセスポイントのグローバルエンドポイントに対して行われたアプリケーションリクエストは、**AWS Global Accelerator を使用して、AWS グローバルネットワークを介して、アクティブなルーティングステータスを持つ最も近い S3 バケットに自動的にルーティングされます。**
:::

マルチリージョンアクセスポイントを作成するときは、そのマルチリージョンアクセスポイントを介して提供されるデータを保存する AWS リージョン のセットを指定します。S3 クロスリージョンレプリケーション (CRR) を使用して、それらのリージョンのバケット間でデータを同期します。その後、マルチリージョンアクセスポイントグローバルエンドポイントを介してデータを要求または書き込みできます。**Amazon S3 は、最も近い利用可能なリージョンからレプリケートされたデータセットへのリクエストを自動的に処理します。**　マルチリージョンアクセスポイントは、Amazon S3 の場合は AWS PrivateLink を使用するアプリケーションを含め、Amazon Virtual Private Cloud (VPC) で実行されているアプリケーションとも互換性があります。

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/MultiRegionAccessPoints.html



Amazon S3 マルチリージョンアクセスポイント（Multi-Region Access Points）は、複数のAWSリージョンにまたがるS3バケットへのアクセスを簡素化し、パフォーマンスと可用性を向上させるための機能です。この機能を使用することで、ユーザーは単一のエンドポイントを介して複数のリージョンに分散されたS3バケットにアクセスできます。グローバルに分散したユーザーに対して一貫したデータアクセスを提供し、**リージョン障害時の自動フェイルオーバーや災害復旧を実現**できます。

### 特徴と利点

| 特徴                                    | 説明                                                                                       |
|-----------------------------------------|------------------------------------------------------------------------------------------|
| 単一のエンドポイント                    | 複数のリージョンにまたがるS3バケットに対して、単一のエンドポイントを提供します。 |
| 高可用性                                 | 複数のリージョンにデータを分散することで、可用性を向上させます。 |
| パフォーマンスの向上                     | ユーザーに最も近いリージョンからデータを提供することで、レイテンシを低減します。 |
| 自動フェイルオーバー                     | リージョン障害が発生した場合、自動的に他のリージョンにフェイルオーバーします。 |
| 簡素化されたアクセス管理                 | 単一のエンドポイントを使用することで、アクセス管理が簡素化されます。 |
| グローバルなデータアクセス               | グローバルに分散したユーザーに対して、一貫したデータアクセスを提供します。 |

### 使用シナリオ

#### 1. **グローバルなアプリケーション**
グローバルに展開されたアプリケーションが、ユーザーに最も近いリージョンからデータを提供することで、レイテンシを低減し、ユーザーエクスペリエンスを向上させます。

#### 2. **高可用性の確保**
複数のリージョンにデータを分散することで、リージョン障害が発生した場合でも、他のリージョンからデータを提供し、サービスの継続性を確保します。

#### 3. **災害復旧**
データを複数のリージョンにレプリケートすることで、災害発生時に迅速にデータを復旧できます。



#### ソリューションは、あくまで、一例です。他の解決方法もあるので、参考程度にしてください。

#### 読んでいただき、ありがとうございました。