Amazon EFS ボリューム
Amazon Elastic File System (Amazon EFS) では、Amazon ECS タスクで使用するためのシンプルでスケーラブルなファイルストレージを提供します。Amazon EFSでは、ストレージ容量は伸縮性があります。この容量は、ファイルの追加や削除に伴い自動的に拡大および縮小されます。アプリケーションは、必要な時点で必要なストレージを確保できます。
Amazon EFS ファイルシステムを Amazon ECS で使用して、コンテナインスタンスのフリート全体のファイルシステムデータをエクスポートできます。これにより、タスクは、配置されているインスタンスにかかわらず、同じ永続的ストレージにアクセスできます。ファイルシステムを使用するには、タスク定義からコンテナインスタンスのボリュームマウントを参照する必要があります。以下のセクションで、Amazon EFS を Amazon ECS で使用開始する方法を説明します。
Amazon EFS ボリュームに関する考慮事項
Amazon EFS ボリュームを使用する場合には、以下の点を考慮してください。
-
Fargate でホストされるタスクの場合、プラットフォームバージョン 1.4.0 以降 (Linux) で、Amazon EFS ファイルシステムがサポートされます。詳細については、「AWS Fargateプラットフォームのバージョン」を参照してください。
-
Fargate でホストされるタスクに Amazon EFS ボリュームを使用する場合、Fargate は Amazon EFS ボリュームの管理を担当するスーパーバイザーコンテナを作成します。スーパーバイザーコンテナは、タスクのメモリを少しだけ使用します。スーパーバイザーコンテナは、タスクメタデータバージョン 4 エンドポイントにクエリを実行するときに表示されます。ただし、CloudWatch Container Insights には表示されません。詳細については、「タスクメタデータエンドポイントバージョン 4」を参照してください。
-
Amazon EFS ボリュームの使用または
EFSVolumeConfiguration
の指定は、外部インスタンスではサポートされていません。 -
エージェント設定ファイルの
ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
パラメータは、デフォルトよりも小さい値 (約 1 時間) に設定することをお勧めします。この変更は、EFS マウント認証情報の有効期限切れを防ぎ、使用されていないマウントをクリーンアップするのに役立ちます。
Amazon EFS アクセスポイントを使用する
Amazon EFS アクセスポイントは、EFS ファイルシステムへのアプリケーション固有のエントリポイントです。これにより、共有データセットへのアプリケーションによるアクセスを管理します。Amazon EFS アクセスポイントの詳細およびアクセス制御方法については、Amazon Elastic File System ユーザーガイドの「Amazon EFS アクセスポイントの使用」を参照してください。
アクセスポイントを使用すると、アクセスポイントを介したすべてのファイルシステム要求に対してユーザーアイデンティティ (ユーザーの POSIX グループなど) を適用できます。また、アクセスポイントでは、ファイルシステムに対して別のルートディレクトリを適用することも可能です。クライアントは、指定したディレクトリまたはそのサブディレクトリ内のデータに対してのみアクセスが可能なためです。
EFS アクセスポイントを作成する際は、ファイルシステム上でルートディレクトリとして機能するパスを指定します。Amazon ECS タスク定義内でアクセスポイント ID を持つ EFS ファイルシステムを参照する場合、ルートディレクトリは省略するか、EFS アクセスポイントに設定されたパスを適用するために /
を設定する必要があります。
Amazon ECS タスクの IAM ロールを使用して、特定のアプリケーションで使用するアクセスポイントを限定できます。IAM ポリシーとアクセスポイントを組み合わせると、アプリケーションによる特定のデータセットへのアクセスを保護できます。タスクIAM ロールの使用方法については、「タスク用の IAM ロール」を参照してください。
タスク定義での Amazon EFS ファイルシステムの指定
コンテナに Amazon EFS ファイルシステムボリュームを使用するには、タスク定義でボリュームとマウントポイントの設定を指定する必要があります。次のスニペットの JSON によるタスク定義では、コンテナの volumes
と mountPoints
オブジェクトの構文を示しています。
{ "containerDefinitions": [ { "name": "
container-using-efs
", "image": "amazonlinux:2
", "entryPoint": [ "sh", "-c" ], "command": [ "ls -la/mount/efs
" ], "mountPoints": [ { "sourceVolume": "myEfsVolume
", "containerPath": "/mount/efs
", "readOnly":true
} ] } ], "volumes": [ { "name": "myEfsVolume
", "efsVolumeConfiguration": { "fileSystemId": "fs-1234
", "rootDirectory": "/path/to/my/data
", "transitEncryption": "ENABLED
", "transitEncryptionPort":integer
, "authorizationConfig": { "accessPointId": "fsap-1234
", "iam": "ENABLED
" } } } ] }
efsVolumeConfiguration
-
タイプ: オブジェクト
必須: いいえ
このパラメータは、Amazon EFS ボリュームを使用する場合に指定します。
fileSystemId
-
型: 文字列
必須: はい
使用する Amazon EFS ファイルシステムの ID。
rootDirectory
-
型: 文字列
必須: いいえ
ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリ。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。
/
を指定すると、このパラメータを省略した場合と同じ結果になります。重要 authorizationConfig
に EFS アクセスポイントを指定する場合は、ルートディレクトリパラメータを省略するか、または/
に設定して EFS アクセスポイントにパスを設定する必要があります。 transitEncryption
-
型: 文字列
有効な値:
ENABLED
|DISABLED
必須: いいえ
Amazon ECS ホストと Amazon EFS サーバー間で、転送中の Amazon EFS データの暗号化を有効にするかどうかを指定します。Amazon EFS IAM 認証を使用する場合は、転送中の暗号化を有効にする必要があります。このパラメータを省略すると、[
DISABLED
] のデフォルト値が使用されます。詳細については、Amazon Elastic ファイルシステムユーザーガイドの「転送中データの暗号化」を参照してください。 transitEncryptionPort
-
タイプ: 整数
必須: いいえ
Amazon ECS ホストと Amazon EFS サーバーとの間で、暗号化されたデータを送信するときに使用するポート。転送中の暗号化ポートを指定しないと、Amazon EFS マウントヘルパーが使用するポート選択方式が使用されます。詳細については、[Amazon Elastic File System User Guide] (Amazon Elastic File System ユーザーガイド) の[EFS Mount Helper] (EFS マウントヘルパー) を参照してください。
authorizationConfig
-
タイプ: オブジェクト
必須: いいえ
Amazon EFS ファイルシステムに対する認可構成の詳細。
accessPointId
-
型: 文字列
必須: いいえ
使用するアクセスポイント ID。アクセスポイントを指定する場合は、
efsVolumeConfiguration
のルートディレクトリ値を省略するか、EFS アクセスポイントに設定されたパスを適用するために/
を設定する必要があります。アクセスポイントを使用する場合は、EFSVolumeConfiguration
で転送中の暗号化を有効にする必要があります。詳細については、Amazon Elastic ファイルシステムユーザーガイドの「Amazon EFS アクセスポイントの使用」を参照してください。 iam
-
型: 文字列
有効な値:
ENABLED
|DISABLED
必須: いいえ
タスク定義で定義した Amazon ECS タスクの IAM ロールを、Amazon EFS ファイルシステムのマウント時に使用するかどうかを指定します。使用する場合は、[
EFSVolumeConfiguration
] で転送中の暗号化を有効にする必要があります。このパラメータを省略すると、[DISABLED
] のデフォルト値が使用されます。詳細については、「タスク用の IAM ロール」を参照してください。