공부하기싫어
article thumbnail

ECS에 컨테이너 인스턴스를 추가하고 EIP를 부여할 인스턴스를 특정하기 위해 인스턴스를 특정하여 태스크를 실행하기 위한 테스트

 

ECS 인스턴스에 사용자 속성 부여

사용자 속성(Attribute)이란?

Amazon ECS에서는 각 컨테이너 인스턴스에 사용자 정의 속성을 부여할 수 있습니다. 이러한 속성은 태스크 배치를 제어하는 데 유용하며, 특정 태스크가 특정 인스턴스에서 실행되도록 할 수 있습니다.

사용자 속성 부여의 이점

  • 유연한 배치 전략: 특정 작업을 특정 인스턴스에서 실행하도록 설정하여 리소스 사용을 최적화할 수 있습니다.
  • 고급 관리: 인프라를 더 세밀하게 제어하고 관리할 수 있습니다.

사용자 속성 부여 방법

AWS CLI를 사용하여 ECS 인스턴스에 사용자 속성을 부여할 수 있습니다. 다음은 해당 명령어의 예제입니다.

aws ecs put-attributes --cluster <클러스터 이름> --attributes "name=<속성 이름>,value=<속성 값>,targetType=container-instance,targetId=<인스턴스 ID>"

각 파라미터에 대한 설명은 다음과 같습니다:

  • -cluster: 사용자 속성을 부여할 ECS 클러스터의 이름을 지정합니다.
  • -attributes: 속성의 이름(name)과 값(value)을 지정합니다.
    • name: 부여할 속성의 이름입니다.
    • value: 부여할 속성의 값입니다.
    • targetType: 대상의 유형을 지정합니다. 여기서는 container-instance로 설정합니다.
    • targetId: 속성을 부여할 대상의 인스턴스 ID입니다.
  • ex
aws ecs put-attributes --cluster my-cluster --attributes "name=dashboard,value=true,targetType=container-instance,targetId=i-0123456789abcdef0" 
aws ecs put-attributes --cluster my-cluster --attributes "name=trade,value=true,targetType=container-instance,targetId=i-0987654321abcdef0" 
aws ecs put-attributes --cluster my-cluster --attributes "name=price-comparison,value=true,targetType=container-instance,targetId=i-112233445566778899"

 

 

Task Definition Json

{
    "family": "nginx_test",
    "containerDefinitions": [
        {
            "name": "nginx",
            "image": "123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/test-nginx:test.v.1",
            "cpu": 1024,
            "memory": 768,
            "memoryReservation": 512,
            "portMappings": [
                {
                    "containerPort": 80,
                    "hostPort": 8080,
                    "protocol": "tcp"
                }
            ],
            "essential": true,
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/nginx_test",
                    "awslogs-create-group": "true",
                    "awslogs-region": "ap-northeast-2",
                    "awslogs-stream-prefix": "ecs"
                }
            }
        }
    ],
    "taskRoleArn": "arn:aws:iam::123456789012:role/IAMRole-ECSTask-Example",
    "executionRoleArn": "arn:aws:iam::123456789012:role/IAMRole-ECSTask-Example",
    "networkMode": "bridge",
    "requiresCompatibilities": ["EC2"],
    "cpu": "1024",
    "memory": "768",
    "runtimePlatform": {
        "cpuArchitecture": "X86_64",
        "operatingSystemFamily": "LINUX"
    },
    "placementConstraints": [
        {
            "type": "memberOf",
            "expression": "attribute:dashboard == true"
        }
    ]
}

 

placementConstraints 섹션에서 방금 지정한 사용자 속성 컨테이너 인스턴스를 특정한다.

 

콘솔을 사용하여 서비스 생성

  1. ECS 콘솔 접속: AWS Management Console에 로그인하고 ECS 서비스로 이동합니다.
  2. 서비스 생성:
    • 클러스터 선택: your-cluster-name
    • 서비스 이름: nginx-test-latest
    • 시작 유형: EC2
    • 서비스 유형: DAEMON
    • 태스크 정의: nginx_test:latest
  3. 배포 구성 설정:
    • 배포 유형: 롤링 업데이트
    • 최소 실행 작업 비율: 0%

 

퍼블릭 ip를 통해 접속하여 동작 확인