在 Amazon ECS 部署中指定 Amazon EBS 磁碟區組態 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 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 程式碼片段顯示設定 volumeTypesizeInGiBencryptedkmsKeyId設定的語法。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 程式碼片段顯示設定 volumeTypethroughputsizeInGiBiops以及 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 會自動將 AmazonECSCreatedAmazonECSManaged預留標籤連接到 Amazon EBS 磁碟區。這表示您可以控制最多 48 個額外標籤連接至磁碟區。這些額外的標籤可以是使用者定義、ECS 受管或傳播的標籤。

如果您想要將 Amazon ECS 受管標籤新增至磁碟區,您必須在 UpdateServiceCreateServiceRunTaskStartTask呼叫trueenableECSManagedTags將 設定為 。如果您開啟 Amazon ECS 受管標籤,Amazon ECS 會使用叢集和服務資訊 (aws:ecs:clusterName 和 ) 自動標記磁碟區aws:ecs:serviceName。如需標記 Amazon ECS 資源的詳細資訊,請參閱標記 Amazon ECS 資源

下列 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 磁碟區。