Amazon ECS 日志配置 returns "unsupported property logConfiguration"

Amazon ECS LogConfiguration returns "unsupported property logConfiguration"

我正在尝试让 LogConfiguration 用于特定的任务定义。但是 CloudFormation 一直抱怨它 Encountered unsupported property logConfiguration

按照文档说应该可以用

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_storage

"ContainerDefinitions" : [
  {
    "Name": "foo",
    "PortMappings": [ ... code omitted ... ],
    "logConfiguration" : {
      "logDriver" : "fluentd",
      "options" :  {
        "fluentd-address" : "foo:24224",
        "tag" : "foobar"
      }
    },
  }
]

知道我遗漏了什么吗?

您正在查看 Amazon ECS 文档而不是 AWS CloudFormation 文档。

根据 CloudFormation Amazon EC2 Container Service TaskDefinition ContainerDefinitions logConfiguration 不是 ContainerDefinitions

的一部分
{
  "Command" : [ String, ... ],
  "Cpu" : Integer,
  "EntryPoint" : [ String, ... ],
  "Environment" : [ Environment Variable, ... ],
  "Essential" : Boolean,
  "Image" : String,
  "Links" : [ String, ... ],
  "Memory" : Integer,
  "MountPoints" : [ Mount Point, ... ],
  "Name" : String,
  "PortMappings" : [ Port Map, ... ],
  "VolumesFrom" : [ Volume From, ... ]
}

我不确定问这个问题时 LogConfiguration 在 CloudFormation 中是否不可用,但现在可以了。

也是区分大小写的,所以你需要把logConfiguration改成LogConfigurationlogDriver改成LogDriveroptions改成Options。像这样:

"ContainerDefinitions" : [
  {
    "Name": "foo",
    "PortMappings": [ ... code omitted ... ],
    "LogConfiguration" : {
      "LogDriver" : "fluentd",
      "Options" :  {
        "fluentd-address" : "foo:24224",
        "tag" : "foobar"
      }
    }
  }
]

我没有用 fluentd 测试过,但我知道 awslogs 驱动程序的这个配置有效:

"ContainerDefinitions": [
  {
    "Name": { "Ref": "ContainerName" },
    "PortMappings": [ ... code omitted ... ],
    "LogConfiguration": {
      "LogDriver": "awslogs",
      "Options": {
        "awslogs-group": { "Ref": "LogGroupName" },
        "awslogs-region": { "Ref": "AWS::Region" },
        "awslogs-stream-prefix": { "Ref": "ContainerName" }
      }
    }
  }
]