我無法在 Amazon CloudWatch Logs 中找到 Amazon Elastic Container Service (Amazon ECS) 任務的容器日誌。
簡短說明
由於下列其中一項原因,您的 Amazon ECS 容器日誌可能無法傳送至 CloudWatch Logs:
- 未正確設定 Amazon ECS 任務定義中的 awslogs 日誌驅動程式。
- AWS Identity and Access Management (IAM) 角色沒有必要許可。
- 未正確設定網路。
- 未正確設定容器的日誌層次。
解決方法
未正確設定 awslogs 日誌驅動程序
若要將容器日誌資訊傳送至 CloudWatch Logs,您必須正確設定任務中的容器。定義容器的參數時,請確保是否已正確設定 logConfiguration 參數。如果您的 Amazon ECS 任務定義涉及多個容器,則必須為每個容器設定此參數。此外,您必須將 awslogs 日誌驅動程式新增至任務定義中的 logConfiguration 參數。
對於 Amazon Elastic Compute Cloud (Amazon EC2) 啟動類型,請完成下列其他任務:
如需詳細資訊,請參閱安裝 Amazon ECS 容器代理程式。
IAM 角色沒有必要的許可
完成以下任務:
- 對於 Amazon ECS 容器執行個體的 IAM 角色,請新增 logs:CreateLogStream 和 logs:PutLogEvents 許可。
- 對於 AWS Fargate 啟動類型,請將 Amazon ECS 任務執行 IAM 角色與 logs:CreateLogStream 和 logs:PutLogEvents 許可搭配使用。如需詳細資訊,請參閱 Amazon ECS 任務執行 IAM 角色。
- 對於 Amazon EC2 啟動類型,請檢查下列內容:
對於不使用 Amazon ECS 任務執行 IAM 角色的任務,請將 logs:CreateLogStream 和 logs:PutLogEvents 許可授予容器執行個體 IAM 角色。
對於使用 Amazon ECS 任務執行 IAM 角色的任務,請將容器代理程式參數 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE 的值更新為 true。
**注意:**您使用 ecs-init 套件 1.16.0 -1 版或更高版本的 Amazon ECS 最佳化 AMI 時,此參數的預設值為 true。在 Windows 上,此參數的預設值為 false。如需詳細資訊,請參閱 Amazon ECS 容器代理程式組態。
未正確設定網路
將 awslogs 日誌驅動程式與沒有網際網路閘道的 Amazon Virtual Private Cloud (Amazon VPC) 搭配使用的任務必須建立 CloudWatch Logs 端點。如需詳細資訊,請參閱將 CloudWatch Logs 與介面 VPC 端點搭配使用。
未正確設定容器的日誌層次
awslogs 日誌驅動程式會將 STDOUT 和 STDERR I/O 串流的容器日誌從 Docker 傳遞到 CloudWatch Logs。更新您的應用程式,以將日誌傳送到 STDOUT 和 STDERR I/O 串流。在容器構置期間為應用程式設定正確的日誌層次。取決於應用程式,您可以透過環境變數或組態檔來設定日誌層次。
相關資訊
Amazon ECS 的監控工具
如何疑難排解 Amazon ECS 或 Amazon Elastic Kubernetes Service (Amazon EKS) 遺漏的容器日誌?