Amazon EFS ボリューム - Amazon Elastic Container Service

Amazon EFS ボリューム

Amazon Elastic File System (Amazon EFS) では、Amazon ECS タスクで使用するためのシンプルでスケーラブルなファイルストレージを提供します。Amazon EFS を使用すると、ストレージ容量がファイルの追加や削除に応じて自動的に拡大したりし縮小したり伸縮自在になります。アプリケーションでは、必要なときに必要なストレージを確保できます。

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

チュートリアルについては、「チュートリアル:Amazon ECS で 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 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
  • Fargate でホストされるタスクの場合、Amazon EFS ファイルシステムはプラットフォームバージョン 1.4.0 以降でサポートされます。詳細については、「AWS Fargateプラットフォームのバージョン」を参照してください。

  • Fargate でホストされるタスクに Amazon EFS ボリュームを使用する場合、Fargate は Amazon EFS ボリュームの管理を担当するスーパーバイザーコンテナを作成します。スーパーバイザーコンテナは、タスクのメモリを少しだけ使用します。スーパーバイザーコンテナは、タスクメタデータバージョン 4 エンドポイントにクエリを実行するときに表示されますが、 CloudWatch.Container Insights では表示されません。詳細については、「タスクメタデータエンドポイントバージョン 4」を参照してください。

Amazon EFS アクセスポイントを使用する

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

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

注記

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

Amazon ECS タスクの IAM ロールを使用して、特定のアプリケーションで使用するアクセスポイントを限定できます。IAM ポリシーとアクセスポイントを組み合わせると、アプリケーションから特定のデータセットへのアクセスを簡単に保護できます。タスクの IAM ロールの詳しい使用方法については、「タスク用の IAM ロール」を参照してください。

タスク定義での Amazon EFS ファイルシステムの指定

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

{ "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 File System ユーザーガイドの「転送中のデータの暗号化」を参照してください。

transitEncryptionPort

タイプ: 整数

必須: いいえ

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

authorizationConfig

タイプ: オブジェクト

必須: いいえ

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

accessPointId

型: 文字列

必須: いいえ

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

iam

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

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