Amazon EFS ボリューム - AWS Batch

Amazon EFS ボリューム

Amazon Elastic File System (Amazon EFS) では、AWS Batch ジョブで使用するためのシンプルでスケーラブルなファイルストレージを提供します。Amazon EFSでは、ストレージ容量は伸縮性があります。ファイルの追加や削除時に、自動的にスケールされます。アプリケーションでは、必要なときに必要なストレージを確保できます。

Amazon EFS ファイルシステムを AWS Batch で使用して、コンテナインスタンスのフリート全体のファイルシステムデータをエクスポートできます。これにより、ジョブは、同じ永続的ストレージにアクセスできます。ただし、Docker デーモンが起動する前に、Amazon EFS ファイルシステムをマウントするように、コンテナインスタンス AMI を設定する必要があります。また、ファイルシステムを使用するには、ジョブ定義でコンテナインスタンスのボリュームマウントを参照する必要があります。以下のセクションは、AWS Batch でAmazon EFSの使用を開始するのに役立ちます。

Amazon EFS ボリュームに関する考慮事項

Amazon EFS ボリュームを使用する際には、以下の点を考慮する必要があります:

  • EC2 リソースを使用するジョブの場合、Amazon ECS に最適化された AMI バージョン 20191212、コンテナエージェントバージョン 1.35.0 で、Amazon EFS ファイルシステムのサポートがパブリックプレビューとして追加されました。ただし、Amazon ECS 最適化 AMI バージョン 20200319、コンテナエージェントバージョン 1.38.0 で、Amazon EFS ファイルシステムのサポート ( Amazon EFS アクセスポイントと IAM 認証機能を含む) が一般提供されました。これらの機能を利用するには、Amazon ECS に最適化された AMI バージョン 20200319 以降を使用することをお勧めします。詳細については、Amazon Elastic Container Service デベロッパーガイドの「Amazon ECS に最適化された AMI バージョン」を参照してください。

    注記

    独自の AMI を作成する場合、コンテナエージェント 1.38.0 以降、ecs-init バージョン 1.38.0-1 以降を使用し、Amazon EC2 インスタンスで以下のコマンドを実行する必要があります。これが Amazon ECS ボリュームプラグインを有効にするためのものです。コマンドは、ベースイメージとして Amazon Linux 2 と Amazon Linux のどちらを使用しているかによって異なります。

    Amazon Linux 2
    yum install amazon-efs-utils systemctl enable --now amazon-ecs-volume-plugin
    Amazon Linux
    yum install amazon-efs-utils sudo shutdown -r now

    Amazon Linux 2

  • Fargate リソースを使用するジョブの場合、プラットフォームバージョン 1.4.0 以降で Amazon EFS ファイルシステムのサポートが追加されました。詳細については、Amazon Elastic Container Service デベロッパーガイドの「AWS Fargate プラットフォームのバージョン」を参照してください。

  • Fargate リソースで使用されるジョブに Amazon EFS ボリュームを指定する場合、Fargate は Amazon EFS ボリュームの管理を担当するスーパーバイザーコンテナを作成します。スーパーバイザーコンテナは、ジョブのメモリを少しだけ使用します。スーパーバイザーコンテナは、タスクメタデータバージョン 4 エンドポイントにクエリを実行するときに表示されます。詳細については、Amazon Elastic Container Service デベロッパーガイドタスクメタデータエンドポイントバージョン 4を参照してください。

Amazon EFS アクセスポイントの使用

Amazon EFS アクセスポイントは、EFS ファイルシステムへのアプリケーション固有のエントリポイントです。これにより、共有データセットへのアプリケーションアクセスが管理しやすくなります。Amazon EFS アクセスポイントの詳細およびアクセス制御方法については、Amazon Elastic File System ユーザーガイドの「Amazon EFS アクセスポイントの使用」を参照してください。

アクセスポイントを使用すると、アクセスポイントを介したすべてのファイルシステム要求に対してユーザー ID (ユーザーの POSIX グループなど) を適用できます。また、ファイルシステムに対して別のルートディレクトリを適用し、このディレクトリまたはそのサブディレクトリ内のデータに対してのみ、クライアントにアクセスを許可することもできます。

注記

