Amazon Web Services ブログ

Amazon FSx for Lustre と Amazon S3 の間でデータを移動するための新しい機能強化



Amazon FSx for Lustre のご紹介

Amazon FSx for Lustre は、機械学習、高性能コンピューティング、ビデオ処理、財務モデリング、電子設計自動化、分析などのワークロード向けに最適化された高性能ファイルシステムです。Amazon FSx は Amazon S3 とネイティブに連携し、パフォーマンスの高いファイルシステムでクラウドデータセットを簡単に処理することができます。S3 バケットにリンクされると、FSx for Lustre ファイルシステムは透過的に S3 オブジェクトをファイルとして提示し、結果を S3 に書き戻すことができます。

多くの場合、顧客は、ファイルシステム上の機密データへのアクセスを制御し、シンボリックリンクなどの特殊ファイルを処理し、Amazon S3 などの長期リポジトリにデータをバックアップおよび復元する際にこれらの制御と特殊ファイルを維持する機能を必要とします。Amazon FSx は、新規または変更されたファイルを Amazon FSx から S3 にエクスポートする hsm_archive などのファイルシステムコマンドを提供します。ただし、これらのコマンドはファイル権限をコピーせず、転送を監視またはキャンセルする機能は提供しません。

このブログでは、データリポジトリタスクのアプリケーションプログラミングインターフェイス (API) をご紹介しますこれは、Amazon FSx から S3 にファイルを簡単にエクスポートできる新しい AWS API です。新しい API を使用して、新規または変更されたファイルの S3 への書き込みを開始、監視、およびキャンセルできます。AWS ネイティブ API であるため、Lambda ベースのサーバーレスアプリケーションなどのクラウドネイティブワークフローからのデータエクスポートタスクを簡単に調整するために使用できます。

この API を使用すると、ファイルデータとファイルの権限を転送するだけでなく、シンボリックリンク、ファイル所有権メタデータ、およびファイルタイムスタンプを S3 に転送することができます。API は、コンテンツまたは権限が変更されたファイルとディレクトリのみをコピーすることにより、転送時間を最小限に抑えます。ファイル権限とその他のファイルメタデータは、AWS DataSyncAWS Storage Gateway で使用されるのと同じ形式で S3 に保存されます。これにより、AWS のファイルとデータを管理する一貫したメカニズムが提供されます。

S3 でバックアップされた Amazon FSx for Lustre ファイルシステムを作成すると、Amazon FSx のファイルが、S3 に保存されているファイルの権限、所有権、およびタイムスタンプを引き継ぎます。さらに、FSx はファイルメタデータが S3 からインポートされる速度を 4 倍にしたため、S3 をサポートする FSx ファイルシステムを最大 4 倍の速度で起動できます。

Amazon FSx for Lustre およびデータリポジトリタスク API のこれらの機能強化により、幅広いワークロードのセットで S3 データを高速で処理することが容易になるため、費用対効果が向上されます。このようなワークロードには、金融サービス業界でのティッカーデータや金融取引のストリーミングなど、多数の小さなファイルの処理を必要とするワークロード、およびゲノミクス業界での DNA シーケンスファイルなどの機密データへのアクセスコントロールを必要とするワークロードなどがあります。

Amazon FSx for Lustre のデータ処理ワークロード

FSx for Lustre での POSIX メタデータ/データリポジトリタスクの開始

以下の例では、Amazon FSx for Lustre を使用して、権限に依存したゲノミクスワークロードを実行します。このプロセスには、データセットを含む S3 バケットにリンクされた FSx for Lustre ファイルシステムのスピンアップ、ファイルシステム内のデータセットの分析、最後に結果を S3 に書き戻すことが含まれます。

S3 バケット s3://dataset-01 には、AWS DataSync を介してオンプレミスのデータセンターから S3 にアップロードされたヌクレオチドシーケンスデータを含む数百の圧縮 FASTQ オブジェクトが含まれています。ファイルの POSIX メタデータは、AWS DataSync、AWS Storage Gateway、Amazon FSx for Lustre によってアップロードされたときに S3 オブジェクトに保持されるのでご注意ください。

