AWS ECS优化容器日志通过Terraform移动到cloudwatch日志

AWS ECS优化容器日志通过Terraform移动到cloudwatch日志,terraform,amazon-ecs,amazon-cloudwatchlogs,aws-ecr,Terraform,Amazon Ecs,Amazon Cloudwatchlogs,Aws Ecr,我正在尝试将AWS ECS容器任务日志移动到cloud watch,我已经为“Logdriver”配置了IAM策略和Terraform任务,我没有将任何容器集中日志移动到Cloudwatch>> Cofiguration.JSON>>> "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "app-api", "awslogs-region": "eu-we

我正在尝试将AWS ECS容器任务日志移动到cloud watch,我已经为“Logdriver”配置了IAM策略和Terraform任务,我没有将任何容器集中日志移动到Cloudwatch>>

Cofiguration.JSON>>>

"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
      "awslogs-group": "app-api",
      "awslogs-region": "eu-west-1",
      "awslogs-stream-prefix": "app-logs"
    }
  } 
ecs.tf>>

"elasticloadbalancing:DeregisterTargets",
    "elasticloadbalancing:Describe*",           "elasticloadbalancing:Describe*",
    "elasticloadbalancing:RegisterInstancesWithLoadBalancer",           "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
    "elasticloadbalancing:RegisterTargets"          "elasticloadbalancing:RegisterTargets",
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:DescribeLogStreams",
    "logs:PutSubscriptionFilter",
    "logs:PutLogEvents"
任务容器记录的信息类型主要取决于它们的ENTRYPOINT命令。默认情况下,捕获的日志显示在本地运行容器时通常在交互终端中看到的命令输出,即STDOUT和STDERR I/O流

你想要什么样的日志? 根据上面的定义,如果您在ecs上使用默认的aws日志,则只能从STDOUT和STDER获取

如果您想从文件中获取日志,您应该获得自己的awslogs配置

  • 将容器日志文件装载到容器实例(容器定义上的配置)
  • 如果不使用ECS优化的AMI,请安装aws日志代理
  • 如果您使用ECS优化的AMI,请下载use
    curlhttps://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
  • 使用自定义配置运行代理安装程序

    python awslogs-agent-setup.py-n-r${AWS::Region}-c您的_awslogs_configuration.conf | | error_exit“无法运行CloudWatch日志代理安装程序”


看起来您发布了terraform文件的操作,您介意发布角色的其余配置吗?我对资源配置特别感兴趣。我没有看到任何ECR操作,所以我猜缺少什么?当然@JamieStarke变量“ecsServiceRolePolicy”{default=我想从容器中获取应用程序日志,如何更改我的awslogs配置?是否也必须在ECS优化的AMI中安装日志代理?是的,脚本将使用您的自定义配置运行代理是的,我可以借助日志驱动程序将集中日志提取到Cloudwatch。谢谢大家