윈도우에서 Jupyter Lab 설치하고 Boto3 사용하기

Python으로 간단한 코드를 돌려보려고 하는데, IDE를 통채로 설치해서 사용하자니 너무 큰 작업이 되는 것 같고, 매번 IDE를 통해서 실행하는 것도 귀찮고 해서 Jupyter Lab을 설치하기로 결정하였습니다. IPython 스타일의 Jupyter Notebook이 기본 셋팅이지만 저는 Lab의 형태를 더 선호해서 일단 Jupyter Notebook을 설치한 다음에 Lab으로 변경할 것입니다.

궁극적으로 이런 셋팅을 하는 이유는 크게 두 가지 입니다. 하나는 Boto3 패키지를 이용해서 AWS API를 호출하는 것이고, 또 다른 하나는 Jupyter에서 다른 커널을 연결해서 작업하고자 함입니다. 단순히 Python만 사용하기에는 아까운 소프트웨어 입니다.

Jupyter Lab 설치

Jupyter Lab의 설치는 아나콘다를 통해서 손쉽게 진행할 수 있습니다. 어차피 Python 3.7도 설치해야 하므로 간편하게 미리 패키징된 아나콘다를 이용합니다. 1 아나콘다 다운로드 홈페이지는 기본적으로 Mac OS로 되어 있습니다. Windows 탭을 눌러서 다운로드 합니다.

설치를 진행할 때에는 설치하는 사용자에 대해서만 사용하는 것으로 진행하는 것이 좋습니다. 모든 사용자에게 사용 가능하게 하면 매번 관리자 권한을 할당해야 하는 불편함이 있습니다. 특히, Python의 패키지를 pip로 설치할 때에도 관리자 권한이 필요하게 됩니다. 그러므로 반드시 해당 계정만 이용하도록 합니다.

설치가 완료되면 Jupyter Notebook이 저절로 설치가 된 것을 확인할 수 있습니다. 윈도우 10에서는 설치된 Jupyter Notebook의 아이콘을 우클릭하여 자세히 > 파일 위치 열기를 누르면 바로가기 아이콘이 위치한 폴더가 열립니다. 여기서 Jupyter Notebook을 우클릭하여 속성에서 값을 일부 바꿔줍니다.

기존 값

C:\Users\laman\Anaconda3\python.exe 
C:\Users\laman\Anaconda3\cwp.py 
C:\Users\laman\Anaconda3 
C:\Users\laman\Anaconda3\python.exe 
C:\Users\laman\Anaconda3\Scripts\jupyter-notebook-script.py "%USERPROFILE%/"

변경 값

C:\Users\laman\Anaconda3\python.exe 
C:\Users\laman\Anaconda3\cwp.py 
C:\Users\laman\Anaconda3 
C:\Users\laman\Anaconda3\python.exe 
C:\Users\laman\Anaconda3\Scripts\jupyter-lab-script.py "%USERPROFILE%/"

보시다시피, 코드의 거의 마지막 부분에 실행하는 스크립트가 notebook인지 lab인지에 따라서 해당 프로그램이 실행됩니다. Jupyter Lab을 실행하기를 원하는 저는 lab으로 수정, 저장하고 앞으로 이 바로가기를 이용해서 Jupyter Lab을 실행할 것입니다.

Boto3 사용하기

Boto3는 Python의 패키지 이름입니다. AWS 클라우드 리소스에 대해서 직접 명령을 내리거나 자원 목록을 확인하는 등의 기능을 제공하는 API로써 단순한 코드로 AWS 내의 자원을 컨트롤할 수 있어서 자동화 스크립트를 작성하거나 주기적인 리포트를 만드는 등의 배치 작업에 매우 유용합니다. 특히, AWS Lambda 서비스 등에서 Boto3를 이용하게 된다면 작업 트리거를 통해서 특정 명령을 트리거 이벤트가 발생할 때에 수행하는 것도 손쉽게 가능합니다.

Boto3를 이용하려면 AWS의 API 키가 필요한데, 매번 패키지에서 정의하는 것은 매우 번거로운 일입니다. 그래서 보통은 AWS CLI를 통해서 %USERPROFILE%\.aws\credentials 파일에 API 키 정보를 담아서 이용하고는 합니다. 같은 경로의 config 파일에는 간단한 설정 정보를 담을 수 있습니다. 두 파일을 손수 만들어도 되고, AWS CLI를 설치한 다음에 cmd에서 aws configure를 실행해서 진행할 수도 있습니다.

Credentials

[default]
aws_access_key_id = AKI**************
aws_secret_access_key = ESj**************************

Config

[default]
region = ap-northeast-2

위와 같이 API 키 값과 지역 (서울)을 설정하면 Boto3 패키지에서 별도의 설정 없이 바로 API 호출이 가능합니다. 물론 해당 API 키가 허용하는 IAM 권한 내의 기능들만 이용할 수 있습니다. 간단한 예로 사용중인 EC2 인스턴스들의 이름을 출력해봅니다.

import boto3

ec2 = boto3.client('ec2')

response = ec2.describe_instances()
for item in response['Reservations']:
    for instance in item['Instances']:
        if instance.get('Tags') is not None:
            for tag in instance['Tags']:
                if tag.get('Key') == 'Name': print(tag['Value'])

그리고 그 결과는 아래와 같이 잘 나타납니다.

API의 Response 형태는 Boto3 Documentation에서 확인 가능합니다. 2 정말 방대한 양의 Documentation이 있어서 하나하나 살펴보면 원하는 기능들이 다 있는 것을 확인할 수 있습니다. 특정 시간이 되면 인스턴스를 중지하는 cron 작업을 걸 수도 있고, 주기적으로 상태를 체크하다가 status가 변한 것이 확인된다면 알림이나 이메일도 보낼 수 있고… 클라우드는 알면 알 수록 할 수 있는 일들이 많아지는 것 같습니다. 더욱 열심히 공부해야겠습니다!

Show 2 footnotes

  1. https://www.anaconda.com/distribution/
  2. https://boto3.amazonaws.com/v1/documentation/api/latest/index.html