Amazon Elastic Container Service (Amazon ECS) コンテナや、Amazon Elastic Compute Cloud (Amazon EC2) の起動タイプのタスクで Amazon Elastic File System (Amazon EFS) を使用したいと考えています。これを行うにはどうすればよいですか?
簡単な説明
EFS ファイルシステムは、EC2 インスタンスで実行されているタスクまたはコンテナにマウントすることができます。これを行うには、ボリュームタスク定義パラメータでファイルシステム ID を提供するタスク定義を作成します。これにより、EFS ファイルシステムは、タスク定義で指定したタスクに自動的にマウントされるようになります。
必要なリソース:
解決方法
ネットワーク要件
- EFS ファイルシステムと ECS クラスターは同じ VPC 内にある必要があります。
- EFS ファイルシステムに関連付けられたセキュリティグループは、ECS コンテナインスタンスおよび ECS タスクからのポート 2049 (ネットワークファイルシステム、または NFS) でのインバウンド接続を許可する必要があります。
- ECS インスタンスまたはタスクのセキュリティグループは、ポート 2049 で EFS ファイルシステムのセキュリティグループへのアウトバウンド接続を許可する必要があります。
タスク定義の作成
1. Amazon ECS コンソールを開き、[タスク定義]、[新しいタスク定義の作成] を選択します。
2. 起動タイプの互換性として [EC2] を選択し、[Next step] を選択します。
3. [タスクおよびコンテナ定義の設定] に、タスク定義の名前を入力します。
4. [ボリューム] セクションで、[ボリュームの追加] を選択します。
5. ボリューム名を入力し、[ボリュームの種類] のドロップダウンメニューから [EFS] を選択します。
6. [ファイルシステム ID] は、ECS タスクで使用するファイルシステムの ID を選択します。
7. (オプション) 要件に応じて [ルートディレクトリ]、[転送中の暗号化]、[EFS IAM 認証] を指定します。オプションが変更されない場合は、デフォルトのルートディレクトリ「/」が使用されます。
8. [追加] をクリックします。
9. コンテナの作成時に、[コンテナの定義] で [コンテナを追加] を選択し、以前に作成したボリュームを使用します。次に、[マウントポイント] サブセクションの [ストレージとログ記録] で、手順 4 で作成したボリュームを選択します。
10. コンテナパスは、アプリケーションのコンテナ内のディレクトリパスを選択し、[追加] を選択します。
11. タスク定義ウィザードの残りのフィールドに入力してから、[作成] を選択します。
次の例では、タスク定義で 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>
ECS タスクを実行する
1. 上記で作成したタスク定義を使用して ECS タスクを実行します。
2. ECS インスタンスのパブリック IP アドレスを使用してウェブサイトにアクセスし、EFS ファイルシステムが EC2 コンテナに正常にマウントされていることを確認します。