태스크 정의 생성하기 - Amazon Elastic Container Service

태스크 정의 생성하기

Amazon ECS에서 Docker 컨테이너를 실행하려면 먼저 태스크 정의를 생성해야 합니다. 하나의 태스크 정의에서 여러 컨테이너 및 데이터 볼륨을 정의할 수 있습니다. 태스크 정의에서 사용할 수 있는 파라미터에 대한 자세한 내용은 태스크 정의 파라미터 섹션을 참조하세요.

새 태스크 정의를 생성하려면

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

  2. 탐색 창에서 태스크 정의(Task Definitions), 새 태스크 정의 생성(Create new Task Definition)을 차례대로 선택합니다.

  3. 호환성 선택 페이지에서 해당 태스크가 사용해야 하는 시작 유형을 선택하고 다음 단계를 선택합니다.

    참고

    Fargate 시작 유형은 Windows 컨테이너와 호환되지 않습니다.

  4. 선택한 시작 유형에 따라 다음 탭 중 하나에 있는 단계를 따릅니다.

Fargate launch type

Fargate 시작 유형 호환성 템플릿 사용

Fargate를 선택한 경우 다음 단계를 완료하세요.

  1. (선택 사항) 태스크 정의의 JSON 표현이 있는 경우 다음 단계를 수행합니다.

    1. 태스크 및 컨테이너 정의 구성 페이지에서 하단으로 스크롤하여 JSON을 통한 구성을 선택합니다.

    2. 태스크 정의 JSON을 텍스트 영역에 붙여넣기하고 저장(Save)을 선택합니다.

    3. 정보를 확인한 후 생성을 선택합니다.

    페이지 하단으로 스크롤하고 JSON을 통한 구성을 선택합니다.

  2. 태스크 정의 이름은 태스크 정의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

  3. (선택 사항) 태스크 역할에서 태스크의 컨테이너가 사용자를 대신하여 AWS API 태스크를 호출할 수 있는 권한을 제공하는 IAM 역할을 선택합니다. 자세한 내용은 태스크에 대한 IAM 역할 섹션을 참조하세요.

    참고

    Amazon EC2 Container Service 태스크 역할 신뢰 관계가 있는 역할만 여기 표시됩니다. 태스크를 위한 IAM 역할 생성에 대한 자세한 내용은 태스크에 대한 IAM 역할 및 정책 생성을 참조하세요.

  4. 태스크 실행 IAM 역할에서 해당 태스크 실행 역할을 선택하거나 새 역할 생성을 선택하여 콘솔에서 자동으로 역할을 생성하게 합니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할 섹션을 참조하세요.

  5. 태스크 크기에서 태스크 메모리(GB) 값과 태스크 CPU(vCPU) 값을 선택합니다. 유효한 조합은 아래 표와 같습니다.

    CPU 값 메모리 값
    256(.25 vCPU) 512MB, 1GB, 2GB
    512(.5 vCPU) 1GB, 2GB, 3GB, 4GB
    1024(1 vCPU) 2GB, 3GB, 4GB, 5GB, 6GB, 7GB, 8GB
    2048(2 vCPU) 4~16GB(1GB 증분)
    4096(4 vCPU) 8~30GB(1GB 증분)
  6. 태스크 정의 내 각 컨테이너에 대해 다음 단계를 수행합니다.

    1. 컨테이너 추가를 선택합니다.

    2. 컨테이너 정의에서 사용할 각 필수 필드 및 모든 선택 필드를 작성합니다. 고급 컨테이너 구성 메뉴에서는 더 많은 컨테이너 정의 파라미터가 사용됩니다. 자세한 내용은 태스크 정의 파라미터 섹션을 참조하세요.

    3. 추가(Add)를 선택하여 컨테이너를 태스크 정의에 추가합니다.

  7. (선택 사항) 서비스 통합에서 App Mesh 통합에 대한 파라미터를 구성하려면 App Mesh 통합 활성화를 선택하고 다음의 태스크를 수행합니다.

    1. 메시 이름에서 사용하려는 기존 App Mesh 서비스 메시를 선택합니다. 목록에 메시가 보이지 않으면 먼저 메시를 생성해야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서서비스 메시를 참조하세요.

    2. App Mesh 엔드포인트에 다음 옵션 중 하나를 선택합니다.

      • 가상 노드 – 다음 정보를 입력하거나 선택합니다.

        • 애플리케이션 컨테이너 이름에서 App Mesh 통합에 사용할 컨테이너 이름을 선택합니다. 여기에서 선택하는 컨테이너는 태스크 정의에서 이미 정의되어 있어야 합니다.

        • 가상 노드 이름에서 사용할 기존 App Mesh 가상 노드를 선택합니다. 목록에 가상 노드가 나오지 않으면 먼저 가상 노드를 생성해야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서가상 노드를 참조하세요.

        • 가상 노드 포트는 App Mesh에서 가상 노드에 설정된 리스너 포트로 미리 채워집니다.

      • 가상 게이트웨이 – 다음 정보를 입력하거나 선택합니다.

        • 가상 게이트웨이 이름의 경우, 사용하려는 기존 App Mesh 가상 게이트웨이를 선택합니다. 목록에 가상 게이트웨이가 나오지 않으면 먼저 가상 게이트웨이를 생성해야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서가상 게이트웨이를 참조하세요.

        • 가상 게이트웨이 포트 – App Mesh에서 가상 게이트웨이에 설정된 리스너 포트로 미리 채워집니다.

    3. Envoy 이미지의 경우 me-south-1ap-east-1을 제외한 모든 리전에 840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.15.1.0-prod를 입력합니다. us-west-2me-south-1ap-east-1을 제외한 모든 리전으로 바꿀 수 있습니다. 애플리케이션이 이 리전 중 하나에 있을 경우, 840364872350도 리전에 적절한 값으로 바꾸어야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서Envoy 이미지를 참조하세요.

    4. 적용을 선택한 다음 확인을 선택합니다. 그러면 태스크 정의에 새로운 Envoy 프록시 컨테이너와 컨테이너를 지원할 설정이 추가됩니다. 가상 노드를 선택했다면 다음 단계에서 App Mesh 프록시 구성 설정이 자동으로 채워집니다. 가상 게이트웨이를 선택했다면, 프록시 구성은 가상 게이트웨이에 사용되지 않으므로 비활성화됩니다.

  8. (선택 사항) 서비스 통합에서 가상 노드를 선택했다면 프록시 구성에 대해 모든 미리 입력된 값을 확인해야 합니다. 이 필드에 대한 자세한 내용은 서비스 업데이트의 JSON 탭을 참조하세요.

  9. (선택 사항) 로그 라우터 통합의 경우, 사용자 지정 로그 라우팅 구성을 추가할 수 있습니다. FireLens 통합 활성화를 선택한 다음, 다음을 수행합니다.

    1. 유형의 경우, 사용할 로그 라우터 유형을 선택합니다.

    2. 이미지의 경우, 로그 라우터 컨테이너에 대한 이미지 URI를 입력합니다. fluentbit 로그 라우터 유형을 선택한 경우 이미지 필드는 Fluent Bit 이미지에 대해 AWS로 미리 채워집니다. 자세한 내용은 Fluent Bit 이미지에 AWS 사용 섹션을 참조하세요.

    3. 적용을 선택합니다. 이를 통해 log_router라는 이름의 태스크 정의에 새 로그 라우터 컨테이너가 생성되고, 해당 컨테이너를 지원하는 설정이 적용됩니다. 로그 라우터 통합 필드를 변형하는 경우 적용을 다시 선택하여 FireLens 컨테이너를 업데이트합니다.

  10. (선택 사항) 태스크에 데이터 볼륨을 정의하려면 볼륨 추가를 선택합니다. 자세한 내용은 태스크에서 데이터 볼륨 사용 섹션을 참조하세요.

    1. 이름에 볼륨의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

  11. 태그(Tags) 섹션에 각 태그에 대한 키와 값을 지정하여 태스크 정의와 연결합니다. 자세한 내용은 Amazon ECS 리소스에 태그 지정 섹션을 참조하세요.

  12. 생성(Create)을 선택합니다.

