요약
- ECS Exec은 컨테이너 안에서 SSM Agent를 사이드카로 실행하는데, 이 agent가
/var/lib/amazon/ssm/에 파일을 써야 한다. readonlyRootFilesystem: true이면 agent가 쓰기 불가능해서 즉시 죽는다.terraform-aws-modules/ecs/aws모듈의 기본값이true라서, 명시적으로false를 안 넣으면 의도치 않게 걸린다.
본문
증상
aws ecs execute-command실행 시InvalidParameterException에러- 태스크 describe하면
enableExecuteCommand: true인데ExecuteCommandAgent: STOPPED
원인
- SSM Agent가 소켓/상태 파일을 쓸 디렉토리가 필요한데, readOnly 파일시스템이라 실패
- AWS ECS 자체 기본값은
false지만, Terraform ECS 모듈(terraform-aws-modules/ecs/aws ~> 5.7.3)의 container-definition 기본값이true
해결
- container_definitions에
readonly_root_filesystem = false명시
ECS Exec 안 될 때 체크리스트
- 서비스에
enable_execute_command = true설정 여부 - 설정 이후 태스크가 새로 시작되었는지 (기존 태스크는 적용 안 됨,
force-new-deployment필요) - Task Role에
ssmmessages:*4개 권한 존재 여부 readonlyRootFilesystem이true인지 ← 가장 놓치기 쉬움- Private subnet이면 NAT Gateway 또는
ssmmessagesVPC Endpoint 존재 여부
참고
이 문서를 참조하는 노트 (1)
함께 읽기 좋은 글
- enhanced Container Insights는 TaskId로 series를 폭증시키지만 CloudWatch proration이 비용을 수렴시킨다
- 변수 하나만 바꾼 카나리를 같은 타깃그룹에 동시 투입하면 부하 교란 없이 회귀 원인을 격리한다
- AWS Secrets Manager 변경자는 CloudTrail PutSecretValue로 추적한다
- SageMaker Async Inference는 ApproximateBacklogSizePerInstance로 Scale-to-Zero가 가능하다
- VPC Route Table은 VPC안에서 IP 범위에 따른 다음 홉을 지정한다.