Amazon Web Services ブログ

Mountpoint for Amazon S3 – 一般公開されており、本番環境のワークロードにも対応可能

Mountpoint for Amazon S3 は、ファイル対応の Linux アプリケーションが Amazon Simple Storage Service (Amazon S3) バケットに簡単に直接接続できるようにするオープンソースのファイルクライアントです。2023年初めにアルファリリースとして発表されましたが、現在一般公開されており、データレイク、機械学習トレーニング、画像レンダリング、自動運転車シミュレーション、ETL など、読み取り負荷の多い大規模なアプリケーションで本番環境で使用できるようになりました。シーケンシャル読み取りとランダム読み取り、シーケンシャル (追加のみ) 書き込みを実行するファイルベースのワークロードをサポートし、POSIX の完全なセマンティクスを必要としません。

なぜファイルなのか?
多くの AWS のお客様は、S3 APIAWS SDK を使用して、S3 バケットの内容を一覧表示、アクセス、処理できるアプリケーションを構築しています。ただし、多くのお客様は、UNIX スタイルでファイルにアクセスする方法(ディレクトリの読み取り、既存のファイルのオープンと読み取り、新しいファイルの作成と書き込み)を知っている既存のアプリケーション、コマンド、ツール、およびワークフローを持っています。これらのお客様から、大規模な S3 への高性能なアクセスをサポートする、エンタープライズ対応の公式クライアントを求められています。これらのお客様と話し、多くの質問を投げかけた結果、パフォーマンスと安定性が主な関心事であり、POSIX 準拠は必須ではないことがわかりました。

2006 年に Amazon S3 について初めて書いたとき、Amazon S3 はファイルシステムとしてではなく、オブジェクトストアとして使用することを目的としていることは明らかでした。Mountpoint/S3 コンボを使用して Git リポジトリなどを保存するのは望ましくありませんが、S3 のスケールと耐久性を活用しながらファイルを読み書きできるツールと組み合わせて使用することは、多くの状況で理にかなっています。

マウントポイントのすべて
のマウントポイントは、概念的には非常にシンプルです。マウントポイントを作成し、そのマウントポイントに Amazon S3 バケット (またはバケット内のパス) をマウントし、シェルコマンド (lscatddfindなど)、ライブラリ関数 (open closereadwritecreatopendir など)、またはすでに使用しているツールや言語でサポートされている同等のコマンドと関数を使用してバケットにアクセスします。

内部では、Linux 仮想ファイルシステム (VFS) がこれらのオペレーションをマウントポイントへの呼び出しに変換し、さらにマウントポイントが S3 への呼び出し (LISTGETPUT など) に変換されます。 マウントポイントは、ネットワーク帯域幅を有効に活用してスループットを向上させ、より多くの作業をより短時間で行うことでコンピューティングコストを削減できるように努めています。

マウントポイントは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから、または Amazon Elastic Container Service (Amazon ECS) または Amazon Elastic Kubernetes Service (EKS) コンテナ内で使用できます。また、既存のオンプレミスシステムにインストールすることもでき、直接、または AWS PrivateLink for Amazon S3 を介した AWS Direct Connect 接続経由で S3 にアクセスすることもできます。

Mountpoint for Amazon S3 のインストールと使用
マウントポイントは RPM 形式で提供されており、Amazon Linux を実行している EC2 インスタンスに簡単にインストールできます。RPM を取得して yum を使ってインストールするだけです。

$ wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
$ sudo yum install ./mount-s3.rpm

ここ数年、私は定期的にワシントン州フェリーのウェブカメラのいくつかから画像を取得して、自分の wsdot-ferry バケットに保存してきました。

私は、これらの画像を収集して、フェリーの出入りを追跡し、ある時点でそれらを分析して、最適な乗車時間を見つけることを目的としています。今日の私の目標は、丸一日分の画像を素敵なタイムラプスにまとめた映画を作ることです。まず、マウントポイントを作成してバケットをマウントします。

$ mkdir wsdot-ferry
$  mount-s3 wsdot-ferry wsdot-ferry

マウントポイントをトラバースしてバケットを調べることができます。

