AWS ecs 任务定义变量

Posted

技术标签:

【中文标题】AWS ecs 任务定义变量【英文标题】:AWS ecs task definition variables 【发布时间】:2017-03-04 05:59:44 【问题描述】:

是否可以在 AWS ECS 任务定义中动态设置值?例如。我有以下卷定义。

"volumes": [
    
        "host": 
            "sourcePath": "/tmp/logs/registrations"
        ,
        "name": "logs"
    
],

我想做类似/tmp/logs/<container_id> 的事情。

我正在尝试这样做,因为我有多个容器运行同一个应用程序。我需要为 sumologic 收集器挂载每个容器日志目录。问题是如果目录没有被容器命名空间,那么挂载就会发生冲突。

【问题讨论】:

【参考方案1】:

如果不需要保存到文件系统,Cloudwatch 日志是另一种选择。

如果您使用的是 ECS 优化的 AMI,它已经配置好,您只需在容器任务定义中打开它:

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html

您还需要为每个容器配置日志组或日志流。

【讨论】:

这让我朝着正确的方向前进。我最终使用了 docker 提供的标准 json 日志。一切都按容器 ID 分组。【参考方案2】:

将日志保存到文件系统是硬性要求吗?如果没有,Sumo Logic 有一篇关于另一个选项的不错的文章:Update On Logging With Docker。

您在一个容器中运行Sumo Logic Collector for Docker,在另一个容器中运行您的应用程序。您将 Docker 配置为将日志从应用程序容器发送到 Sumo Logic 收集器。这是built into Docker,因此您的应用程序不需要更改。然后收集器容器会将这些日志发送到 Sumo Logic。

我已经看到了这种称为sidecar 的模式,以防您正在寻找它的其他示例。

【讨论】:

以上是关于AWS ecs 任务定义变量的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS:ENV 变量超出任务定义 JSON

AWS ECS 在一个任务定义中启动多个容器

一个集群上的 AWS ECS 多任务定义

如何在 AWS ECS 任务定义中配置日志

如何在 AWS ECS 中扩展任务/容器

AWS ECS - 部署全栈项目的最佳方式(任务定义、集群和服务)