Amazon Web Services ブログ

Amazon FSx for Lustre を使用したアカウント間での Amazon S3 データの共有

このブログは 2023 年 11 月 24 日に Justin Leto (Sr. Solutions Architect) 、Emad Tawfik (Senior Solutions Architect) 、Juha Sarimaa (Senior Solutions Architect Storage Specialist) によって執筆された内容を日本語化したものです。原文はこちらを参照してください。

企業がクラウドガバナンスのプラクティスを進化させるにつれて、別のアカウントで作業する複数のチームがデータを共有する必要が生じる場合があります。 あるチームがあるアカウントでエンタープライズデータレイクを管理している一方で、データサイエンスチームが別のアカウントで高性能コンピューティング (HPC) のユースケースを開発している場合があります。お客様は低コストのオブジェクトストレージを活用し、追加でデータをコピーすることなく、高性能ファイルシステムから迅速にこのデータを利活用し、 HPC ユースケースをサポートしたいと考えています。

Amazon FSx for Lustre は、AWS 上の機械学習 (ML) と高性能コンピューティング (HPC) のユースケースを加速するための重要な構成要素となっています。Amazon FSx for Lustre は、サブミリ秒のレイテンシー、最大数百 GB / 秒のスループット、数百万 IOPS を提供する、完全に POSIX 準拠の高性能ファイルシステムです。 これは Amazon Simple Storage Service (Amazon S3) とシームレスに統合されており、クラウド利用者に S3 データセットへのシームレスなアクセス提供し、コールドデータセットのコスト効率性を向上させます。

本記事では、Amazon FSx ファイルシステムと Amazon S3 バケットが同一 AWS リージョン内の異なる AWS アカウントに存在する際の、Amazon FSx for Lustre ファイルシステムを Amazon S3 データレイクとシームレスに統合するプロセスを紹介します。このソリューションでは、中央のエンタープライズデータレイクから専門チームのアカウントにデータを共有し、ML や HPC のユースケースでそのデータを利活用することにより、 AWS 環境をスケールさせることができます。

ソリューションの概要

次のソリューションのアーキテクチャ図は、2 つのアクセス許可の問題への対処を表しています。1 つ目は、初期ロードのために別のアカウントの Amazon S3 バケットから読み取ることを Amazon FSx for Lustre に許可します。2 つ目は、データの同期を維持するために継続的な変更をレプリケートするためにファイルシステムがバケットに対する put の通知を受信することを許可します。

Solution architecture

前提条件

本ソリューションをデプロイするには、次のものが必要です。

ソリューションの実装

本セクションでは、 Data Repository Association (DRA) を使用して、ACCOUNT-A の Amazon FSx for Lustre ファイルシステムを ACCOUNT-B の Amazon S3 バケットと統合する方法について説明します。

ステップ 1: Amazon FSx ファイルシステムを作成する
ステップ 2: ソースバケットを作成する
ステップ 3: データリポジトリの関連付けを作成する
ステップ 4: バケットポリシーを設定する

ステップ 1: Amazon FSx ファイルシステムを作成する

ACCOUNT-A で、US East (バージニア北部) リージョンにいることを確認し、Amazon FSx コンソールに移動してください。

Confirm you are in US East (N.Virgina)

1. ファイルシステムを作成をクリックします。 次の画面で、さまざまなタイプの Amazon FSx ファイルシステムが表示されます。Amazon FSx for Lustre を選択し、 次へをクリックします。

Select File System Type

2. 次の画像に示すように、 ファイルシステム名ストレージキャパシティを入力し、 データ圧縮タイプLZ4 に設定します。

Enter file system name

3. ネットワークとセキュリティのセクションで、新しいファイルシステムの Virtual Private Cloud (VPC)VPC セキュリティグループサブネットを選択します。

Network and security

選択したセキュリティグループは、同じ VPC 内の Amazon EC2 インスタンスが Amazon FSx ファイルシステムをマウントできるように、Amazon FSx for Lustre トラフィック(TCP ポート 988、1018-1023)へのインバウンドアクセスを許可する必要があります。詳細については、 FSx for Lustre ユーザーガイドAmazon VPC を使用したファイルシステムアクセスコントロール のドキュメントを参照してください。

