Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
既存の Amazon FSx for Lustre ファイルシステムを、マネージドコンピューティング環境の AWS Batch にマウントする方法を教えてください。
既存の Amazon FSx for Lustre ファイルシステムを、マネージドコンピューティング環境の AWS Batch にマウントしたいと考えています。
簡単な説明
AWS Batch で、Amazon Elastic Compute Cloud (Amazon EC2) 起動テンプレートを使用します。この設定では、カスタム Amazon マシンイメージ (AMI) を作成せずに、既存の Amazon FSx for Lustre ファイルシステムをコンテナにマウントします。
重要: ファイルシステムを作成するときは、コンピューティング環境に割り当てられているのと同じ Amazon Virtual Private Cloud (Amazon VPC) とサブネットを使用してください。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
既存の Amazon FSx for Lustre ファイルシステムを、マネージドコンピューティング環境の AWS Batch にマウントするには、次の手順を実行します。
-
Amazon FSx for Lustre ファイルシステムを作成します。次に、デプロイタイプで永続ファイルシステムまたはスクラッチファイルシステムを選択します。
注: 長期間のストレージとワークロードには、永続ファイルシステムを使用します。一時ストレージや短期間のデータ処理には、スクラッチファイルシステムを使用します。 -
ファイルシステム ID をコピーします (たとえば、fs-0123456789abcdef0)。起動テンプレートを実行するには、ファイルシステム ID が必要です。
-
ユーザーデータセクションを含み、MIME マルチパートファイル形式を使用する起動テンプレートを作成します。詳細については、Cloud-init ウェブサイトの「Mime マルチパートアーカイブ」を参照してください。
次の Amazon Linux 2 MIME マルチパートファイルの例を参照してください。お使いのものでそれぞれ、fs-0123456789abcdef0 はファイルシステム ID、us-east-1 は AWS リージョン、xxxxxxxx は 8 文字の Amazon FSx マウント名に置き換えます。Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" MIME-Version: 1.0 --==MYBOUNDARY== Content-Type: text/cloud-boothook; charset="us-ascii" file_system_id=fs-0123456789abcdef0 region=us-east-1 fsx_directory=/scratch fsx_mount_name=xxxxxxxx amazon-linux-extras install -y lustre2.10 mkdir -p ${fsx_directory} mount -t lustre -o noatime,flock ${file_system_id}.fsx.${region}.amazonaws.com@tcp:/${fsx_mount_name} ${fsx_directory} --==MYBOUNDARY==--
注: この MIME マルチパートファイルの例では、Extras ライブラリから Lustre 2.10 パッケージをインストールするようにコンピューティングリソースを設定します。このファイルでは、既存の Amazon FSx for Lustre ファイルシステムも /scratch にマウントします。他の Linux ディストリビューションでのインストール手順については、「Lustre クライアントのインストール」を参照してください。
-
次の Amazon Linux 2 の例に示すように、テンプレートを起動してユーザーデータを呼び出します。
{ "LaunchTemplateName": "user-data", "LaunchTemplateData": { "UserData": "TUlNRS1W...<base64 encoded userdata>..." } }
注: Amazon EC2 コンソールの起動テンプレートにユーザーデータを追加する場合は、ユーザーデータをプレーンテキストとして貼り付けるか、ファイルからユーザーデータをアップロードするかのいずれかを必ず実行してください。AWS CLI または AWS SDK を使用する場合は、最初にユーザーデータを base64 でエンコードする必要があります。詳細については、base64encode ウェブサイトの「base64 形式へのエンコード」を参照してください。次に、CreateLaunchTemplate を呼び出すときに、その文字列を UserData パラメータの値として送信します。
-
mount-fsx-lustre.json という名前のファイルを作成します。
注: ユースケースに基づいてボリュームサイズを調整してください。 -
AWS CLI コマンド create-launch-template を実行し、ステップ 5 で作成した mount-fsx-lustre.json ファイルに基づいて起動テンプレートを作成します。us-east-1 は、お使いのリージョンに置き換えます。
aws ec2 --region us-east-1 create-launch-template --cli-input-json file://mount-fsx-lustre.json
出力例
{ "LaunchTemplate": { "LaunchTemplateId": "lt-08cb09d54bcf551f3", "LaunchTemplateName": "fsx-test", "CreateTime": "2020-06-30T17:13:22.000Z", "CreatedBy": "arn:aws:iam::12345678999:user/test", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }
-
新しいコンピューティング環境を作成し、その環境を起動テンプレートに関連付けます。AWS Batch がインスタンスを起動すると、Amazon FSx for Lustre ファイルシステムがコンテナインスタンスにマウントされます。
重要: デフォルトでは、AWS Batch マネージドコンピューティング環境は、コンピューティングリソース用に Amazon Elastic Container Service (Amazon ECS) に最適化された AMI の承認済みバージョンを使用します。Amazon ECS に最適化された Amazon Linux 2 AMI およびその他の Linux ディストリビューションの AMI ID を明示的に設定する必要があります。 -
ファイルシステムがコンテナインスタンスにマウントされているかどうかを確認するには、SSH を使用して AWS Batch によって起動されたインスタンスに接続します。その後、次の Linux df コマンドを実行します。
$ df -h
出力例
Filesystem Size Used Avail Used% Mounted ondevtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 448K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/xvda1 30G 4.2G 25G 15% / 172.31.79.79@tcp:/xxxxxxxx 1.1T 4.5M 1.1T 1% /scratch tmpfs 798M 0 798M 0% /run/user/1000
注: /scratch は自動的にマウントされます。
-
AWS Batch で、ボリュームとマウントポイントを含むジョブ定義を作成します。
{ "jobDefinitionName": "Fsx-sample", "jobDefinitionArn": "arn:aws:batch:us-east-1:12345678999:job-definition/userdata:1", "revision": 1, "status": "ACTIVE", "type": "container", "parameters": {}, "containerProperties": { "image": "busybox", "vcpus": 1, "memory": 1024, "command": [], "volumes": [ { "host": { "sourcePath": "/scratch" }, "name": "Scratch" } ], "environment": [], "mountPoints": [ { "containerPath": "/scratch", "sourceVolume": "Scratch" } ], "ulimits": [], "resourceRequirements": [] } }
-
AWS Batch ジョブを送信するには、ステップ 9 で作成したジョブ定義を使用します。
関連するコンテンツ
- 質問済み 8ヶ月前lg...
- 質問済み 8ヶ月前lg...
- 質問済み 6ヶ月前lg...