如何确定Fargate服务的Cloudwatch日志流?

时间:2018-05-17 17:22:10

标签: amazon-cloudwatch aws-fargate

我已经运行了Fargate服务,可以使用AWS控制台查看其Cloudwatch日志流(导航到该服务,然后单击其“日志”选项卡)。

我正在查看GetLogEvents的AWS文档,并看到您可以使用日志组名称和日志流名称访问日志。虽然我知道服务的日志组名称,但日志流名称是动态生成的。

如何获取正在运行的Fargate服务的当前日志流名称?

我正在检查AmazonECSClient文档,任何指针都会有所帮助。

修改

我发现实际上是为容器指定了日志组,而不是服务。检索服务的任务定义,我可以迭代具有指示选项的LogConfiguration部分的容器定义,但是只提供日志组和流前缀 no log stream name :< / p>

- service
 - task definition
  - container definitions
   - LogConfiguration:
       LogDriver:  awslogs
       Options:    awslogs-group=/ecs/myservice
                   awslogs-region=us-east-1
                   awslogs-stream-prefix=ecs

编辑2:

我在AWS控制台中看到,“日志”标签中的链接确实包含日志流名称。请参阅此示例网址中的 stream 值:

https://us-east-1.console.aws.amazon.com/cloudwatch/home
?region=us-east-1
#logEventViewer:group=/ecs/myservice;stream=ecs/myservice/ad7246dd-bb0e-4eff-b059-767d30d40e69

AWS控制台如何获得该值?

1 个答案:

答案 0 :(得分:2)

我终于在AWS文档here中找到了日志流名称的格式:

awslogs-stream-prefix

Required: No, unless using the Fargate launch type in which case it is required.

The awslogs-stream-prefix option allows you to associate a log stream
with the specified prefix, the container name, and the ID of the Amazon
ECS task to which the container belongs. If you specify a prefix with
this option, then the log stream takes the following format:

    prefix-name/container-name/ecs-task-id

请注意, ecs-task-id 是任务的ARN的GUID部分:

For this sample Task ARN:
arn:aws:ecs:us-east-1:123456789012:task/12373b3b-84c1-4398-850b-4caef9a983fc

the ecs-task-id to use for the log stream name is:
12373b3b-84c1-4398-850b-4caef9a983fc