Amazon FSx は、Amazon S3 バケットにリンクされたファイルシステムのバックアップをサポートしていないので、新しいファイルシステムのバックアップを無効にする必要があります。

4. バックアップとメンテナンスセクションで, 無効を選択し、次へをクリックします。

Backup and maintenance

5. オプションが正確であることを確認し、ファイルシステムを作成をクリックしてください。初期化には数分かかります。ファイルシステムが利用可能になると、ステータスが利用可能と表示されます。

ステップ 2: ソース S3 バケットの作成

ACCOUNT-B に Amazon S3 バケットを作成します。バケットの作成の詳細な手順は、Amazon S3 ユーザーガイドバケットの作成 をご覧ください。 今回の例では、US East (バージニア北部)リージョンを選択し、バケットの名前を「new-lustre-file-system」とします。次のセクションでデータリポジトリの関連付けを作成した後、バケットポリシーを更新します。

ステップ 3: データリポジトリの関連付けの作成

次にデータリポジトリの関連付け (DRA) を作成して、Amazon FSx for Lustre ファイルシステムを Amazon S3 バケットにリンクします。

1. ACCOUNT-A で、Amazon FSx コンソールに移動し、作成したファイルシステムを選択します。データリポジトリ のタブを選択して、データリポジトリの関連付けを作成を選択します。

Data Repository Association

2. ファイルシステムのパスと Amazon S3 バケットへのパスを入力します。今回の例ではバケット全体を使用しましたが、DRA を特定のプレフィックスに限定することもできます。

Data repository association information

3. 作成をクリックします。ステータスが利用可能になるまでに初期化に数分かかります。

File system "available"

4. DRA 作成時に、Amazon S3 アクセスのための Amazon FSx のサービスリンクロールが作成されました。 AWS Identity and Access Management (AWS IAM) コンソールに移動し、新しいファイルシステムのために作成されたサービスロールを検索してください。

Identity, Access, Management

5. Amazon FSx for Lustre のサービスリンクロールの Amazon Resource Name (ARN) を見つけて、手元に保存しておきます。次のセクションのバケットポリシーの設定で必要になります。

Amazon Resource Name

ステップ 4: S3 バケットポリシーの設定

先程のセクションの ARN を使用して、Amazon S3 バケットにバケットポリシーを適用します。

1. ACCOUNT-B で、Amazon S3 コンソールに移動し、作成したバケットを選択します。アクセス許可 タブをクリックし、 バケットポリシー セクションで 編集を選択します。現在のポリシーを下記のポリシーに置き換えます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Example permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::ACCOUNT-A:role/aws-service-role/…/AWSServiceRoleForFSxS3Access_fs-XXXXXXX"
            },
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:PutObject",
                "s3:Get*",
                "s3:List*",
                "s3:PutBucketNotification"
            ],
            "Resource": [
                "arn:aws:s3:::new-lustre-file-system",
                "arn:aws:s3:::new-lustre-file-system/*"
            ]
        }
    ]
}

2. ステップ 3 で保存したサービスリンクロールの ARN を使用して、AWS プリンシパルの値を置き換えます。

3. 「new-lustre-file-system」を作成したバケット名に置き換えます。変更の保存を選択します。

Amazon FSx が S3 バケットにデータを書き込む際に暗号化する場合、S3 バケットのデフォルト暗号化を SSE-S3 または SSE-KMS に設定する必要があります。詳細は、サーバー側で暗号化された Simple Storage Service (Amazon S3) バケットの使用のドキュメントを参照してください。

ソリューションのテスト

ここまでの作業で、別の AWS アカウントの Amazon S3 バケットと同期している Amazon FSx for Lustre ファイルシステムを作成しました。

ステップ 1. Amazon EC2 インスタンスの作成

同期のテストのために、ファイルシステムをマウントできる Amazon EC2 インスタンスが必要です。

