Amazon Elastic File System (Amazon EFS) を、Amazon Elastic Container Service (Amazon ECS) のコンテナまたはタスクにマウントしたいと考えています。コンテナまたはタスクには Amazon Elastic Compute Cloud (Amazon EC2) 起動タイプが使用されています。
解決方法
ボリュームタスク定義パラメータにファイルシステム ID を指定するタスク定義を作成します。これにより、EFS ファイルシステムは、タスク定義で指定したタスクに自動的にマウントできるようになります。
ネットワークの要件
以下の設定を確認します。
- Amazon EC2 起動タイプの EFS ファイルシステムと ECS クラスターが、同じ仮想プライベートクラウド (VPC) 内にあること。
- EFS ファイルシステムのセキュリティグループが、ポート 2049 で ECS コンテナインスタンスと ECS タスクからのインバウンド接続を許可していること。
- ECS インスタンスまたはタスクのセキュリティグループが、ポート 2049 で EFS ファイルシステムのセキュリティグループへのアウトバウンド接続を許可していること。
タスク定義を作成する
次の手順を実行します。
- Amazon ECS コンソールを開き、[タスク定義]、**[新しいタスク定義の作成]**の順に選択します。
- **[起動タイプ]で[EC2]を選択し、[次のステップ]**を選択します。
- **[タスクとコンテナ定義の設定]**に、タスク定義の名前を入力します。
- **[ボリューム]セクションで、[ボリュームを追加]**を選択します。
- ボリュームの名前を入力し、**[ボリュームタイプ]ドロップダウンリストから[EFS]**を選択します。
- [ファイルシステム ID] には、ECS タスクで使用するファイルシステムの ID を選択します。
- (オプション) [ルートディレクトリ]、[転送中の暗号化]、[EFS IAM 認証]を指定します。何も指定しない場合、デフォルトのルートディレクトリ「/」が使用されます。
- **[追加]**を選択します。
- コンテナを作成するときは、**[コンテナ定義]で[コンテナを追加]を選択して、新しいボリュームを使用します。次に、[マウントポイント]サブセクションの[ストレージとロギング]**でボリュームを選択します。
- **[コンテナパス]にアプリケーションのコンテナ内のディレクトリパスを選択し、[追加]**を選択します。
- タスク定義ウィザードの必須フィールドに入力し、**[作成]**を選択します。
次の例では、タスク定義により efs-ec2-test という名称のデータボリュームが作成されます。nginxコンテナにより、ホストデータボリュームが /usr/share/nginx/html パスにマウントされます。
{ "containerDefinitions": [
{
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80,
"protocol": "tcp"
}
],
"essential": true,
"mountPoints": [
{
"containerPath": "/usr/share/nginx/html",
"sourceVolume": "efs-ec2-test"
}
],
"name": "nginx",
"image": "nginx"
}
],
"volumes": [
{
"name": "efs-ec2-test",
"efsVolumeConfiguration": {
"fileSystemId": "fs-1324abcd",
"transitEncryption": "ENABLED"
}
}
],
"family": "efs-test"
}
**注:**FileSystemId、ContainerPath、その他のタスク定義パラメーターは、ご自身の値に置き換えてください。
前の例では、ファイルシステムのルートディレクトリに、次のようなサンプルの index.html ファイルを作成できます。
<html> <body>
<h1>You are using an Amazon EFS file system for persistent container storage.</h1>
</body>
</html>
Amazon ECS タスクを実行する
次の手順を実行します。
- ECS タスクを実行するには、タスク定義を使用します。
- EFS ファイルシステムが ECS コンテナにマウントされていることを確認するには、インスタンスの IP アドレスを使用してウェブサイトにアクセスします。