You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECS Fargate启用readonlyrootFileSystem遇阻,Datadog代理配置难题求助

ECS Fargate启用readonlyrootFileSystem的合规性修复与Datadog代理适配方案

一、主服务Security Hub合规性问题排查

  • 先检查任务定义里所有容器的readonlyrootFileSystem是否都设为true:Security Hub的合规检查是针对任务里每个容器的,不是只看主服务容器。要是有侧车容器(比如日志、监控)没开这个配置,直接就会标记不合规。
  • 验证卷挂载的正确性:确保tmp/data卷用的是tmpfs类型(Fargate支持),别用绑定挂载,避免权限踩坑。给你个任务定义片段参考:
    "volumes": [
      {
        "name": "tmp-volume",
        "tmpfs": {
          "size": 2048
        }
      },
      {
        "name": "data-volume",
        "tmpfs": {
          "size": 4096
        }
      }
    ],
    "containerDefinitions": [
      {
        "name": "main-service",
        "readonlyRootFilesystem": true,
        "mountPoints": [
          {
            "sourceVolume": "tmp-volume",
            "containerPath": "/tmp",
            "readOnly": false
          },
          {
            "sourceVolume": "data-volume",
            "containerPath": "/app/data",
            "readOnly": false
          }
        ]
      }
    ]
    
  • 查Security Hub的具体失败原因:进Security Hub的合规结果页面,看清楚到底是哪项规则没通过,比如是不是要求卷必须加密(如果有对应规则的话),针对性调整。

二、Datadog代理只读文件系统适配

Datadog代理要写/etc/datadog-agent/这些目录,但直接挂卷会覆盖原有配置文件,别整整个/etc,只挂它需要写的子目录就行:

  • 先搞清楚Datadog代理需要写入的具体路径:一般是/etc/datadog-agent/conf.d(自定义配置)、/var/log/datadog(日志)、/var/run/datadog(套接字文件)这几个。
  • 在任务定义里给这些路径单独挂tmpfs卷:
    "volumes": [
      {
        "name": "dd-conf",
        "tmpfs": {
          "size": 1024
        }
      },
      {
        "name": "dd-logs",
        "tmpfs": {
          "size": 1024
        }
      },
      {
        "name": "dd-run",
        "tmpfs": {
          "size": 512
        }
      }
    ],
    "containerDefinitions": [
      {
        "name": "datadog-agent",
        "readonlyRootFilesystem": true,
        "mountPoints": [
          {
            "sourceVolume": "dd-conf",
            "containerPath": "/etc/datadog-agent/conf.d",
            "readOnly": false
          },
          {
            "sourceVolume": "dd-logs",
            "containerPath": "/var/log/datadog",
            "readOnly": false
          },
          {
            "sourceVolume": "dd-run",
            "containerPath": "/var/run/datadog",
            "readOnly": false
          }
        ]
        // 保留原有的环境变量、端口映射等配置
      }
    ]
    
  • 自定义配置别直接挂卷:要是需要改Datadog配置,用任务定义的environment变量传,或者用Datadog的自动发现,别直接覆盖conf.d目录,不然默认配置没了肯定启动失败。

三、SSM无法进容器的解决

开了只读根文件系统后,SSM会话管理器要写容器的临时目录,解决办法很简单:

  • 确保容器挂载了/tmp卷(就像主服务配置里那样),SSM代理要在/tmp下创建会话相关文件。
  • 要是用ECS Exec的话,确认配置里允许使用临时卷,或者给SSM的侧车容器也挂好必要的临时目录。

内容的提问来源于stack exchange,提问作者bruvio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:00:31