ACCOUNT-A で、Amazon EC2 コンソールに移動します。Amazon FSx ファイルシステムと同じ VPC 内に Amazon Linux 2 AMI を使用してインスタンスを起動します。 インスタンスの起動方法については、インスタンスの起動のドキュメントを参照してください。

ステップ 2. ファイルシステムのマウント

ドキュメントに記載されているいずれかの方法を使用して Linux インスタンスへの接続を実施します。

ターミナルウィンドウから、Amazon FSx ファイルシステムをマウントします。Amazon FSx コンソールからファイルシステムのマウント方法を確認できます。ファイルシステムを選択し、 アタッチを選択します。

ステップ 3. テストファイルの作成

ファイルシステムのマウントに成功したら、マウントされたディレクトリ /fsx/ns1/ にテストファイルを作成します。このファイルの名前は「 file1.txt 」とします。

test file in mounted directory

ACCOUNT-B に切り替えて、作成した Amazon S3 バケットを確認してください。「 file1.txt 」を確認できます。

S3 bucket

次に、別のファイルを直接 Amazon S3 バケットにアップロードしましょう。このファイルの名前を「 file2.txt 」とします。

EC2 ターミナルに戻り、ls -l と入力してください。/fsx/ns1/ に「 file2.txt 」が表示されることが確認できます。

EC2 Terminal

削除と更新でテストプロセスを繰り返すことができます。

クリーンアップ

テストしたソリューションですが、不要な料金が発生しないようにするために、プロビジョニングしたリソースを削除する次の 4 つのステップを実行してください。

  1. ファイルシステムのマウントとテストに使用した Amazon EC2 インスタンスを終了してください。
  2. ACCOUNT-A で作成した Amazon FSx for Lustre ファイルシステムを削除してください。
  3. ACCOUNT-B で作成したサンプルデータと Amazon S3 バケットを削除してください。
  4. Amazon FSx for Lustre ファイルシステムへ Amazon S3 アクセスを提供するために作成した IAM サービスリンクロールを削除してください。

結論

Amazon FSx for Lustre の S3 とのネイティブ統合は、スケールアウト型 Lustre ファイルシステムの高パフォーマンスと Amazon S3 上に構築されたデータレイクのメリットを活用できる、実績のある簡単にデプロイできるソリューションを提供します。本記事では、異なる AWS アカウントの Amazon S3 バケット内のソースデータへの変更と同期を取る Amazon FSx ファイルシステムをデプロイする方法を紹介しました。このソリューションにより、企業は中央のエンタープライズデータレイクから ML や HPC のユースケースでそのデータを利活用する専門チームのアカウントにデータを共有することで、AWS 環境をスケールできます。

Justin Leto

Justin Leto

Justin Leto は、機械学習を専門とするアマゾンウェブサービスのシニアソリューションアーキテクトです。彼の情熱は、お客様が機械学習とAIの力を活用してビジネスの成長を促進できるよう支援することです。Justin はグローバルカンファレンスで発表したり、大学で講義を持っています。彼はニューヨーク市の機械学習とAIのミートアップをリードしています。休日には、オフショアセーリングやジャズ演奏を楽しんでいます。彼は妻と娘と一緒にニューヨーク市に住んでいます。

Emad Tawfik

Emad Tawfik

Emad Tawfik は、アマゾンウェブサービスの10 年以上の経験をもつ経験豊富なシニアソリューションアーキテクトです。彼の専門はストレージとクラウドソリューションの領域にあり、お客様向けの費用対効果が高くスケーラブルなアーキテクチャの構築が得意です。Emadは、仕事だけではなく、家族と時間を過ごすこととアウトドアを楽しんでいます。

Juha Sarimaa

Juha Sarimaa

Juha Sarimaa は AWS のシニアソリューションアーキテクトストレージスペシャリストです。エンタープライズ規模のストレージシステムで28年の経験があります。お客様がビジネス課題を解決するためのペタバイト規模のストレージアーキテクチャを設計および構築できるよう支援することを楽しんでいます。Juha はフィンランド出身で、オーストラリアに住み、現在はコネチカット州に住んでいます。業務外では、Juha は外で家族や友人と森の中や水辺で時間を過ごしています。