실행중인 CloudFormation의 스택을 매니콘처럼 표시하는 스크립트

CloudFormation에서 여러가지 시행착오를 하고 있다면 매니콘으로부터 포치포치하고 있는 것이 좋은 가감 귀찮아지고 있어, CLI로 create-stack라든지 delete-stack하고 싶어진다. 그렇지만 결과를 일일이 커맨드 두드려 JSON 읽거나 하는 것도 귀찮고, 거기만 매니콘 보고 포치포치리 로드 버튼 두드리는 것도구나, 그래서, 바삭바삭하게 작성. python은 이것이 30step 이내에 쓸 수 있는 간편함이 좋네요…

boto3, tabulate 당은 표준으로는 들어 있지 않으므로 pip install 해 두는 것.
boto3에 대해서는 이 근처 의 사이트도 참고에.
import os
import sys
import time
import boto3
import pprint
from tabulate import tabulate

args = sys.argv

client = boto3.client('cloudformation')

stackstatus = ""

while stackstatus != 'CREATE_COMPLETE':
  os.system('clear')

  response = client.describe_stacks(StackName=args[1])
  stacks = response['Stacks']
  stackstatus = stacks[0]['StackStatus']

  response = client.describe_stack_events(StackName=args[1])
  events = response['StackEvents']
  events.sort(key=lambda x:x['Timestamp'])

  rows = []
  for keys in events:
    cols = []
    cols.append(keys['Timestamp'])
    cols.append(keys['LogicalResourceId'])
    cols.append(keys['ResourceStatus'])
    rows.append(cols)

  headers = ['Timestamp', 'LogicalResourceId', 'Status']
  table = tabulate(rows, headers)
  print(table)

  if stackstatus != 'CREATE_COMPLETE':
    time.sleep(10)

실행해 보면 ↓이 화면이 ...


이래! 콘솔이라면 위에 새로운 레코드가 오면 흐르기 때문에 표시를 역순으로 하고 있다.
Timestamp                         LogicalResourceId           Status
--------------------------------  --------------------------  ------------------
2020-05-10 10:47:57.928000+00:00  ApigwTest-issue01-Pipeline  CREATE_IN_PROGRESS
2020-05-10 10:48:02.269000+00:00  CODEBUILDLOGGROUP           CREATE_IN_PROGRESS
2020-05-10 10:48:02.699000+00:00  S3BUCKET                    CREATE_IN_PROGRESS
2020-05-10 10:48:02.789000+00:00  CODEBUILDLOGGROUP           CREATE_IN_PROGRESS
2020-05-10 10:48:03.178000+00:00  CODEBUILDLOGGROUP           CREATE_COMPLETE
2020-05-10 10:48:04.363000+00:00  S3BUCKET                    CREATE_IN_PROGRESS
2020-05-10 10:48:25.539000+00:00  S3BUCKET                    CREATE_COMPLETE
2020-05-10 10:48:27.772000+00:00  CODEBUILDIAMROLE            CREATE_IN_PROGRESS
2020-05-10 10:48:29.158000+00:00  CODEBUILDIAMROLE            CREATE_IN_PROGRESS
2020-05-10 10:48:45.746000+00:00  CODEBUILDIAMROLE            CREATE_COMPLETE
2020-05-10 10:48:49.115000+00:00  CODEBUILD                   CREATE_IN_PROGRESS
2020-05-10 10:48:51.445000+00:00  CODEBUILD                   CREATE_IN_PROGRESS
2020-05-10 10:48:52.222000+00:00  CODEBUILD                   CREATE_COMPLETE
2020-05-10 10:48:54.622000+00:00  PIPELINE                    CREATE_IN_PROGRESS
2020-05-10 10:48:55.360000+00:00  PIPELINE                    CREATE_IN_PROGRESS
2020-05-10 10:48:55.853000+00:00  PIPELINE                    CREATE_COMPLETE
2020-05-10 10:48:57.646000+00:00  ApigwTest-issue01-Pipeline  CREATE_COMPLETE

좋은 웹페이지 즐겨찾기