베하! 안녕하세요 비티시 보이즈입니다.
오늘은 저번 예제로 알아보는 Boto3글에 이어서 pandas를 활용한 boto3에 대해 알아보겠습니다.
저번글에서 보여드린 것 처럼 Boto3만 쓰게되면 json 데이터를 정렬 시키지 않으면 시각화가 어려울 수 있다는것을 보여드렸습니다.
아래는 저번글에서 보여드린 코드와 print한 결과 값입니다.
import boto3
ec2 = boto3.client('ec2')
# Retrieves all regions/endpoints that work with EC2
response = ec2.describe_regions()
print('Regions:', response['Regions'])
# Retrieves availability zones only for region of the ec2 object
response = ec2.describe_availability_zones()
print('Availability Zones:', response['AvailabilityZones'])
보시는것 처럼 결과값들이 사람이 보기에 힘들게 출력되어 있습니다.
이결과 값들을 Python의 라이브러리인 pandas를 이용하여 데이터들을 시각화 또는 변환, 계산등을 쉽게 할 수 있게됩니다.
저번글에서 설명드린 Anaconda를 활용해서 pandas 라이브러리를 쉽게 설치 할 수 있습니다.
Anaconda 설치는 아래 링크를 참고 해주세요!
https://www.anaconda.com/download
우선 Anaconda에서 pandas 라이브러리를 설치 하는 방법입니다.
Anaconda Navigator에서 Environments 부분을 클릭해주세요.
그리고 Environments 메뉴에서 빨간박스의 옵션을 All로 변경한뒤
파란박스로 표시된 검색창에서 pandas를 검색해서 라이브러리를 검색해주세요.
그리고 pandas를 선택한후 Apply 버튼을 눌러주시면 라이브러리 설치가 진행되게 됩니다!
그리고 이번글에서는 Jupyter Notebook을 활용하여 코드를 작성하고 실행시켜 보겠습니다!
빨간박스로 표시된 Jupyter Notebook의 Launch버튼을 눌러 실행시켜주세요
그리고 파일들을 저장할 폴더를 지정한후 Python 파일을 만들어주세요
import pandas as pd
import boto3
import os
import json
# os.chdir('/mnt/c/Users/in-jinho.lee/Documents/DKMS_Fine_Resource')
ec2client = boto3.client('ec2',
aws_access_key_id = 'xxxxxxxxx',
aws_secret_access_key = 'xxxxxxxxx',
aws_session_token = 'xxxxxxxxx',
region_name="ap-northeast-2"
)
response = ec2client.describe_instances()
print(response)
우선 boto3를 사용하여 현재 서울리전의 ec2정보를 조회하는 파이썬 코드입니다.
결과값은 이런식의 json데이터가 되며 이데이터중 Pandas를 이용해 Dataframe으로 만들기위해 key값이 Reservations인 데이터를 추출해 Dataframe으로 만들어 출력해보겠습니다.
import pandas as pd
import boto3
import os
import json
# os.chdir('/mnt/c/Users/in-jinho.lee/Documents/DKMS_Fine_Resource')
ec2client = boto3.client('ec2',
aws_access_key_id = 'xxxxxxxxx',
aws_secret_access_key = 'xxxxxxxxx',
aws_session_token = 'xxxxxxxxx',
region_name="ap-northeast-2"
)
response = ec2client.describe_instances()['Reservations']
df = pd.DataFrame(response)
display(df)
처음 코드에서
response = ec2client.describe_instances()['Reservations']
df = pd.DataFrame(response)
display(df)
부분을 추가하여 df라는 변수에 pandas의 dataframe을 저장하여 출력한 결과입니다.
아직 데이터들이 Intsances라는 Key값에 배열로 저장돼어 있기 때문에 원하는 정보들을 보기가 어렵습니다.
response 결과값에서 Instances라는 Key값의 배열을 데이터로 추출해 출력해 보겠습니다.
코드를 수정해주세요!
import pandas as pd
import boto3
import os
import json
# os.chdir('/mnt/c/Users/in-jinho.lee/Documents/DKMS_Fine_Resource')
ec2client = boto3.client('ec2',
aws_access_key_id = 'xxxxxxxxxxx',
aws_secret_access_key = 'xxxxxxxxxxx',
aws_session_token = 'xxxxxxxxxxx',
region_name="ap-northeast-2"
)
response = ec2client.describe_instances()['Reservations']
df = pd.DataFrame(response[0]['Instances'])
display(df)
수정한 코드를 실행시키면 생성돼있는 ec2의 자세한 정보들을 보기편한 표형식으로 볼 수 있게됩니다.
ec2의 자세한 정보들을 추출해서 출력해보았는데요
이정보를 이용해서 aws의 리소스들을 관리할때 필요한 정보들을 한눈에 파악할 수 있습니다.
그리고 더 필요한 정보는 위의 방식을 활용해서 필요한 Key의 값을 추출해 변수에 저장하여 Dataframe으로 만들어 표로 보실 수 있습니다.
또 pandas의 dataframe을 파일로 추출 하여 저장해둘 수 도 있습니다.
위의 코드에서 df. 까지 치신뒤 tab을 두번 누르시면 사용할 수 있는 함수들을 보여주는데 to_~로 시작되는 함수들이 어떠한 형태로 파일을 생성해주는 함수들입니다!
저는 코드에 두줄을 추가하여 정보들을 html과 csv형태의 파일로 추출해보겠습니다.
df.to_html('ec2_html.html')
df.to_csv('ec2_csv.csv')
코드를 실행 하게되면 파이썬이 있는 폴더에 두개의 파일이 생성됩니다.
우선 csv 파일을 구글 시트에서 열어보겠습니다.
csv 파일을 이용해서 aws 리소스 문서들을 만들어 리소스들을 관리할 수 있습니다.
또 만들어둔 html파일을 열어 보겠습니다.
html파일을 이용해서 aws 리소스 관리 웹페이지등을 만들때 활용할 수 도있습니다!
그럼 여기까지 pandas를 활용한 boto3 였습니다.
감사합니다!
'Programming > Python' 카테고리의 다른 글
Streamlit이란? (0) | 2023.08.04 |
---|---|
[Python] Pandas 라이브러리 활용하기 (0) | 2023.07.03 |
예제로 알아보는 boto3 (0) | 2023.06.02 |
ChatGPT와 Slack 연동 (1) | 2023.05.17 |
[Python] Pycham을 이용해 AWS EC2 인스턴스 만들기 (0) | 2023.01.12 |
댓글