EFS アクセスポイントを作成するときは、ルートディレクトリとして機能するファイルシステム上のパスを指定します。AWS Batch ジョブ定義でアクセスポイント ID を持つ EFS ファイルシステムを参照する場合、ルートディレクトリを省略するか、EFS アクセスポイントに設定されたパスを強制する / に設定する必要があります。

AWS Batch ジョブの IAM ロールを使用して、特定のアプリケーションで使用するアクセスポイントを限定できます。IAM ポリシーとアクセスポイントを組み合わせると、アプリケーションから特定のデータセットへのアクセスを簡単に保護できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、Amazon Elastic Container Service 開発者ガイドの「タスク用の IAM ロール」を参照してください。

ジョブ定義でのAmazon EFS ファイルシステムの指定

コンテナに Amazon EFS ファイルシステムボリュームを使用するには、ジョブ定義でボリュームとマウントポイントの設定を指定する必要があります。次のジョブ定義の JSON スニペットは、コンテナの volumesmountPoints オブジェクトの構文を示します。

{ "containerProperties": [ { "name": "container-using-efs", "image": "amazonlinux:2" ], "command": [ "ls", "-la", "/mount/efs" ], "mountPoints": [ { "sourceVolume": "myEfsVolume", "containerPath": "/mount/efs", "readOnly": true } ], "volumes": [ { "name": "myEfsVolume", "efsVolumeConfiguration": { "fileSystemId": "fs-12345678", "rootDirectory": "/path/to/my/data", "transitEncryption": "ENABLED", "transitEncryptionPort": integer, "authorizationConfig": { "accessPointId": "fsap-1234567890abcdef1", "iam": "ENABLED" } } } ] } ] }
efsVolumeConfiguration

タイプ: オブジェクト

必須: いいえ

このパラメータは、Amazon EFS ボリュームを使用する場合に指定します。

fileSystemId

型: 文字列

必須: はい

使用する Amazon EFS ファイルシステムの ID。

rootDirectory

型: 文字列

必須: いいえ

ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリ。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。/ を指定すると、このパラメータを省略した場合と同じ結果になります。最大 4,096 文字を使用できます。

重要

authorizationConfig に EFS アクセスポイントを指定する場合は、ルートディレクトリパラメータを省略するか、または / に設定する必要があります。これにより、EFS アクセスポイントに設定されたパスが強制されます。

transitEncryption

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

AWS Batch ホストと Amazon EFS サーバー間で Amazon EFS データの転送中の暗号化を有効にするかどうかをします。Amazon EFS IAM 認証を使用する場合は、転送中の暗号化を有効にする必要があります。このパラメータを省略すると、DISABLED のデフォルト値が使用されます。詳細については、Amazon Elastic File System ユーザーガイドEncrypting data in transit を参照してください。

transitEncryptionPort

タイプ: 整数

必須: いいえ

AWS Batch ホストと Amazon EFS サーバーの間で暗号化されたデータを送信するときに使用するポート。転送中の暗号化ポートを指定しないと、Amazon EFS マウントヘルパーが使用するポート選択方式が使用されます。この値は 0~65,535 の範囲の値にする必要があります。詳細については、Amazon Elastic File System ユーザーガイドの「EFS マウントヘルパー」を参照してください。

authorizationConfig

タイプ: オブジェクト

必須: いいえ

Amazon EFS ファイルシステムの認証設定の詳細。

accessPointId

型: 文字列

必須: いいえ

使用するアクセスポイント ID。アクセスポイントを指定する場合は、efsVolumeConfiguration のルートディレクトリ値を省略するか、これを / に設定する必要があります。これにより、EFS アクセスポイントに設定されたパスが強制されます。アクセスポイントを使用する場合は、EFSVolumeConfiguration で転送中の暗号化を有効にする必要があります。詳細については、Amazon Elastic File System ユーザーガイドの「Amazon EFS アクセスポイントの使用」を参照してください。

iam

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

Amazon EFS ファイルシステムのマウント時にジョブ定義で定義した AWS Batch ジョブの IAM ロールを使用するかどうかを決定します。使用する場合は、EFSVolumeConfiguration で転送中の暗号化を有効にする必要があります。このパラメータを省略すると、DISABLED のデフォルト値が使用されます。実行 IAM ロールの詳細については、「AWS Batch タスク実行 IAM ロール」を参照してください。