EC2 launch type

EC2 시작 유형 호환성 템플릿 사용

EC2를 선택한 경우 다음 단계를 완료하세요.

  1. (선택 사항) 태스크 정의의 JSON 표현이 있는 경우 다음 단계를 수행합니다.

    1. 태스크 및 컨테이너 정의 구성 페이지에서 하단으로 스크롤하여 JSON을 통한 구성을 선택합니다.

    2. 태스크 정의 JSON을 텍스트 영역에 붙여넣기하고 저장(Save)을 선택합니다.

    3. 정보를 확인한 후 생성을 선택합니다.

    페이지 하단으로 스크롤하고 JSON을 통한 구성을 선택합니다.

  2. 태스크 정의 이름에 태스크 정의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

  3. (선택 사항) 태스크 역할에서 태스크의 컨테이너가 사용자를 대신하여 AWS API를 호출할 수 있는 권한을 제공하는 IAM 역할을 선택합니다. 자세한 내용은 태스크에 대한 IAM 역할 섹션을 참조하세요.

    EC2 시작 유형을 사용하는 태스크의 경우, 이러한 권한은 일반적으로 Amazon ECS 컨테이너 인스턴스 IAM 역할로 부여됩니다. 자세한 내용은 Amazon ECS 컨테이너 인스턴스 IAM 역할 섹션을 참조하세요.

    참고

    Amazon EC2 Container Service 태스크 역할 신뢰 관계가 있는 역할만 여기 표시됩니다. 태스크를 위한 IAM 역할 생성에 대한 자세한 내용은 태스크에 대한 IAM 역할 및 정책 생성을 참조하세요.

  4. (선택 사항) 네트워크 모드에 대해 태스크에서 컨테이너에 사용할 Docker 네트워크 모드를 선택합니다. 사용 가능한 네트워크 모드는 Docker 실행 참조의 네트워크 설정에 설명된 모드와 동일합니다. 아래 단계에서 앱 메시 통합 활성화를 선택한 경우에는 awsvpc를 선택해야 합니다.

    기본 Docker 네트워크 모드는 bridge입니다. 네트워크 모드가 none으로 설정된 경우에는 컨테이너 정의에서 포트 매핑을 지정할 수 없고 태스크의 컨테이너가 외부 네트워크와 연결되지 않습니다. 네트워크 모드가 awsvpc인 경우 해당 태스크에는 탄력적 네트워크 인터페이스가 할당됩니다. hostawsvpc 네트워크 모드는 컨테이너에 가장 높은 수준의 네트워킹 성능을 제공합니다. 이는 bridge 모드에서 제공하는 가상화된 네트워크 스택 대신 Amazon EC2 네트워크 스택을 사용하기 때문입니다. 그러나 노출된 컨테이너 포트는 해당 호스트 포트로 직접 매핑됩니다. 그러므로 포트 매핑을 사용할 경우, 동적 호스트 포트 매핑을 활용하거나 단일 컨테이너 인스턴스에서 동일한 스택을 여러 개 인스턴스화할 수 없습니다.

  5. (선택 사항) 태스크 실행 역할에서 해당 태스크의 컨테이너가 사용자를 대신하여 AWS API를 호출할 수 있는 권한을 제공하는 IAM 역할을 선택합니다.

    EC2 시작 유형을 사용하는 태스크의 경우, 이러한 권한은 일반적으로 Amazon ECS 컨테이너 인스턴스 IAM 역할로 부여되며 이는 앞서 태스크 역할로 지정되었습니다. 태스크 실행 역할을 지정할 필요가 없습니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할을 참조하세요.

  6. (선택 사항) 태스크 크기에서 태스크 메모리(GB) 값과 태스크 CPU(vCPU) 값을 선택합니다. 지원되는 Task CPU (vCPU) 값은 128 CPU 단위(0.125 vCPUs)에서 10240 CPU 단위(10 vCPUs) 사이입니다.

    참고

    Windows 컨테이너에 대해서는 태스크 레벨 CPU와 메모리 파라미터가 무시됩니다. Windows 컨테이너에 대해서는 컨테이너 레벨 리소스를 지정할 것을 권장합니다.

  7. 태스크 정의 내 각 컨테이너에 대해 다음 단계를 수행합니다.

    1. 컨테이너 추가를 선택합니다.

    2. 컨테이너 정의에서 사용할 각 필수 필드 및 모든 선택 필드를 작성합니다. 고급 컨테이너 구성 메뉴에서는 더 많은 컨테이너 정의 파라미터가 사용됩니다. 자세한 내용은 태스크 정의 파라미터 섹션을 참조하세요.

    3. 추가(Add)를 선택하여 컨테이너를 태스크 정의에 추가합니다.

  8. (선택 사항) 제약의 경우 이 태스크 정의에서 생성되는 태스크가 해당 클러스터에 어떻게 배치되는지 정의하세요. EC2 시작 유형을 사용하는 태스크의 경우 제약을 사용하여 가용 영역, 인스턴스 유형 또는 사용자 지정 속성에 따라 태스크를 배치할 수 있습니다. 자세한 내용은 Amazon ECS 작업 배치 제약 섹션을 참조하세요.

  9. (선택 사항) 서비스 통합에서 App Mesh 통합에 대한 파라미터를 구성하려면 App Mesh 통합 활성화를 선택하고 다음의 태스크를 수행합니다.

    1. 메시 이름에서 사용하려는 기존 App Mesh 서비스 메시를 선택합니다. 목록에 메시가 보이지 않으면 먼저 메시를 생성해야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서서비스 메시를 참조하세요.

    2. App Mesh 엔드포인트에 다음 옵션 중 하나를 선택합니다.

      • 가상 노드 – 다음 정보를 입력하거나 선택합니다.

        • 애플리케이션 컨테이너 이름에서 App Mesh 통합에 사용할 컨테이너 이름을 선택합니다. 여기에서 선택하는 컨테이너는 태스크 정의에서 이미 정의되어 있어야 합니다.

        • 가상 노드 이름에서 사용할 기존 App Mesh 가상 노드를 선택합니다. 목록에 가상 노드가 나오지 않으면 먼저 가상 노드를 생성해야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서가상 노드를 참조하세요.

        • 가상 노드 포트는 App Mesh에서 가상 노드에 설정된 리스너 포트로 미리 채워집니다.

      • 가상 게이트웨이 – 다음 정보를 입력하거나 선택합니다.

        • 가상 게이트웨이 이름의 경우, 사용하려는 기존 App Mesh 가상 게이트웨이를 선택합니다. 목록에 가상 게이트웨이가 나오지 않으면 먼저 가상 게이트웨이를 생성해야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서가상 게이트웨이를 참조하세요.

        • 가상 게이트웨이 포트 – App Mesh에서 가상 게이트웨이에 설정된 리스너 포트로 미리 채워집니다.

    3. Envoy 이미지의 경우 me-south-1ap-east-1를 제외한 모든 리전에 840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.15.1.0-prod를 입력합니다. us-west-2me-south-1ap-east-1을 제외한 모든 리전으로 바꿀 수 있습니다. 애플리케이션이 이 리전 중 하나에 있을 경우, 840364872350도 리전에 적절한 값으로 바꾸어야 합니다. 자세한 내용은 AWS App Mesh 사용 설명서Envoy 이미지를 참조하세요.

    4. 적용을 선택한 다음 확인을 선택합니다. 그러면 태스크 정의에 새로운 Envoy 프록시 컨테이너와 컨테이너를 지원할 설정이 추가됩니다. 가상 노드를 선택했다면 다음 단계에서 App Mesh 프록시 구성 설정이 자동으로 채워집니다. 가상 게이트웨이를 선택했다면, 프록시 구성은 가상 게이트웨이에 사용되지 않으므로 비활성화됩니다.

  10. (선택 사항) 서비스 통합에서 가상 노드를 선택했다면 프록시 구성에 대해 모든 미리 입력된 값을 확인해야 합니다. 이 필드에 대한 자세한 내용은 서비스 업데이트의 JSON 탭을 참조하세요.

  11. (선택 사항) 로그 라우터 통합의 경우, 사용자 지정 로그 라우팅 구성을 추가할 수 있습니다. FireLens 통합 활성화를 선택한 다음, 다음을 수행합니다.

    1. 유형의 경우, 사용할 로그 라우터 유형을 선택합니다.

    2. 이미지의 경우, 로그 라우터 컨테이너에 대한 이미지 URI를 입력합니다. fluentbit 로그 라우터 유형을 선택한 경우 이미지 필드는 Fluent Bit 이미지에 대해 AWS로 미리 채워집니다. 자세한 내용은 Fluent Bit 이미지에 AWS 사용 섹션을 참조하세요.

    3. 적용을 선택합니다. 이를 통해 log_router라는 이름의 태스크 정의에 새 로그 라우터 컨테이너가 생성되고, 해당 컨테이너를 지원하는 설정이 적용됩니다. 로그 라우터 통합 필드를 변형하는 경우 적용을 다시 선택하여 FireLens 컨테이너를 업데이트합니다.

  12. (선택 사항) 태스크에 데이터 볼륨을 정의하려면 볼륨 추가를 선택합니다. 바인드 탑재 또는 Docker 볼륨을 생성할 수 있습니다. 자세한 내용은 태스크에서 데이터 볼륨 사용 섹션을 참조하세요.

    1. 이름에 볼륨의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

    2. (선택 사항) 바인드 탑재 볼륨을 생성하려면 소스 경로에 컨테이너에 제공할 호스트 컨테이너 인스턴스의 경로를 입력합니다. 이 필드를 비워 두면 Docker 데몬이 사용자 대신 호스트 경로를 할당합니다. 사용자가 소스 경로를 지정할 경우 사용자가 수동으로 삭제하기 전에는 데이터 볼륨이 호스트 컨테이너 인스턴스 상에 지정된 위치를 유지합니다. 소스 경로가 호스트 컨테이너 인스턴스에 없을 경우 Docker 데몬이 해당 경로를 생성합니다. 해당 위치가 있을 경우 소스 경로 폴더의 콘텐츠를 컨테이너로 내보냅니다.

    3. Docker 볼륨을 생성하려면 볼륨 드라이버 지정을 선택합니다.

      1. 드라이버에서 사용할 Docker 볼륨 드라이버를 선택합니다. 드라이버 값이 Docker에서 제공하는 드라이버 이름과 일치해야 합니다. 컨테이너 인스턴스에서 docker plugin ls을 사용하여 드라이버 이름을 가져옵니다.

      2. 범위에서 Docker 볼륨의 수명 주기를 결정하는 옵션을 선택합니다. 범위가 task로 지정된 Docker 볼륨은 태스크가 시작될 때 자동으로 프로비저닝되고, 태스크가 중단되면 삭제됩니다. 범위가 shared로 지정된 Docker 볼륨은 태스크 중단 후에도 유지됩니다.

      3. Docker 볼륨이 아직 존재하지 않는 경우에는 자동 프로비저닝 활성화를 선택하여 Docker 볼륨을 생성합니다. 이 옵션은 범위를 shared로 지정하는 볼륨에서만 사용할 수 있습니다.

      4. 드라이버 옵션에서 사용할 드라이버 고유의 키 값을 지정합니다.

      5. 볼륨 레이블에서 Docker 볼륨에 추가할 사용자 정의 메타데이터를 지정합니다.

  13. 태그(Tags) 섹션에 각 태그에 대한 키와 값을 지정하여 태스크 정의와 연결합니다. 자세한 내용은 Amazon ECS 리소스에 태그 지정 섹션을 참조하세요.

  14. 생성(Create)을 선택합니다.

