如何對 Amazon ECS 任務的標籤問題進行疑難排解?

3 分的閱讀內容
0

我想要對 Amazon Elastic Container Service (Amazon ECS) 任務標籤問題進行疑難排解。

解決方法

注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

當您使用 Amazon ECS 設定任務標籤時,可能會遇到下列問題:

  • 您的標籤不會從服務或任務定義傳播到任務。
  • 標籤的 ARN 和資源 ID 格式已過期。
  • 由於缺少 AWS Identity and Access Management (IAM) 權限或標籤限制,您無法建立新的 Amazon ECS 資源或新增標籤。
  • 您無法在 AWS 帳單與成本管理主控台的帳單頁面上看到 Amazon ECS 標籤。

使用 PropagateTags 參數從服務或任務定義傳播到任務

依預設,不會啟動 PropagateTags 參數。若要將標籤從任務定義或服務複製到任務,請啟動 PropagateTags。您可以在執行任務、建立服務或更新服務時複製標籤。

注意: 在以下命令中,將 servicename 替換為您的服務名稱,將 clustername 替換為您的叢集名稱,將 region 替換為您的 AWS 區域。另外,將 taskdefinitionname 替換為您的任務定義名稱,將 taskdefinitionversion 替換為您的任務定義版本。

若要檢查 PropagateTags 是否在特定服務中啟動,請執行以下 describe-services 命令:

aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].propagateTags' --output text

若要為新的獨立任務啟動標籤傳播,請執行下列 run-task 命令:

aws ecs run-task --cluster clustername --task-definition taskdefinitionname:taskdefinitionversion --launch-type FARGATE/EC2 --propagate-tags TASK_DEFINITION/SERVICE

若要為新服務啟動標籤傳播,請執行下列 create-service 命令:

aws ecs create-service --cluster clustername --service-name servicename --task-definition taskdefinitionname:taskdefinitionversion --desired-count 2 --launch-type FARGATE --platform-version LATEST --network-configuration "awsvpcConfiguration={subnets=[subnet-abcdef123],securityGroups=[sg-pqrst5678]}" --propagateTags TASK_DEFINITION/SERVICE

若要啟動現有服務的標籤傳播,請執行下列 update-service 命令:

aws ecs update-service --cluster clustername --service servicename --propagate-tags SERVICE/TASK_DEFINITION --force-new-deployment

您也可以使用 Amazon ECS 主控台來啟用標籤傳播。

請完成下列步驟:

  1. 開啟 Amazon ECS 主控台
  2. 選取您 Amazon ECS 資源所屬的區域。
  3. 在導覽窗格中,選擇 Task definitions (任務定義)。
  4. 從資源清單中選取任務定義,然後選擇 Actions (動作)。
  5. 選擇 Create service (建立服務) 或 Run task (執行任務)。
  6. Task tagging configuration (任務標記組態) 中,選取 Service (服務) 或 Task definitions (任務定義)。
    注意: 預設選項為 Do not propagate (請勿傳播)。

若要使用 AWS CloudFormation 在 Amazon ECS 中設定標籤,您必須宣告 AWS::ECS::Service 資源。若要宣告 AWS::ECS::Service,請使用具有 SERVICETASK_DEFINITION 值的 EnableECSManagedTagsPropagateTags 屬性。

注意:

使用正確的 ARN 格式

若要標記 Amazon ECS 資源,您必須使用新的 ARN 和 ID 格式。若要將 ECS 部署移轉至新格式,請參閱將您的 Amazon ECS 部署移轉到新的 ARN 和資源 ID 格式

注意: 只有當您重新建立資源後,現有資源才會接收新的 ARN 格式。

確認 IAM 實體具有必要的權限,並檢查標籤限制

所有 AWS 帳戶都使用標記授權。若要在建立 Amazon ECS 資源時為其新增標籤,IAM 主體必須具有 ecs:TagResource 權限。以下 Amazon ECS API 也必須具有此權限:

  • CreateCapacityProvider
  • CreateCluster
  • CreateService
  • CreateTaskSet
  • RegisterContainerInstance
  • RegisterTaskDefinition
  • RunTask
  • StartTask

如果您無法為 Amazon ECS 服務新增標籤或建立資源,請完成下列步驟來解決此問題:

  1. 查看 AWS CloudTrail 事件以瞭解 TagResource 事件。
  2. 檢閱下列其中一個錯誤訊息的事件:
    "AccessDenied"
    -或-
    「目前無法更新標籤。請等待幾分鐘,然後再試一次」
    如果您收到上述錯誤之一,則表示 IAM 實體沒有 ecs:TagResource 權限。
  3. 使用 IAM 主控台AWS CLIecs:TagResource 權限新增至 IAM 實體。
  4. 重新建立資源,或再次將標籤新增至 Amazon ECS 叢集。
  5. 確認您的 Amazon ECS 標籤符合標籤限制

檢查您是否有帳單與成本管理問題

如果您無法透過標籤篩選 Amazon ECS 任務來檢查成本,請確認 Amazon ECS 任務上是否有必要的標籤。執行以下 list-tags-for-resource 命令:

aws ecs list-tags-for-resource --resource-arn value

注意: 用您的任務 ARN 替換 value (值)。

若要使用 Amazon ECS 主控台檢查 Amazon ECS 任務上的標籤,請完成下列步驟:

  1. 開啟 Amazon ECS 主控台
  2. 選取您 Amazon ECS 資源所屬的區域
  3. 在導覽窗格中,選擇資源類型,例如 Clusters (叢集)。
  4. 選取您的資源,然後選擇 Tags (標籤) 以查看該資源的所有標籤。

若要檢查受管標籤,您必須啟動 Amazon ECS 受管標籤。若要檢查 Amazon ECS 受管標籤是否已啟動,請執行以下 describe-services 命令:

aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].enableECSManagedTags' --output text

注意:servicename 替換為您的服務名稱,將 clustername 替換為您的叢集名稱,將 region 替換為您的區域。

在命令的輸出中,檢查 enableECSManagedTags 是否設定為 true

若要使用主控台啟動 Amazon ECS 受管標籤,請完成下列步驟:

  1. 開啟 Amazon ECS 主控台
  2. 選取您 Amazon ECS 資源所屬的區域
  3. 在導覽窗格中,選擇 Task definitions (任務定義)。
  4. 從資源清單中選取任務定義,然後選擇 Actions (動作)。
  5. 選擇 Create service (建立服務) 或 Run task (執行任務)。
  6. Task tagging configuration (任務標記組態) 中,選擇 Enable ECS managed tags (啟用 ECS 受管標籤)。

若要使用 AWS CLI 啟動 Amazon ECS 受管標籤,請執行 update-service 命令:

aws ecs update-service --cluster clustername --service servicename --enable-ecs-managed-tags --force-new-deployment

注意:clustername 替換為您的叢集名稱,將 servicename 替換為您的服務名稱。

即使您在 AWS Cost Explorer 中看不到標籤,您用於計費的標籤也可能會列出。若要解決此問題,請在帳單與成本管理主控台上啟動成本分配標籤

**注意:**最多可能需要 24 小時來啟用標籤。

相關資訊

Amazon ECS 疑難排解

標記 Amazon ECS 資源

授予在建立時標記資源的權限

AWS 官方
AWS 官方已更新 2 個月前