New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Fargate で実行されている Amazon ECS コンテナまたはタスクに Amazon EFS ファイルシステムをマウントする方法を教えてください。
Amazon Elastic File System (Amazon EFS) ファイルシステムを、Amazon Elastic Container Service (Amazon ECS) コンテナまたはタスクにマウントしたいと考えています。Amazon ECS コンテナまたはタスクは AWS Fargate で実行されています。
解決策
Amazon EFS ファイルシステムを Fargate のタスクまたはコンテナにマウントするには、最初にタスク定義を作成する必要があります。次に、そのタスク定義を、AWS リージョン内の全アベイラビリティーゾーンにわたる、タスク内のコンテナで利用できるようにします。最後に、Fargate タスクは Amazon EFS を使用することで、タスク定義で指定したタスクにファイルシステムを自動的にマウントします。
重要: 次の解決策は、Fargate バージョン 1.4.0 以降に適用されます。これらのバージョンには、Amazon ECS のタスクおよびコンテナレベルで定義できる永続ストレージがあります。Fargate バージョン 1.3.0 以前では、Amazon EFS での永続ストレージの使用はサポートされていません。
前提条件
次のものが必要です。
Amazon EFS ファイルシステムを作成して設定する
- Amazon EFS ファイルシステムを作成し、EFS ID とセキュリティグループ ID を書き留めます。
注: Amazon EFS ファイルシステム、Amazon ECS クラスター、Fargate タスクは、すべて同じ VPC 内にある必要があります。 - EFS ファイルシステムのセキュリティグループルールを編集し、インバウンド接続を許可します。Fargate タスクまたはサービスに関連付けられているセキュリティグループでは、ポート 2049 (ネットワークファイルシステム、または NFS) でのインバウンド接続を許可する必要があります。
- Amazon ECS サービスのセキュリティグループを更新し、Amazon EFS ファイルシステムのセキュリティグループへのアウトバウンド接続をポート 2049 で許可します。
タスク定義を作成する
- Amazon ECS Classic コンソールを開きます。
- ナビゲーションペインで [タスク定義]、[新しいタスク定義の作成] の順に選択します。
- [起動タイプの互換性を選択] セクションで [FARGATE] を選択した後、[次のステップ] を選択します。
- [タスクとコンテナ定義の設定] セクションの [タスク定義の名前] に、タスク定義の名前を入力します。
- [ボリューム] セクションで [ボリュームの追加] を選択します。
- [名前] に、ボリュームの名前を入力します。
- [ボリュームタイプ] に EFS と入力します。
- [ファイルシステム ID] に、Amazon EFS ファイルシステムの ID を入力します。
注: ルートディレクトリ、転送時の暗号化、EFS AWS Identity and Access Management (IAM) 認証には、カスタムオプションを指定できます。"/" がルートディレクトリであるデフォルトオプションを使用することもできます。 - [追加] を選択します。
- [コンテナ定義] セクションで [コンテナを追加] を選択します。
- [ストレージとログ] セクションの [マウントポイント] サブセクションで、ステップ 5 で [ソースボリューム] として作成したボリュームを選択します。
- [コンテナパス] で、コンテナパスを選択します。
- (オプション) [環境] セクションの [エントリポイント] に、エントリポイントを入力します。
- [コマンド] に [df ,-h] コマンドを入力して、マウントされたファイルシステムを表示します。
注: このエントリポイントとコマンドを使用することで、Amazon EFS ファイルシステムが正常にマウントされたかどうかをテストできます。デフォルトでは、コンテナは df -h コマンドが正常に実行された後に終了します。ステップ 16 の JSON タスク定義例では、無限の while ループを使用しているため、タスクが実行中のままになります。 - [追加] を選択します。
- タスク定義ウィザードの残りのフィールドに情報を入力し、[作成] を選択します。
次の例の JSON タスク定義は、無限ループを使用してタスクを実行し続けます。このタスク定義**では、**efs-test という名前のデータボリュームが作成されます。**nginx ** コンテナは、ホストデータボリュームを Any_Container_Path パスにマウントします。
{ "family": "sample-fargate-test", "networkMode": "awsvpc", "executionRoleArn": "arn:aws:iam::1234567890:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "fargate-app", "image": "nginx", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "sh", "-c" ], "command": [ "df -h && while true; do echo \"RUNNING\"; done" ], "mountPoints": [ { "sourceVolume": "efs-test", "containerPath": "Any_Container_Path" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "AWS_LOG_GROUP_PATH", "awslogs-region": "AWS_REGION", "awslogs-stream-prefix": "AWS_STREAM_PREFIX" } } } ], "volumes": [ { "name": "efs-test", "efsVolumeConfiguration": { "fileSystemId": "fs-123xx4x5" } } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "memory": "512" }
注: fileSystemId、logConfiguration、containerPath、およびその他のプレースホルダーの値をカスタム設定の値に置き換えます。タスク定義に、awslogs ログドライバーをサポートする実行ロールの Amazon リソースネーム (ARN) があることも確認してください。
タスク定義で複数の mountPoints とボリュームを定義することで、複数の EFS を複数の宛先 (ContainerPath) にマウントすることができます。
Fargate タスクを実行してタスクログを確認する
- 以前に作成したタスク定義を使用して Fargate タスクを実行します。
重要: タスクを実行するには、Fargate プラットフォームバージョン 1.4.0 を使用する必要があります。 - Amazon EFS ファイルシステムが Fargate コンテナに正常にマウントされたことを確認するには、タスクログを参照します。
df -h の出力例を次に示します。2020-10-27 15:15:35Filesystem 1K-blocks Used Available Use% Mounted on 2020-10-27 15:15:35 overlay 30832548 9859324 19383976 34% / 2020-10-27 15:15:35 tmpfs 65536 0 65536 0% /dev 2020-10-27 15:15:35 shm 2018788 0 2018788 0% /dev/shm 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /sys/fs/cgroup 2020-10-27 15:15:35 fs-xxxxxxxx.efs.us-east-1.amazonaws.com:/ 9007199254739968 0 9007199254739968 0% /Any_Container_Path 2020-10-27 15:15:35 /dev/xvdcz 30832548 9859324 19383976 34% /etc/hosts 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /proc/acpi 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /sys/firmware 2020-10-27 15:15:35 tmpfs 2018788 0 2018788 0% /proc/scsi RUNNING
関連情報
Amazon EFS ボリュームのセキュリティとアクセス制御

関連するコンテンツ
- 質問済み 1年前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 2年前
- AWS公式更新しました 8ヶ月前