Amazon ECS のデプロイ時に Amazon EBS ボリューム設定を指定する
configuredAtLaunch
パラメータを true
に設定してタスク定義を登録すると、デプロイ時にスタンドアロンタスクを実行するとき、またはサービスを作成または更新するときに Amazon EBS ボリュームを設定できます。
ボリュームを設定するには、Amazon ECS API を使用するか、あるいは次の AWS CLI コマンドの入力として JSON ファイルを渡します。
-
スタンドアロン ECS タスクを実行するための
run-task
。 -
特定のコンテナインスタンスでスタンドアロン ECS タスクを実行するための
start-task
。このコマンドは Fargate 起動タイプのタスクには適用されません。 -
新しい ECS サービスを作成するための
create-service
。 -
既存のサービスを更新するための
update-service
。
注記
マウントした Amazon EBS ボリュームにタスク内のコンテナから書き込みを行うには、コンテナをルートユーザーとして実行する必要があります。
あるいは、AWS Management Console を使用して Amazon EBS ボリュームを設定することもできます。詳細についてはAmazon ECS タスクとしてのアプリケーションの実行、コンソールを使用した Amazon ECS サービスの作成、およびAmazon ECS サービスを更新するを参照してください。
以下の JSON スニペットは、デプロイ時に設定可能なすべての Amazon EBS ボリュームパラメータを示します。ボリューム設定でこれらのパラメータを使用するには、
をユーザー自身の情報に置き換えます。これらのパラメータの詳細については、「ボリュームの設定」を参照してください。user input placeholders
"volumeConfigurations": [ { "name": "
ebs-volume
", "managedEBSVolume": { "encrypted":true
, "kmsKeyId": "arn:aws:kms:us-east-1
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
", "volumeType": "gp3
", "sizeInGiB":10
, "snapshotId": "snap-12345
", "volumeInitializationRate":100
, "iops":3000
, "throughput":125
, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1
", "value": "value1
" } ], "propagateTags": "NONE
" } ], "roleArn": "arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "terminationPolicy": { "deleteOnTermination":true
//can't be configured for service-managed tasks, always true }, "filesystemType": "ext4
" } } ]
重要
設定内で指定する volumeName
は、タスク定義で指定する volumeName
と同じであること。
ボリュームアタッチメントのステータスの確認については、「Amazon ECS タスクへの Amazon EBS ボリュームのアタッチに関するトラブルシューティング 」を参照してください。EBS ボリュームのアタッチメントに必要な Amazon ECS インフラストラクチャ AWS Identity and Access Management (IAM) ロールの詳細については、「Amazon ECS インフラストラクチャ IAM ロール」を参照してください。
Amazon EBS ボリュームの設定内容を示す JSON スニペットの例を以下に挙げます。これらの例は、スニペットを JSON ファイルに保存し、そのファイルを AWS CLI コマンドのパラメータ (--cli-input-json
file://
パラメータを使用) として渡すことで使用できます。filename
を、ユーザー自身の情報に置き換えます。user input placeholders
スタンドアロンタスク向けボリュームの設定
以下のスニペットは、Amazon EBS ボリュームをスタンドアロンタスクにアタッチする設定の構文を示します。以下の JSON スニペットは、volumeType
、sizeInGiB
、encrypted
、kmsKeyId
の各設定を構成するための構文を示します。JSON ファイルに指定された設定を使用して EBS ボリュームを作成し、スタンドアロンタスクにアタッチします。
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "volumeConfigurations": [ { "name": "datadir
", "managedEBSVolume": { "volumeType": "gp3
", "sizeInGiB":100
, "roleArn":"arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "encrypted":true
, "kmsKeyId": "arn:aws:kms:region
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
" } } ] }
サービス作成時のボリューム設定
以下のスニペットは、サービスで管理されるタスクにアタッチする Amazon EBS ボリュームを設定する構文を示します。ボリュームは、snapshotId
パラメータを使用して指定されたスナップショットから 200 MiB/秒のレートで取得されます。JSON ファイルに指定された設定を使用して EBS ボリュームを作成し、サービスで管理される各タスクにアタッチします。
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "serviceName": "mysvc
", "desiredCount":2
, "volumeConfigurations": [ { "name": "myEbsVolume
", "managedEBSVolume": { "roleArn":"arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "snapshotId": "snap-12345
", "volumeInitializationRate": 200 } } ] }
サービス更新時のボリューム設定
以下の JSON スニペットは、これまでタスクへのアタッチ用に Amazon EBS ボリュームが設定されていなかったサービスを更新するための構文を示します。configuredAtLaunch
を true
に設定したタスク定義リビジョンの ARN を提供する必要があります。以下の JSON スニペットは、volumeType
、sizeInGiB
、throughput
、iops
、および filesystemType
設定を構成する構文を示します。これらの設定を使用して EBS ボリュームを作成し、サービスで管理される各タスクにアタッチします。
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "service": "mysvc
", "desiredCount":2
, "volumeConfigurations": [ { "name": "myEbsVolume
", "managedEBSVolume": { "roleArn":"arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "volumeType": "gp3
", "sizeInGiB":100
, "iops":3000
, "throughput":125
, "filesystemType": "ext4
" } } ] }
Amazon EBS ボリュームを使用しないようにサービスを設定する
以下の JSON スニペットは、Amazon EBS ボリュームをそれ以上使用しないようにサービスを更新するための構文を示します。configuredAtLaunch
を false
に設定したタスク定義の ARN 、または configuredAtLaunch
パラメータのないタスク定義を提供する必要があります。空の volumeConfigurations
オブジェクトも提供する必要があります。
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "service": "mysvc
", "desiredCount":2
, "volumeConfigurations": [] }
Amazon EBS ボリュームの終了ポリシー
Amazon ECS タスクが終了すると、Amazon ECS は deleteOnTermination
の値に基づいて、終了したタスクに関連付けられている Amazon EBS ボリュームを削除する必要があるかどうかを判断します。デフォルトでは、タスクにアタッチされている EBS ボリュームは、タスクが終了すると削除されます。スタンドアロンタスクの場合、タスク終了時にボリュームを保存するように設定を変更することができます。
注記
サービスにより管理されるタスクにアタッチされたボリュームは保存されず、タスク終了時に必ず削除されます。
Amazon EBS ボリュームのタグ付け
tagSpecifications
オブジェクトを使用して Amazon EBS ボリュームにタグを付けることができます。このオブジェクトを使用すると、ボリュームがスタンドアロンタスクにアタッチされているか、あるいはサービス内のタスクにアタッチされているかに応じて、独自のタグを提供したり、あるいはタスク定義またはサービスからタグを伝播するよう設定することができます。1 つのボリュームにアタッチできるタグの最大数は 50 個です。
重要
Amazon ECS は、AmazonECSCreated
および AmazonECSManaged
のリザーブドタグを Amazon EBS ボリュームに自動的にアタッチするので、1 つのボリュームにユーザーが追加できるタグの最大数は 48 個になります。追加できるタグは、ユーザー定義タグ、ECS マネージド型タグ、または伝播されたタグのいずれです。
Amazon ECS マネージド型タグをボリュームに追加する場合は、UpdateService
、CreateService
、RunTask
、StartTask
の呼び出しの enableECSManagedTags
を true
に設定する必要があります。Amazon ECS マネージド型タグをオンにすると、Amazon ECS はボリュームにクラスターとサービスの情報 (aws:ecs:
と clusterName
aws:ecs:
) を自動的にタグ付けします。Amazon ECS リソースへのタグ付けの詳細については、「Amazon ECS リソースのタグ付け」を参照してください。serviceName
以下の JSON スニペットは、サービス内の各タスクにアタッチされた Amazon EBS ボリュームにユーザー定義タグを付ける構文を示します。この例を使用してサービスを作成するには、
をユーザー自身の情報に置き換えます。user input
placeholders
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "serviceName": "mysvc
", "desiredCount":2
, "enableECSManagedTags": true, "volumeConfigurations": [ { "name": "datadir
", "managedEBSVolume": { "volumeType": "gp3
", "sizeInGiB":100
, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1
", "value": "value1
" } ], "propagateTags": "NONE
" } ], "roleArn":"arn:aws:iam:1111222333
:role/ecsInfrastructureRole", "encrypted":true
, "kmsKeyId": "arn:aws:kms:region
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
" } } ] }
重要
Amazon EBS ボリュームにタグを付けるには、volume
リソースタイプを指定する必要があります。