ボリューム設定を Amazon ECS のタスク定義の起動時刻まで延期する
Amazon EBS ボリュームを設定してタスクにアタッチするには、タスク定義でマウントポイント設定を指定して、ボリュームに名前を付ける必要があります。また、Amazon EBS ボリュームはタスク定義内でアタッチするようには設定ができないため、configuredAtLaunch
を true
に設定する必要があります。そのため、Amazon EBS ボリュームはデプロイ時にアタッチするように設定します。
AWS Command Line Interface (AWS CLI) を使用してタスク定義を登録するには、テンプレートを JSON ファイルとして保存し、そのファイルを register-task-definition
コマンドの入力として渡します。
AWS Management Consoleを使用してタスク定義を作成および登録するには、「コンソールを使用した Amazon ECS タスク定義の作成」を参照してください。
以下のタスク定義に、タスク定義内の mountPoints
および volumes
オブジェクト用構文を示します。タスク定義パラメータの詳細については、「Fargate 起動タイプでの Amazon ECS タスク定義パラメータ」を参照してください。この例を実行するには、
をユーザー自身の情報に置き換えます。user input placeholders
{ "family":
"mytaskdef"
, "containerDefinitions": [ { "name": "nginx
", "image": "public.ecr.aws/nginx/nginx:latest
", "networkMode": "awsvpc", "portMappings": [ { "name": "nginx-80-tcp
", "containerPort": 80, "hostPort": 80, "protocol": "tcp", "appProtocol": "http" } ], "mountPoints": [ { "sourceVolume": "myEBSVolume
", "containerPath": "/mount/ebs
", "readOnly":true
} ] } ], "volumes": [ { "name": "myEBSVolume
", "configuredAtLaunch": true } ], "requiresCompatibilities": [ "FARGATE", "EC2" ], "cpu": "1024", "memory": "3072", "networkMode": "awsvpc" }
{ "family":
"mytaskdef"
, "memory": "4096", "cpu": "2048", "family": "windows-simple-iis-2019-core", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"}, "requiresCompatibilities": ["EC2"] "containerDefinitions": [ { "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"], "entryPoint": [ "powershell", "-Command" ], "essential": true, "cpu": 2048, "memory": 4096, "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019", "name": "sample_windows_app", "portMappings": [ { "hostPort": 443, "containerPort": 80, "protocol": "tcp" } ], "mountPoints": [ { "sourceVolume": "myEBSVolume
", "containerPath": "drive:\ebs
", "readOnly":true
} ] } ], "volumes": [ { "name": "myEBSVolume
", "configuredAtLaunch": true } ], "requiresCompatibilities": [ "FARGATE", "EC2" ], "cpu": "1024", "memory": "3072", "networkMode": "awsvpc" }
mountPoints
-
タイプ: オブジェクト配列
必須: いいえ
コンテナでのデータボリュームのマウントポイント。このパラメータは creat-container Docker API の
Volumes
にマッピングされ、docker run の--volume
オプションにマッピングされます。Windows コンテナは
$env:ProgramData
と同じドライブに全部のディレクトリをマウントできます。Windows コンテナは、別のドライブにディレクトリをマウントすることはできません。また、マウントポイントは複数のドライブにまたがることはできません。Amazon EBS ボリュームを Amazon ECS タスクに直接アタッチするには、マウントポイントを指定する必要があります。sourceVolume
-
タイプ: 文字列
必須: はい (
mountPoints
を使用する場合)マウントするボリュームの名前。
containerPath
-
型: 文字列
必須: はい (
mountPoints
を使用する場合)ボリュームをマウントするコンテナ内のパス。
readOnly
-
型: ブール値
必須: いいえ
この値が
true
の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。この値がfalse
の場合、コンテナはボリュームに書き込むことができます。デフォルト値はfalse
です。Windows オペレーティングシステムを実行している EC2 インスタンスで実行されるタスクの場合、 値をデフォルト の
false
のままにします。
name
-
タイプ: 文字列
必須: いいえ
ボリュームの名前。最大 255 文字の英字 (大文字と小文字の区別あり)、数字、ハイフン (
-
)、アンダースコア (_
) を使用できます。この名前は、コンテナ定義mountPoints
オブジェクトのsourceVolume
パラメータで参照されます。 configuredAtLaunch
-
型: ブール値
必須: はい。EBS ボリュームをタスクに直接アタッチしたい場合には必須です。
起動時にボリュームを設定可能にするかどうかを指定します。
true
に設定すると、スタンドアロンタスクを実行するとき、またはサービスを作成または更新するときにボリュームを設定できます。false
に設定すると、タスク定義内で別のボリューム設定を提供することはできません。タスクにアタッチする Amazon EBS ボリュームを設定するには、このパラメータをtrue
に設定する必要があります。