$ cd wsdot-ferry
$ ls -l | head -10
total 0
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2020_12_30
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2020_12_31
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2021_01_01
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2021_01_02
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2021_01_03
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2021_01_04
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2021_01_05
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2021_01_06
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 2021_01_07
$
$  cd 2020_12_30
$ ls -l
total 0
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 fauntleroy_holding
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 fauntleroy_way
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 lincoln
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 trenton
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 vashon_112_north
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 vashon_112_south
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 vashon_bunker_north
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 vashon_bunker_south
drwxr-xr-x 2 jeff jeff 0 Aug  7 23:07 vashon_holding
$
$ cd fauntleroy_holding
$  ls -l | head -10
total 2680
-rw-r--r-- 1 jeff jeff  19337 Feb 10  2021 17-12-01.jpg
-rw-r--r-- 1 jeff jeff  19380 Feb 10  2021 17-15-01.jpg
-rw-r--r-- 1 jeff jeff  19080 Feb 10  2021 17-18-01.jpg
-rw-r--r-- 1 jeff jeff  17700 Feb 10  2021 17-21-01.jpg
-rw-r--r-- 1 jeff jeff  17016 Feb 10  2021 17-24-01.jpg
-rw-r--r-- 1 jeff jeff  16638 Feb 10  2021 17-27-01.jpg
-rw-r--r-- 1 jeff jeff  16713 Feb 10  2021 17-30-01.jpg
-rw-r--r-- 1 jeff jeff  16647 Feb 10  2021 17-33-02.jpg
-rw-r--r-- 1 jeff jeff  16750 Feb 10  2021 17-36-01.jpg
$

1つのコマンドでアニメーションを作成できます。

$ ffmpeg -framerate 10 -pattern_type glob -i "*.jpg" ferry.gif

そして、これが私が得るものです。

ご覧のように、 マウントポイントを使用して既存のイメージファイルにアクセスし、新しく作成したアニメーションを S3 に書き戻しました。これはかなり単純なデモですが、既存のツールとスキルを使用して S3 バケット内のオブジェクトを処理する方法を示しています。何年にもわたって数百万の画像を収集してきたことを考えると、それらをローカルファイルシステムに明示的に同期せずに処理できることは大きなメリットです。

Mountpoint for Amazon S3 に関する情報
マウントポイントを使用する際に留意すべき点がいくつかあります。

価格 マウントポイントを使用しても新しい料金は発生しません。お支払いいただくのは、基礎となる S3 オペレーションに対してのみです。また、 マウントポイントを使用して、リクエスタ支払いバケットにアクセスすることもできます。

パフォーマンス マウントポイントは、各 EC2 インスタンスと S3 間の最大100 GB/秒のデータ転送など、S3が提供する柔軟なスループットを活用できます。

認証情報 マウントポイントは、バケットをマウントしたときに有効な AWS 認証情報を使用して S3 バケットにアクセスします。認証情報、バケット設定、リクエスタ支払いの使用、S3 Object Lambda の使用に関するヒントなどの詳細については、CONFIGURATION ドキュメントを参照してください。

オペレーションとセマンティクス マウントポイントは基本的なファイル操作をサポートしており、最大5 TB のサイズのファイルを読み取ることができます。既存のファイルを一覧表示して読み取ることができ、新しいファイルを作成することもできます。既存のファイルを変更したり、ディレクトリを削除したりすることはできません。また、シンボリックリンクやファイルロックもサポートしていません (POSIX のセマンティクスが必要な場合は、 Amazon FSx for Lustre をご覧ください)。サポートされているオペレーションとその解釈の詳細については、SEMANTICS ドキュメントを参照してください。

ストレージクラス マウントポイントを使用して、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive、S3 Intelligent-Tiering アーカイブアクセス層、S3 Intelligent-Tiering ディープアーカイブアクセス層を除くすべてのストレージクラスの S3 オブジェクトにアクセスできます。

オープンソース マウントポイントはオープンソースであり、公開ロードマップがあります。お客様の貢献は大歓迎です。必ず最初に私たちの貢献ガイドライン行動規範をお読みください。

ホップオン
ご覧のように、 マウントポイントは非常に優れており、アプリケーションで使用するための素晴らしい方法がいくつか見つかると思います。annチェックして、感想を教えてください!

Jeff;

原文はこちらです。