数百の圧縮 FASTQ オブジェクトを含む S3 バケット

この S3 バケットにリンクされた Amazon FSx for Lustre ファイルシステムを作成しましょう。Amazon FSx は S3 バケット内のオブジェクトをファイルとしてインポートし、ファイルに最初にアクセスしたときに S3 からファイルの内容を「遅延ロード」します。ImportPath フィールドを使用して S3 バケットの任意のパスを指定できます。また、Amazon FSx for Lustre は、そのパスからすべてのファイルを高度に、並列的に、再帰的にインポートします。

$ aws fsx create-file-system \
  --file-system-type LUSTRE \
  --storage-capacity 3600 \
  --subnet-ids subnet-0a2b78705852896b8 \
  --lustre-configuration ImportPath=s3://dataset-01,ExportPath=s3://dataset-01  

{
    "FileSystem": {
        "FileSystemId": "fs-00a70d77ae2252abc",
        "Lifecycle": "CREATING",
        "DNSName": "fs-00a70d77ae2252abc.fsx.us-east-1.amazonaws.com",
        ...       
    }
}

ファイルシステムをマウントすると (こちらの手順を参照)、POSIX メタデータがすべてオンプレミスから保持されていることがわかります。POSIX 権限、UID、GID は保持されます。これは、ファイル、ディレクトリ、およびシンボリックリンクに当てはまります。ファイルシステム管理者は、POSIX 権限で指定されたユーザー/グループのみが機密データにアクセスできることを把握してから、始めて安心できます。

$ ls -lhR
.:
total 73K
drw--w---- 2 algo1 algo1 33K Dec 17 23:04 output
dr-------- 2 algo1 algo1 41K Dec 17 22:49 sequences

./output:
total 0

./sequences:
total 19K
-r-------- 1 scrub algo1 1.0G Dec 17 20:36 G0-1711dd8c-ec7a-4b2c-9010-7585cc0dd9e8.fastq.gz
-r-------- 1 scrub algo1 1.0G Dec 17 20:35 G0-187e2993-9a86-427e-989b-09e768bd9ca8.fastq.gz
-r-------- 1 scrub algo1 1.0G Dec 17 20:36 G0-6f390113-f3a8-4ebc-88a5-3cb0ebc93c5b.fastq.gz
-r-------- 1 scrub algo1 1.0G Dec 17 20:36 G0-712d1f44-dd4b-41be-95e5-930311011131.fastq.gz
...

Lustre ファイルシステムにインポートされた S3 オブジェクトを使用すると、特定のファイルを読み取るだけで必要なファイルを遅延ロードできます。ファイルが遅延ロードされた後、そのコンテンツは S3 から Amazon FSx for Lustre ファイルシステムに完全にコピーされ、非常に低いレイテンシーでアクセスできます。今はデータに高速アクセスできるようになったので、高度な並列ワークロードを実行して重要な洞察を得ることができます。このワークロードでは、次のファイルを作成しました。

$ ls -lhR output
output:
total 512G
-rw------- 1 algo1 algo1 512M Dec 18 15:47 results_00.csv
-rw------- 1 algo1 algo1 512M Dec 18 15:46 results_01.csv
-rw------- 1 algo1 algo1 512M Dec 18 15:47 results_02.csv
-rw------- 1 algo1 algo1 512M Dec 18 15:47 results_03.csv
...

これらのファイルを S3 バケットにエクスポートしてバックアップするために、データリポジトリタスクを使用できるようになりました。データリポジトリタスクは、Amazon FSx for Lustre ファイルシステムと S3 バケット間の一括操作を表します。その 1 つは、変更されたファイルシステムの内容をリンクされた S3 バケットにエクスポートする操作です。以下の create-data-repository-task API を使用して、ファイルシステムの出力ディレクトリのみをエクスポートするデータリポジトリタスクを作成できます。

$ aws fsx create-data-repository-task \
  --file-system-id fs-00a70d77ae2252aba \
  --type EXPORT_TO_REPOSITORY \
  --paths output
  --report Enabled=true,Scope=FAILED_FILES_ONLY,Format=REPORT_CSV_20191124,Path=s3://dataset-01/reports
  
