本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon ECS 日誌傳送至 AWS 服務或 AWS Partner
您可以使用 FireLens for Amazon ECS 來使用任務定義參數,將日誌路由到 AWS 服務或 AWS Partner Network (APN) 目的地,以進行日誌儲存和分析。 AWS Partner Network 是一個全球合作夥伴社群,利用計劃、專業知識和資源來建置、行銷和銷售客戶產品。如需詳細資訊,請參閱 AWS Partner
依預設,Amazon ECS 會設定容器相依性,確保 Firelens 容器先於所有使用它的容器啟動,並於所有使用它的容器停止後才停止。
若要使用此功能,您必須為任務建立 IAM 角色,以提供使用任務所需的任何 AWS 服務所需的許可。例如,若容器正在將日誌路由至 Firehose,則任務需要呼叫 firehose:PutRecordBatch API 的許可。如需詳細資訊,請參閱 《IAM 使用者指南》中的新增和移除 IAM 身分許可。
在下列情況下,任務可能也需要 Amazon ECS 任務執行角色。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色。
-
如果您的任務託管在 Fargate 上,而且您要從 Amazon ECR 提取容器映像,或在日誌組態 AWS Secrets Manager 中參考敏感資料,則必須包含任務執行 IAM 角色。
-
在使用 Amazon S3 中託管的自訂組態檔案時,任務執行 IAM 角色必須包含
s3:GetObject許可。
使用 FireLens for Amazon ECS 時,請考量下列事項:
-
建議將
my_service_新增至日誌容器名稱,以便在主控台中輕鬆區分容器名稱。 -
Amazon ECS 預設會在應用程式容器與 FireLens 容器之間新增啟動容器順序相依性。在應用程式容器與 FireLens 容器之間指定容器順序時,會覆寫預設的啟動容器順序。
-
託管於 Linux 上的 AWS Fargate 和 Linux 上的 Amazon EC2 的任務支援 Amazon ECS 的 FireLens。Windows 容器不支援 FireLens。
如需如何為 Windows 容器設定集中式記錄的相關資訊,請參閱 Centralized logging for Windows containers on Amazon ECS using Fluent Bit
(《使用 Fluent Bit 為 Amazon ECS 上的 Windows 容器設定集中式記錄》)。 -
您可以使用 CloudFormation 範本來設定 Amazon ECS FireLens的 。如需詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的 AWS::ECS::TaskDefinition FirelensConfiguration。
-
FireLens 在連接埠上監聽
24224,因此為了確保 FireLens 日誌路由器無法在任務之外連線,您不能在允許任務使用的安全群組中連接埠24224上的傳入流量。對於使用awsvpc網路模式的任務,這是與任務相關聯的安全群組。對於使用host網路模式的任務,這是與託管任務的 Amazon EC2 執行個體相關聯的安全群組。對於使用bridge網路模式的任務,請不要建立使用連接埠24224的任何連接埠映射。 -
對於使用
bridge網路模式的工作,具有 FireLens 配置的容器必須在任何依賴該模式的應用程式容器啟動之前啟動。若要控制容器的起始順序,請在工作定義中使用相依性條件。如需詳細資訊,請參閱容器相依性。注意
如果您在使用 FireLens 配置的容器定義中使用相依性條件參數,請確定每個容器都有
START或HEALTHY條件需求。 -
根據預設,FireLens 將叢集和任務定義名稱以及叢集的 Amazon Resource Name (ARN) 作為中繼資料索引鍵新增到 stout/stderr 容器紀錄。以下是中繼資料格式的範例。
"ecs_cluster": "cluster-name", "ecs_task_arn": "arn:aws:ecs:region:111122223333:task/cluster-name/f2ad7dba413f45ddb4EXAMPLE", "ecs_task_definition": "task-def-name:revision",如果您不想在紀錄中使用中繼資料,請在任務定義
firelensConfiguration部分中將false設定為enable-ecs-log-metadata。"firelensConfiguration":{ "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"false", "config-file-type":"file", "config-file-value":"/extra.conf" }
您可以設定FireLens容器以非根使用者身分執行。考慮下列各項:
-
若要將FireLens容器設定為以非根使用者身分執行,您必須以下列其中一種格式指定使用者:
-
uid -
uid:gid -
uid:group
如需在容器定義中指定使用者的詳細資訊,請參閱《Amazon Elastic Container Service API 參考》中的 ContainerDefinition。
FireLens 容器會透過UNIX通訊端接收應用程式日誌。Amazon ECS 代理程式使用
uid將通訊端目錄的擁有權指派給FireLens容器。 -
-
Amazon ECS Agent 版本
1.96.0和更新版本以及 Amazon ECS 最佳化 AMI 版本v20250716和更新版本支援將FireLens容器設定為以非根使用者身分執行。 -
當您為FireLens容器指定使用者時,
uid必須是唯一的,且不會用於任務或容器執行個體中屬於其他容器的其他程序。
如需有關如何搭配 Amazon ECS 使用多個組態檔案 (包括您託管的或 Amazon S3 中的檔案) 的資訊,請參閱 Init process for Fluent Bit on ECS, multi-config support
如需範例組態的詳細資訊,請參閱 Amazon ECS 任務定義範例:將日誌路由至 FireLens。
如需設定高輸送量日誌的詳細資訊,請參閱 為高輸送量設定 Amazon ECS 日誌。