External instance launch type

외부 인스턴스 시작 유형 사용

외부를 선택한 경우 다음 단계를 완료하세요.

  1. (선택 사항) 태스크 정의의 JSON 표현이 있는 경우 다음 단계를 수행합니다.

    1. 태스크 및 컨테이너 정의 구성 페이지에서 하단으로 스크롤하여 JSON을 통한 구성을 선택합니다.

    2. 태스크 정의 JSON을 텍스트 영역에 붙여넣기하고 저장(Save)을 선택합니다.

    3. 정보를 확인한 후 생성을 선택합니다.

    페이지 하단으로 스크롤하고 JSON을 통한 구성을 선택합니다.

  2. 태스크 정의 이름(Task Definition Name)에 태스크 정의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

  3. (선택 사항) 태스크 역할에서 태스크의 컨테이너가 사용자를 대신하여 AWS API를 호출할 수 있는 권한을 제공하는 IAM 역할을 선택합니다. 자세한 내용은 태스크에 대한 IAM 역할Amazon ECS Anywhere에 대한 IAM 권한 섹션을 참조하세요.

  4. (선택 사항) 네트워크 모드에 대해 태스크에서 컨테이너에 사용할 Docker 네트워크 모드를 선택합니다. 사용 가능한 네트워크 모드는 Docker 실행 참조의 네트워크 설정에 설명된 모드와 동일합니다.

    기본 Docker 네트워크 모드는 bridge입니다. 네트워크 모드가 none으로 설정된 경우에는 컨테이너 정의에서 포트 매핑을 지정할 수 없고 태스크의 컨테이너가 외부 네트워크와 연결되지 않습니다. 네트워크 모드가 awsvpc인 경우 해당 태스크에는 탄력적 네트워크 인터페이스가 할당됩니다. hostawsvpc 네트워크 모드는 컨테이너에 가장 높은 수준의 네트워킹 성능을 제공합니다. 이는 bridge 모드에서 제공하는 가상화된 네트워크 스택 대신 Amazon EC2 네트워크 스택을 사용하기 때문입니다. 그러나 노출된 컨테이너 포트는 해당 호스트 포트로 직접 매핑됩니다. 그러므로 포트 매핑을 사용할 경우, 동적 호스트 포트 매핑을 활용하거나 단일 컨테이너 인스턴스에서 동일한 스택을 여러 개 인스턴스화할 수 없습니다.

  5. (선택 사항) 태스크 실행 역할에서 해당 태스크의 컨테이너가 사용자를 대신하여 AWS API를 호출할 수 있는 권한을 제공하는 IAM 역할을 선택합니다.

  6. (선택 사항) 태스크 크기에서 태스크 메모리(GB) 값과 태스크 CPU(vCPU) 값을 선택합니다. 지원되는 Task CPU (vCPU) 값은 128 CPU 단위(0.125 vCPUs)에서 10240 CPU 단위(10 vCPUs) 사이입니다.

    참고

    Windows 컨테이너에 대해서는 태스크 레벨 CPU와 메모리 파라미터가 무시됩니다. Windows 컨테이너에 대해서는 컨테이너 레벨 리소스를 지정할 것을 권장합니다.

  7. 태스크 정의 내 각 컨테이너에 대해 다음 단계를 수행합니다.

    1. 컨테이너 추가를 선택합니다.

    2. 컨테이너 정의에서 사용할 각 필수 필드 및 모든 선택 필드를 작성합니다. 고급 컨테이너 구성 메뉴에서는 더 많은 컨테이너 정의 파라미터가 사용됩니다. 자세한 내용은 태스크 정의 파라미터 섹션을 참조하세요.

    3. 추가(Add)를 선택하여 컨테이너를 태스크 정의에 추가합니다.

  8. (선택 사항) 제약(Constraint)의 경우 이 태스크 정의에서 생성되는 작업이 해당 클러스터에 어떻게 배치되는지 정의하세요. 자세한 내용은 Amazon ECS 작업 배치 제약 섹션을 참조하세요.

  9. (선택 사항) 로그 라우터 통합의 경우, 사용자 지정 로그 라우팅 구성을 추가할 수 있습니다. FireLens 통합 활성화를 선택한 다음, 다음을 수행합니다.

    1. 유형의 경우, 사용할 로그 라우터 유형을 선택합니다.

    2. 이미지의 경우, 로그 라우터 컨테이너에 대한 이미지 URI를 입력합니다. fluentbit 로그 라우터 유형을 선택한 경우 이미지 필드는 Fluent Bit 이미지에 대해 AWS로 미리 채워집니다. 자세한 내용은 Fluent Bit 이미지에 AWS 사용 섹션을 참조하세요.

    3. 적용을 선택합니다. 이를 통해 log_router라는 이름의 태스크 정의에 새 로그 라우터 컨테이너가 생성되고, 해당 컨테이너를 지원하는 설정이 적용됩니다. 로그 라우터 통합 필드를 변형하는 경우 적용을 다시 선택하여 FireLens 컨테이너를 업데이트합니다.

  10. (선택 사항) 태스크에 데이터 볼륨을 정의하려면 볼륨 추가를 선택합니다. 바인드 탑재 또는 Docker 볼륨을 생성할 수 있습니다. 자세한 내용은 태스크에서 데이터 볼륨 사용 섹션을 참조하세요.

    1. 이름에 볼륨의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

    2. (선택 사항) 바인드 탑재 볼륨을 생성하려면 소스 경로에 컨테이너에 제공할 호스트 컨테이너 인스턴스의 경로를 입력합니다. 이 필드를 비워 두면 Docker 데몬이 사용자 대신 호스트 경로를 할당합니다. 사용자가 소스 경로를 지정할 경우 사용자가 수동으로 삭제하기 전에는 데이터 볼륨이 호스트 컨테이너 인스턴스 상에 지정된 위치를 유지합니다. 소스 경로가 호스트 컨테이너 인스턴스에 없을 경우 Docker 데몬이 해당 경로를 생성합니다. 해당 위치가 있을 경우 소스 경로 폴더의 콘텐츠를 컨테이너로 내보냅니다.

    3. Docker 볼륨을 생성하려면 볼륨 드라이버 지정을 선택합니다.

      1. 드라이버에서 사용할 Docker 볼륨 드라이버를 선택합니다. 드라이버 값이 Docker에서 제공하는 드라이버 이름과 일치해야 합니다. 컨테이너 인스턴스에서 docker plugin ls을 사용하여 드라이버 이름을 가져옵니다.

      2. 범위에서 Docker 볼륨의 수명 주기를 결정하는 옵션을 선택합니다. 범위가 task로 지정된 Docker 볼륨은 태스크가 시작될 때 자동으로 프로비저닝되고, 태스크가 중단되면 삭제됩니다. 범위가 shared로 지정된 Docker 볼륨은 태스크 중단 후에도 유지됩니다.

      3. Docker 볼륨이 아직 존재하지 않는 경우에는 자동 프로비저닝 활성화를 선택하여 Docker 볼륨을 생성합니다. 이 옵션은 범위를 shared로 지정하는 볼륨에서만 사용할 수 있습니다.

      4. 드라이버 옵션에서 사용할 드라이버 고유의 키 값을 지정합니다.

      5. 볼륨 레이블에서 Docker 볼륨에 추가할 사용자 정의 메타데이터를 지정합니다.

  11. 태그(Tags) 섹션에 각 태그에 대한 키와 값을 지정하여 태스크 정의와 연결합니다. 자세한 내용은 Amazon ECS 리소스에 태그 지정 섹션을 참조하세요.

  12. 생성(Create)을 선택합니다.