{
    "DataRepositoryTask": {
        "TaskId": "task-08048701430a981b7",
        "Lifecycle": "PENDING",
        "Type": "EXPORT_TO_REPOSITORY",
        "CreationTime": 1576685114.413,
        "ResourceARN": "arn:aws:fsx:us-east-1:123456789012:task/task-08048701430a981b7",
        "Tags": [],
        "FileSystemId": "fs-00a70d77ae2252abc",
        "Paths": ["output"],
        "Report": {
            "Enabled": true,
            "Path": "s3://dataset-01/reports",
            "Format": "REPORT_CSV_20191124",
            "Scope": "FAILED_FILES_ONLY"
        }
    }
}

この API は、Lambda ベースのサーバーレスアプリケーションを含む任意の AWS ワークフローから呼び出すことができます。また、クラウドネイティブワークフローから FSx と S3 間のデータ転送タスクを調整できるのでご注意ください。

データリポジトリタスクのステータスを確認するには、describe-data-repository-task API を使用して実演します。この場合、データリポジトリタスクは結果を S3 にエクスポートすることに既に成功しています。

$ aws fsx describe-data-repository-tasks

{
    "DataRepositoryTasks": [
        {
            "TaskId": "task-08048701430a981b7",
            "Lifecycle": "SUCCEEDED",
            "Type": "EXPORT_TO_REPOSITORY",
            "CreationTime": 1576685114.413,
            "StartTime": 1576685127.896,
            "ResourceARN": "arn:aws:fsx:us-east-1:123456789012:task/task-08048701430a981b7",
            "Tags": [],
            "FileSystemId": "fs-00a70d77ae2252abc",
            "Paths": ["output"],
            "Status": {
                "TotalCount": 1000,
                "SucceededCount": 1000,
                "FailedCount": 0,
                "LastUpdatedTime": 1576685795.701
            },
            "EndTime": 1576685795.701,
            "Report": {
                "Enabled": true,
                "Path": "s3://dataset-01/reports",
                "Format": "REPORT_CSV_20191124",
                "Scope": "FAILED_FILES_ONLY"
            }
        }
    ]
}    

Amazon FSx for Lustre は、ファイルを S3 にエクスポートするときに POSIX 権限を維持します。つまり、別の Amazon FSx for Lustre ファイルシステムでこれらのオブジェクトを使用する場合、または AWS Data Sync や AWS Storage Gateway を使用する場合、アクセスコントロールは保持されます。

上記で示したように、Amazon FSx for Lustre は、クラウドデータセットを Amazon S3 との間で移動するシームレスな体験を提供します。お客様は Amazon FSx API を使用して S3 バケットにリンクされたファイルシステムを作成し、ワークロードを実行した後、データを S3 バケットにエクスポートしてバックアップすることができます。

クリーンアップ

Amazon FSx for Lustre ファイルシステムをクリーンアップするには、次のコマンドを実行します。

$ aws fsx delete-file-system \
  --file-system-id fs-00a70d77ae2252abc

これにより、この投稿をフォローしている間に作成されたサンプルリソースに対して追加料金が発生していないことが保証されます。

まとめ

Amazon FSx for Lustre と Amazon S3 のネイティブ統合により、顧客は S3 に保存されたデータセットを簡単かつ迅速に処理できます。ここで説明する拡張機能は、S3 に保存されているデータセットの処理をさらに簡素化します。

  1. この機能は、Amazon FSx for Lustre ファイルシステムと S3 の間で POSIX メタデータを転送します。これにより、Amazon FSx と S3 の間で POSIX 権限、所有権、タイムスタンプを維持できます。詳細については、FSx for Lustre ユーザーガイドを参照してください。
  2. Amazon FSx for Lustre ファイルシステムとリンクされた S3 バケット間のデータ転送を開始、監視、キャンセルするためのコントロールを提供する新しい API ファミリーです。詳細については、FSx for Lustre API リファレンスドキュメントを参照してください。
  3. ファイルメタデータが S3 から Amazon FSx for Lustre ファイルシステムにインポートされる速度が 4 倍になり、S3 をサポートする Amazon FSx ファイルシステムを最大 4 倍の速度で起動できます。