# Boto3 로 AWS 서비스 상태 확인하기

bhs9610·2020년 10월 12일
0

파이떤 보또뜨리

목록 보기
2/3

boto3 를 사용해 AWS Arns 기반으로 서비스가 죽었는지 살았는지 확인 할 수 있는 스크립트를 만들어보겠습니다.

목적

예를들어, ECS 의 서비스 상태를 확인하고 싶다 (DRAINING, PENDING 등..) 어떤 클러스터가 'DARINING' 상태인지 확인하고 싶은데 너무 많아서 확인하기 번거롭고 CLI 를 사용한다해도 계속 바꿔줘야 한다..ECS가 정상인지 아닌지, 무엇이 잘못되었는지 알려주는 스크립트를 만들어보자

import boto3

ecs_client = boto3.client('ecs', 'ap-northeast-2')
cluster_info = ecs_client.list_clusters()['clusterArns']

for cluster in cluster_info:
        clustername = cluster.split('/')[1]
        services = ecs_client.list_services(cluster=clustername)['serviceArns']
        if services:
            service_names = ecs_client.describe_services(cluster=cluster, services=services)['services']
            for service in service_names:
                print(service['desiredCount'])
                print(service['runningCount'])

aws cli 를 통해 credential 인증을 해놨기 때문에 따로 정의하지않고 리전만 정의해준다. 마지막줄은 desiredCount 와 runngingCount 를 가져와 출력한다

간략한 코드설명

ecs_client.list_clusters()

이름대로 ecs에 있는 클러스터 리스트를 가져온다. 그중에 'ClusterArns' 으로된 리스트만 빼온뒤 변수에 저장한다

for cluster in cluster_info: clustername = cluster.split('/')[1]

AWS Arns 구조를 보면 "arn:aws:ecs:ap-northeast-2:475667265637:cluster/changman" 이렇게 되어 있는데 이름만 가져와서 볼거라 split('/') 을 사용해 구분해준다.

  • 나머지 사용된 boto3 메서드들이다
response = client.list_services(
    cluster='string',
    nextToken='string',
    maxResults=123,
    launchType='EC2'|'FARGATE',
    schedulingStrategy='REPLICA'|'DAEMON'
)
response = client.describe_services(
    cluster='string',
    services=[
        'string',
    ],
    include=[
        'TAGS',
    ]
)

다음에는,

지금은 ECS 를 바탕으로 만들었지만 여러 지원되는 메서드들이 많아 다음에는 EKS Cluster 를 확일 할 수 있게 만들어봐야겠다.

profile
@changhyuni

0개의 댓글