Amazon ECS 태스크 정의에서 바인드 마운트 지정하기

Amazon ECS 태스크 정의에서 바인드 마운트 지정하기

Fargate나 Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 태스크의 경우, 다음 태스크 정의 JSON 조각이 태스크 정의의 volumes, mountPoints, ephemeralStorage 객체 문법을 보여줘요.

출처: 문서

본문

Fargate나 Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 태스크의 경우, 다음 태스크 정의 JSON 조각이 volumes, mountPoints, ephemeralStorage 객체의 문법을 보여줍니다.

{
   "family": "",
   ...
   "containerDefinitions" : [
      {
         "mountPoints" : [
            {
               "containerPath" : "/path/to/mount_volume",
               "sourceVolume" : "string"
            }
          ],
          "name" : "string"
       }
    ],
    ...
    "volumes" : [
       {
          "name" : "string"
       }
    ],
    "ephemeralStorage": {
	   "sizeInGiB": integer
    }
}

Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 태스크의 경우, 태스크 볼륨 상세 정보를 지정할 때 선택적인 host 파라미터와 sourcePath를 사용할 수 있습니다. 지정하면 바인드 마운트를 컨테이너가 아니라 태스크의 수명주기에 연결합니다.

"volumes" : [
    {
        "host" : {
            "sourcePath" : "string"
        },
        "name" : "string"
    }
]

각 태스크 정의 파라미터에 대한 자세한 설명은 다음과 같습니다.

name

  • Type: String, Required: No
  • 볼륨의 이름. 대문자·소문자 255자, 숫자, 하이픈(-), 밑줄(_)이 허용됩니다. 이 이름은 컨테이너 정의 mountPoints 객체의 sourceVolume 파라미터에서 참조됩니다.

host

  • Required: No
  • host 파라미터는 바인드 마운트의 수명주기와 저장 위치를 태스크가 아니라 호스트 Amazon EC2 인스턴스에 연결하는 데 사용합니다. host 파라미터가 비어 있으면 Docker 데몬이 데이터 볼륨용 호스트 경로를 할당하지만, 연결된 컨테이너가 중지된 후에도 데이터가 유지된다는 보장은 없습니다.
  • Windows 컨테이너는 $env:ProgramData와 같은 드라이브의 전체 디렉터리를 마운트할 수 있습니다.

    참고: sourcePath 파라미터는 Amazon EC2 인스턴스나 Amazon ECS Managed Instances에서 호스팅되는 태스크를 사용할 때만 지원됩니다.

sourcePath

  • Type: String, Required: No
  • host 파라미터를 사용할 때, 컨테이너에 제공되는 호스트 Amazon EC2 인스턴스의 경로를 선언하려면 sourcePath를 지정합니다. 이 파라미터가 비어 있으면 Docker 데몬이 호스트 경로를 할당합니다. host 파라미터에 sourcePath 파일 위치가 있으면 데이터 볼륨이 직접 삭제할 때까지 호스트 Amazon EC2 인스턴스의 지정된 위치에 유지됩니다. sourcePath 값이 호스트 Amazon EC2 인스턴스에 없으면 Docker 데몬이 생성하고, 위치가 이미 존재하면 소스 경로 폴더의 내용이 내보내집니다.

mountPoints

  • Type: Object array, Required: No
  • 컨테이너의 데이터 볼륨에 대한 마운트 지점. 이 파라미터는 create-container Docker API의 Volumes와 docker run의 --volume 옵션에 매핑됩니다. Windows 컨테이너는 $env:ProgramData와 같은 드라이브의 전체 디렉터리를 마운트할 수 있지만, 다른 드라이브의 디렉터리나 드라이브 간 마운트 지점은 사용할 수 없습니다. Amazon EBS 볼륨을 Amazon ECS 태스크에 직접 연결하려면 마운트 지점을 지정해야 합니다.

sourceVolume

  • Type: String, Required: Yes (mountPoints 사용 시)
  • 마운트할 볼륨의 이름.

containerPath

  • Type: String, Required: Yes (mountPoints 사용 시)
  • 볼륨이 마운트될 컨테이너 안의 경로.

readOnly

  • Type: Boolean, Required: No
  • 이 값이 true이면 컨테이너가 볼륨에 읽기 전용으로 접근합니다. false이면 컨테이너가 볼륨에 쓸 수 있습니다. 기본값은 false입니다. Windows 운영 체제를 실행하는 EC2 인스턴스에서 실행되는 태스크의 경우 기본값인 false로 두세요.

ephemeralStorage

  • Type: Object, Required: No
  • 태스크에 할당할 임시 스토리지(ephemeral storage)의 양. 이 파라미터는 플랫폼 버전 1.4.0 이상(Linux) 또는 1.0.0 이상(Windows)을 사용하는 AWS Fargate에서 호스팅되는 태스크에 대해 기본 양을 넘어 총 임시 스토리지 양을 확장하는 데 사용합니다.
  • 바인드 마운트의 임시 스토리지는 Copilot CLI, CloudFormation, AWS SDK 또는 CLI로 지정할 수 있습니다.

더 알아보기 (Learn more)

  • 태스크 스토리지에 대한 자세한 내용은 AWS 공식 문서를 참고해 주세요.