

# Mountpoint の設定と使用
<a name="mountpoint-usage"></a>

Mountpoint for Amazon S3 を使用するには、マウントする Amazon S3 バケットにアクセスできる有効な AWS 認証情報がホストに必要です。さまざまな認証方法については、GitHub の「Mountpoint [AWS 認証情報](https://github.com/awslabs/mountpoint-s3/blob/main/doc/CONFIGURATION.md#aws-credentials)」を参照してください。

たとえば、新しい AWS Identity and Access Management (IAM) ユーザーとロールをこの目的を作成できます。このロールに、マウントしたい 1 つまたは複数のバケットへのアクセス権があることを確認してください。インスタンスプロファイルを使って、[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)を Amazon EC2 インスタンスに渡すことができます。

**Topics**
+ [Mountpoint for Amazon S3 の使用](#using-mountpoint)
+ [Mountpoint でのキャッシュの設定](#mountpoint-caching)

## Mountpoint for Amazon S3 の使用
<a name="using-mountpoint"></a>

Mountpoint for Amazon S3 を使用して次の操作を行います。

1. Amazon S3 バケットをマウントします。

   1. `mount-s3` コマンドを使用して、Amazon S3 バケットを手動でマウントできます。

      以下の例では、`amzn-s3-demo-bucket` を S3 バケットの名前に置き換え、`~/mnt` を S3 バケットをマウントしたいホスト上のディレクトリに置き換えます。

      ```
      mkdir ~/mnt
      mount-s3 amzn-s3-demo-bucket ~/mnt
      ```

      デフォルトでは Mountpoint クライアントがバックグラウンドで実行されるため、`~/mnt` ディレクトリから Amazon S3 バケット内のオブジェクトにアクセスできるようになりました。

   1. または、Mountpoint v1.18 以降では、インスタンスの起動時または再起動時に Amazon S3 バケットを自動的にマウントするように設定することもできます。

      既存または実行中の Amazon EC2 インスタンスの場合は、Linux システムの `/etc/fstab` ディレクトリで `fstab` ファイルを見つけます。次に、`fstab` ファイルに 1 行追加します。例えば、プレフィックス `example-prefix/` を使用して *amzn-s3-demo-bucket* をシステムパス `/mnt/mountpoint` にマウントするには、以下を参照してください。次の例を使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

      ```
      s3://amzn-s3-demo-bucket/example-prefix/ /mnt/mountpoint mount-s3 _netdev,nosuid,nodev,nofail,rw 0 0
      ```

      この例で使用されているオプションの説明については、次の表を参照してください。    
<a name="auto-mount-commands"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/mountpoint-usage.html)

      新しい Amazon EC2 インスタンスの場合、Amazon EC2 テンプレートのユーザーデータを変更し、`fstab` ファイルを次のように設定できます。次の例を使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

      ```
      #!/bin/bash -e
      MP_RPM=$(mktemp --suffix=.rpm)
      curl https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm > $MP_RPM
      yum install -y $MP_RPM
      rm $MP_RPM
      
      MNT_PATH=/mnt/mountpoint
      echo "s3://amzn-s3-demo-bucket/ ${MNT_PATH} mount-s3 _netdev,nosuid,nodev,rw,allow-other,nofail" >> /etc/fstab
      mkdir $MNT_PATH
      
      systemctl daemon-reload
      mount -a
      ```

1. Mountpoint を通じて Amazon S3 バケット内のオブジェクトにアクセスします。

   バケットをローカルにマウントしたら、`cat` や `ls` などの一般的な Linux コマンドして、S3 オブジェクトを操作することができます。Mountpoint for Amazon S3 は、Amazon S3 バケット内のキーをフォワードスラッシュ (`/`) 文字で分割することでファイルシステムパスとして解釈します。たとえば、`Data/2023-01-01.csv` バケットにオブジェクトキーがある場合、Mountpoint ファイルに `Data` という名前のディレクトリがあり、その中には `2023-01-01.csv` という名前のファイルがあります。

   Mountpoint for Amazon S3 は、ファイルシステムに意図的に完全な [POSIX](https://en.wikipedia.org/wiki/POSIX) 標準仕様を実装していません。Mountpoint は、ファイルシステムインターフェイスを通じて Amazon S3 に保存されているデータへの高スループットの読み取り/書き込みアクセスを必要しながらも、それ以外はファイルシステム機能に依存しないワークロード向けに最適化されています。詳細については、GitHub の「Mountpoint for Amazon S3 [ファイルシステムの動作](https://github.com/awslabs/mountpoint-s3/blob/main/doc/SEMANTICS.md)」を参照してください。より豊富なファイルシステムセマンティクスを必要とするお客様は、他の AWS ファイルサービス (例: [Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/) または [Amazon FSx](https://aws.amazon.com/fsx/)) などを検討してください。

   

1. `umount` コマンドを使用して Amazon S3 バケットをアンマウントします。このコマンドは S3 バケットをアンマウントし、マウントポイントを終了します。

   以下のコマンド例を使用するには、`~/mnt` を S3 バケットがマウントされているホスト上のディレクトリに置き換えます。

   ```
   umount ~/mnt
   ```
**注記**  
このコマンドのオプションのリストを取得するには、`umount --help` を実行します。

マウントポイント設定の詳細については、GitHub の「[Amazon S3 bucket configuration](https://github.com/awslabs/mountpoint-s3/blob/main/doc/CONFIGURATION.md#s3-bucket-configuration)」、および「[file system configuration](https://github.com/awslabs/mountpoint-s3/blob/main/doc/CONFIGURATION.md#file-system-configuration)」を参照してください。

## Mountpoint でのキャッシュの設定
<a name="mountpoint-caching"></a>

Mountpoint for Amazon S3 は、さまざまなタイプのデータキャッシュをサポートしています。繰り返しの読み取りリクエストを高速化するには、以下にオプトインできます。
+ **ローカルキャッシュ** – Amazon EC2 インスタンスストレージまたは Amazon Elastic Block Store ボリュームでローカルキャッシュを使用できます。同じコンピューティングインスタンスから同じデータを繰り返し読み取り、繰り返し読み取るデータセット用のローカルインスタンスストレージに未使用のスペースがある場合は、ローカルキャッシュにオプトインします。
+ **共有キャッシュ** – S3 Express One Zone で共有キャッシュを使用できます。複数のコンピューティングインスタンスから小さなオブジェクトを繰り返し読み取る場合、または繰り返し読み取るデータセットのサイズが不明で、キャッシュサイズの伸縮性を活用する場合は、共有キャッシュにオプトインします。オプトインすると、Mountpoint は、S3 Express One Zone を使用するディレクトリバケットに最大 1 メガバイトのサイズのオブジェクトを保持します。
+ **ローカルキャッシュと共有キャッシュの組み合わせ** — ローカルキャッシュに未使用のスペースがあるが、複数のインスタンス間で共有キャッシュも必要な場合は、ローカルキャッシュと共有キャッシュの両方にオプトインできます。

Mountpoint でのキャッシュは、複数の読み取り中に変更されない同じデータを繰り返し読み取るユースケースに最適です。たとえば、モデルの精度を向上させるためにトレーニングデータセットを複数回読み取る必要がある機械学習トレーニングジョブでキャッシュを使用できます。

Mountpoint でキャッシュを設定する方法の詳細については、以下の例を参照してください。

**Topics**
+ [ローカルキャッシュ](#local-cache-example)
+ [共有キャッシュ](#shared-cache-example)
+ [ローカルキャッシュと共有キャッシュの組み合わせ](#shared-local-cache-example)

### ローカルキャッシュ
<a name="local-cache-example"></a>

`--cache CACHE_PATH` フラグを使用してローカルキャッシュにオプトインできます。次の例の、*`CACHE_PATH`* は、データをキャッシュするディレクトリへのファイルパスに置き換えます。*`amzn-s3-demo-bucket`* は Amazon S3 バケット名に置き換え、*`~/mnt`* を S3 バケットをマウントするホスト上のディレクトリに置き換えます。

```
mkdir ~/mnt
mount-s3 --cache CACHE_PATH amzn-s3-demo-bucket ~/mnt
```

Amazon S3 バケットをマウントするときにローカルキャッシュにオプトインすると、Mountpoint は設定されたキャッシュの場所に空のサブディレクトリを作成します (そのサブディレクトリがまだ存在しない場合)。最初にバケットをマウントするときと、マウントを解除するときに、Mountpoint はローカルキャッシュのコンテンツを削除します。

**重要**  
ローカルキャッシュを有効にすると、Mountpoint は、マウントした Amazon S3 バケットの暗号化されていないオブジェクトのコンテンツを、マウント時に指定したローカルキャッシュの場所に保持します。データを保護するには、ファイルシステムのアクセスコントロールメカニズムを使用して、データキャッシュの場所へのアクセスを制限する必要があります。

### 共有キャッシュ
<a name="shared-cache-example"></a>

複数のコンピューティングインスタンスから小さなオブジェクト (最大 1 MB) を繰り返し読み取る場合、または繰り返し読み取るデータセットのサイズがローカルキャッシュのサイズを頻繁に超える場合は、[S3 Express One Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/) の共有キャッシュを使用する必要があります。複数のインスタンスから同じデータを繰り返し読み取る場合、マウントした Amazon S3 バケットへの冗長なリクエストを回避することで、レイテンシーが向上します。

共有キャッシュにオプトインすると、S3 Express One Zone のディレクトリバケットにキャッシュされたデータに対して料金が発生します。また、S3 Express One Zone のディレクトリバケットのデータに対して行ったリクエストに対しても料金が発生します。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。Mountpoint は、ディレクトリバケットからキャッシュされたオブジェクトを削除することはありません。ストレージコストを管理するには、指定した期間後に S3 Express One Zone にキャッシュされたデータの有効期限が切れるように、[ディレクトリバケットにライフサイクルポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-lifecycle.html)を設定する必要があります。詳細については、GitHub で [Mountpoint for Amazon S3 のキャッシュ設定](https://github.com/awslabs/mountpoint-s3/blob/main/doc/CONFIGURATION.md#caching-configuration)に関する情報を参照してください。

コンピューティングインスタンスに Amazon S3 バケットをマウントするときに S3 Express One Zone のキャッシュにオプトインするには、`--cache-xz` フラグを使用して、キャッシュの場所としてディレクトリバケットを指定します。次の例で、*ユーザー入力プレースホルダー*を置き換えます。

```
mount-s3 amzn-s3-demo-bucket ~/mnt --cache-xz amzn-s3-demo-bucket--usw2-az1--x-s3
```

### ローカルキャッシュと共有キャッシュの組み合わせ
<a name="shared-local-cache-example"></a>

インスタンスに未使用のスペースがあるが、複数のインスタンスで共有キャッシュも使用する場合は、ローカルキャッシュと共有キャッシュの両方にオプトインできます。このキャッシュ設定では、必要なデータをローカルストレージにキャッシュするときに、同じインスタンスからディレクトリバケットの共有キャッシュへの冗長な読み取りリクエストを回避できます。これにより、リクエストのコストを削減し、パフォーマンスを改善できます。

 Amazon S3 バケットをマウントするときにローカルキャッシュと共有キャッシュの両方にオプトインするには、`--cache` フラグと `--cache-xz` フラグを使用して両方のキャッシュの場所を指定します。次の例を使用してローカルキャッシュと共有キャッシュの両方にオプトインするには、*ユーザー入力プレースホルダー*を置き換えます。

```
mount -s3 amzn-s3-demo-bucket ~/mnt --cache /path/to/mountpoint/cache --cache -xz amzn-s3-demo-bucket--usw2-az1--x-s3
```

詳細については、GitHub で [Mountpoint for Amazon S3 のキャッシュ設定](https://github.com/awslabs/mountpoint-s3/blob/main/doc/CONFIGURATION.md#caching-configuration)に関する情報を参照してください。

**重要**  
共有キャッシュを有効にすると、Mountpoint は、マウントされた Amazon S3 バケットのオブジェクトコンテンツを、共有キャッシュの場所として指定した S3 ディレクトリバケットにコピーし、S3 ディレクトリバケットにアクセスできる任意の発信者がアクセスできるようにします。キャッシュされたデータを保護するには、[Amazon S3 のセキュリティのベストプラクティス](security-best-practices.md) に従って、バケットが正しいポリシーを使用していること、およびパブリックにアクセスできないことを確認する必要があります。Mountpoint 共有キャッシュ専用のディレクトリバケットを使用し、Mountpoint クライアントにのみアクセスを許可する必要があります。