태스크 정의 템플릿

빈 태스크 정의 템플릿은 아래와 같습니다. 이 템플릿을 사용하여 태스크 정의를 생성한 다음 AWS CLI --cli-input-json 옵션을 사용하여 콘솔 JSON 입력 영역으로 붙여 넣거나 파일로 저장하고 사용할 수 있습니다. 자세한 내용은 태스크 정의 파라미터 섹션을 참조하세요.

{ "family": "", "taskRoleArn": "", "executionRoleArn": "", "networkMode": "bridge", "containerDefinitions": [ { "name": "", "image": "", "repositoryCredentials": { "credentialsParameter": "" }, "cpu": 0, "memory": 0, "memoryReservation": 0, "links": [ "" ], "portMappings": [ { "containerPort": 0, "hostPort": 0, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "" ], "command": [ "" ], "environment": [ { "name": "", "value": "" } ], "environmentFiles": [ { "value": "", "type": "s3" } ], "mountPoints": [ { "sourceVolume": "", "containerPath": "", "readOnly": true } ], "volumesFrom": [ { "sourceContainer": "", "readOnly": true } ], "linuxParameters": { "capabilities": { "add": [ "" ], "drop": [ "" ] }, "devices": [ { "hostPath": "", "containerPath": "", "permissions": [ "read" ] } ], "initProcessEnabled": true, "sharedMemorySize": 0, "tmpfs": [ { "containerPath": "", "size": 0, "mountOptions": [ "" ] } ], "maxSwap": 0, "swappiness": 0 }, "secrets": [ { "name": "", "valueFrom": "" } ], "dependsOn": [ { "containerName": "", "condition": "START" } ], "startTimeout": 0, "stopTimeout": 0, "hostname": "", "user": "", "workingDirectory": "", "disableNetworking": true, "privileged": true, "readonlyRootFilesystem": true, "dnsServers": [ "" ], "dnsSearchDomains": [ "" ], "extraHosts": [ { "hostname": "", "ipAddress": "" } ], "dockerSecurityOptions": [ "" ], "interactive": true, "pseudoTerminal": true, "dockerLabels": { "KeyName": "" }, "ulimits": [ { "name": "memlock", "softLimit": 0, "hardLimit": 0 } ], "logConfiguration": { "logDriver": "splunk", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] }, "healthCheck": { "command": [ "" ], "interval": 0, "timeout": 0, "retries": 0, "startPeriod": 0 }, "systemControls": [ { "namespace": "", "value": "" } ], "resourceRequirements": [ { "value": "", "type": "InferenceAccelerator" } ], "firelensConfiguration": { "type": "fluentbit", "options": { "KeyName": "" } } } ], "volumes": [ { "name": "", "host": { "sourcePath": "" }, "dockerVolumeConfiguration": { "scope": "shared", "autoprovision": true, "driver": "", "driverOpts": { "KeyName": "" }, "labels": { "KeyName": "" } }, "efsVolumeConfiguration": { "fileSystemId": "", "rootDirectory": "", "transitEncryption": "DISABLED", "transitEncryptionPort": 0, "authorizationConfig": { "accessPointId": "", "iam": "DISABLED" } } } ], "placementConstraints": [ { "type": "memberOf", "expression": "" } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "", "memory": "", "tags": [ { "key": "", "value": "" } ], "pidMode": "host", "ipcMode": "none", "proxyConfiguration": { "type": "APPMESH", "containerName": "", "properties": [ { "name": "", "value": "" } ] }, "inferenceAccelerators": [ { "deviceName": "", "deviceType": "" } ] }

다음 AWS CLI 명령을 사용하여 이 태스크 정의 템플릿을 생성할 수 있습니다.

aws ecs register-task-definition --generate-cli-skeleton