本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon ECS 部署中指定 Amazon EBS 磁碟區組態
在將 configuredAtLaunch
參數設定為 的情況下註冊任務定義之後true
,您可以在執行獨立任務時或在建立或更新服務時,於部署時設定 Amazon EBS 磁碟區。
若要設定磁碟區,您可以使用 Amazon ECS APIs,也可以傳遞 JSON 檔案做為下列 AWS CLI 命令的輸入:
-
run-task
執行獨立 ECS 任務。 -
start-task
在特定容器執行個體中執行獨立 ECS 任務。此命令不適用於 Fargate 啟動類型任務。 -
create-service
建立新的 ECS 服務。 -
update-service
更新現有的 服務。
注意
若要讓任務中的容器寫入掛載的 Amazon EBS 磁碟區,您必須以根使用者身分執行容器。
您也可以使用 設定 Amazon EBS 磁碟區 AWS Management Console。如需詳細資訊,請參閱將應用程式作為 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/s。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 磁碟區以連接至任務之服務的語法。您必須提供任務定義修訂的 ARN,並將 configuredAtLaunch
設定為 true
。下列 JSON 程式碼片段顯示設定 volumeType
、throughput
、 sizeInGiB
和 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 磁碟區的語法。您必須提供任務定義的 ARN,並將 configuredAtLaunch
設定為 false
,或是沒有 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 磁碟區。您可以使用 物件提供自己的標籤,並設定任務定義或服務的標籤傳播,視磁碟區是否連接至獨立任務或服務中的任務而定。可連接到磁碟區的標籤數量上限為 50。
重要
Amazon ECS 會自動將 AmazonECSCreated
和AmazonECSManaged
預留標籤連接到 Amazon EBS 磁碟區。這表示您可以控制最多 48 個額外標籤連接至磁碟區。這些額外的標籤可以是使用者定義、ECS 受管或傳播的標籤。
如果您想要將 Amazon ECS 受管標籤新增至磁碟區,您必須在 UpdateService
、 CreateService
RunTask
或 StartTask
呼叫true
中enableECSManagedTags
將 設定為 。如果您開啟 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
" } } ] }
重要
您必須指定volume
資源類型來標記 Amazon EBS 磁碟區。