我遇到 Amazon Elastic Container Service (Amazon ECS) 任務標籤的問題。如何對此問題進行疑難排解?
解決方案
使用 Amazon ECS 設定標籤時,您可能會遇到以下問題:
- 您的標籤不會從服務或任務定義傳播到任務。
- 您的標籤具有過時的 Amazon 資源名稱 (ARN) 和資源 ID 格式。
- 由於缺少 AWS Identity and Access Management (IAM) 許可或標籤限制,您無法新增標籤到您的 ECS 資源。
- 您無法在 AWS Billing 儀表板中看到 ECS 標籤。
若要對這些問題進疑難排解,請執行以下操作:
驗證是否使用 PropagateTags 參數以從服務或任務定義傳播到任務
PropagateTags 參數可用於將標籤從任務定義或服務複製到任務。這可以在執行任務或建立服務時完成。預設情況下此參數未打開。
您可以在 AWS CLI 中執行以下命令並將 servicename、clustername 和 region 替換為適當的值,來檢查在特定服務中是否有使用 PropagateTags:
aws ecs describe-services --services <servicename> --cluster <clustername> --region <region> --query 'services[*].propagateTags' --output text
若要配置標籤以使用 CLI 從服務或任務定義傳播,請參閲 RunTask 和 CreateService API。
若要使用主控台啟用標籤傳播:
- 開啟 Amazon ECS 主控台。
- 選擇您 ECS 資源的 AWS 區域。
- 在導覽窗格中,選擇 Task Definitions (任務定義)。
- 從資源列表中選擇任務定義,並選擇 Actions (動作)。然後,選擇 Create Service (建立服務) 或 Run Task (執行任務)。
- 在 Task tagging configuration (任務標記組態) 中,在 Propagate tags from (傳播標籤) 旁邊,選擇Service (服務) 或 Task definitions (任務定義)。
**注意:**預設選項為 Do not propagate (不傳播)。
若要使用 AWS CloudFormation 在 ECS 中使用標籤,您需要使用 EnableECSManagedTags 和 PropagateTags 屬性宣告實體 AWS::ECS::Service,且其值為:SERVICE 或 TASK_DEFINITION。
注意:
- 在於 CloudFormation 中建立堆疊後,使用 ECS 服務標籤相關屬性將需要進行堆疊更新和資源替換。這意味着該服務將被刪除並透過 CloudFormation 重新建立。
- 只有在執行任務或建立服務時才能使用 PropagateTags 參數。如需詳細資訊,請參閲 RunTask 和 CreateService API。
- 您可以存取與使用 Amazon ECS RunTask API 直接啟動的任務相同的 排程任務組態。
驗證您使用的是新的 ARN 格式
若要能標記 Amazon ECS 資源,您必須使用新的 Amazon 資源名稱 (ARN) 和 ID 格式。
兩種格式的示例:
- 舊格式:arn:aws:ecs:region:aws_account_id:service/service-name
- 新格式:arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name
若要將 ECS 部署遷移到新的 ARN 和資源 ID 格式,請參閲將您的 Amazon ECS 部署遷移到新的 ARN 和資源 ID 格式。
**注意:**在重新建立之前,在標記時您的現有資源不會收到新的 ARN 格式。
檢閱 IAM 實體是否具有所需要的許可並檢查標籤限制
如果您無法新增標籤到您的 ECS 服務,請執行以下操作:
- 檢查 CloudTrail 主控台中的 CloudTrail 事件是否有 TagResource 事件。
- 如果您看到以下錯誤之一:AccessDenied或標籤目前無法更新。等待幾分鐘,然後重試,則表示 IAM 實體沒有 ecs:TagResource 許可。
- 若要解決這個問題,請將 ecs:TagResource 許可新增至 IAM 實體。
- 新增許可後,再試一次將標籤新增至 ECS 叢集。
確認 ECS 標籤在標籤限制範圍內。若要檢閱標籤限制,請參閲標籤限制。
檢查是否為 AWS 帳單與成本管理問題
若要驗證 ECS 任務層級存在有所需要的標籤,請在 AWS CLI 中執行以下命令,並將value (值) 替換為 ARN:
aws ecs list-tags-for-resource --resource-arn <value>
若要使用主控台驗證 ECS 任務層級是否存在有所需要的標籤,請執行以下操作:
- 開啟 Amazon ECS 主控台。
- 選擇您 ECS 資源的 AWS 區域。
- 在導覽窗格中,選擇資源類型 (例如,Clusters (叢集))。
- 從資源列表中選擇資源,然後選擇**Tags (標籤)。**如果標籤存在,則會被列出。
如果您是要尋找受管標籤,則必須開啟 ECS-managed (由 ECS 管理)。執行以下命令並將 servicename、clustername 和 region 替換為適當的值,驗證 ECS-managed (由 ECS 管理) 狀態:
aws ecs describe-services --services <servicename> --cluster <clustername> --region <region> --query 'services[*].enableECSManagedTags' --output text
命令輸出將包含enableECSManagedTags 值。
您可以在使用 CLI 建立服務或執行任務時啟用 ECS-managed (由 ECS 管理) 的標籤,如需詳細資訊,請參閲RunTask 和 CreateService API。
若要使用主控台啟用 ECS-managed (由 ECS 管理) 的標籤:
- 開啟 Amazon ECS 主控台。
- 選擇您 ECS 資源的 AWS 區域。
- 在導覽窗格中,選擇 Task Definitions (任務定義)。
- 從資源列表中選擇任務定義,並選擇 Actions (動作)。然後,選擇 Create Service (建立服務) 或 Run Task (執行任務)。
- 在Task tagging configuration (任務標記組態) 中,選擇 Enable ECS managed tags (啟用由 ECS 管理的標籤)。
如果列出了用於計費的標籤,但在 AWS Cost Explorer 中看不到,請確認已從帳單與成本管理主控台中啟用標籤。若要啟用成本分配標籤,請參閲啟用使用者定義的成本分配標籤。
**注意:**每個在 Cost Explorer 中必須被視為篩選條件的標籤都需要啟用。啟用標籤最多可能需要 24 小時。
相關資訊
Amazon ECS 疑難排解
標記您的 Amazon ECS 資源