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-optimized AMI バージョン 20191212、コンテナエージェントバージョン 1.35.0 で、Amazon EFS ファイルシステムのサポートがパブリックプレビューとして追加されました。ただし、Amazon ECS-optimized AMI バージョン 20200319、コンテナエージェントバージョン 1.38.0 で、Amazon EFS ファイルシステムのサポート (Amazon EFS アクセスポイントと IAM 認証機能を含む) が一般提供されました。これらの機能を利用するには、Amazon ECS-optimized 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 を使用するタスクの場合、プラットフォームバージョン 1.4.0 以降で、Amazon EFS ファイルシステムのサポートが追加されました。詳細については、「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 ロール」を参照してください。