Cloud function을 이용한 gcp 자원 정보 파일 만들기
이번에는 내가 gcp 사용하면서 썻던 기술들 중 Cloud function을 이용한 자원 정리 파일 생성 과정에 대해 기술하려고 한다.
아래의 내용은 GCP를 사용해봤다는 전제하에 따라해 볼 수 있도록 기술하였다.
사용한 리소스는 다음과 같다.
1. Cloud funtions
AWS의 lambda와 비슷한 기능으로 특정 언어로 작성 할 수 있으며 호출에 의한 작업에 사용하면 좋다.
2. GCS
추출한 데이터를 저장 받을 용도로 사용하였다.
3.Cloud Scheduler (옵션)
만약 Cloud function를 특정 시간 동작하게 하여 자동으로 수집하고 싶은 경우 연결하여 사용할 수 있다.
#필요시에만 받아오는 경우라서 이번 상황에서는 적용하지 않았다.
4. IAM
Service Account를 생성하여 Cloud funtions 에서 비공개 GCS에 접근가능하도록 설정하였다.
5. Python
내가 사용하는 주 언어로 Cloud function에서 동작하는 소스 코드로 Python을 사용하였다.
사용 사례
나는 등록된 DNS 주소를 수집해야 하는 상황이 있었고 이 상황에서 작업 한 내용을 기술해보려고 한다.
1. Service Account 생성 및 권한 부여
해당 작업을 위해 필요한 권한은 다음과 같다.
1. GCS 접근 및 파일 생성을 위한 권한 (저장소 관리자, 저장소 개체 생성자, 저장소 개체 관리자)
2. Cloud function 사용을 위한 권한 (Cloud functions 개발자, Cloud functions 호출자)
3. DNS 리스트에 접근 가능한 권한 (뷰어)
더 작은 권한을 부여할 수도 있지만 편의상 일단 이렇게 부여하였다.
IAM 및 관리자 -> 서비스 계정 -> 서비스 계정 추가에서 계정 생성 및 해당 권한을 부여한다.
2. GCS Bucket 생성
추출한 데이터를 저장 받을 버킷을 생성한다.
3.Cloud functions 생성
Cloud functions -> 함수 만들기를 통해 생성한다.
1)
환경: 1세대
트리거 : HTTP , HTTPS 인증 필수 아님을 선택한다
런타임 서비스 계정은 위에서 생성한 계정을 넣어준다.
2) 다음으로 넘어간 후 런타임은 자신이 사용할 언어로 변경한다. 나의 경우 Python3.8 버전을 선택하였다.
선택하게되면 샘플 코드가 나오게 된다.
보이는 것처럼 진입점이 존재하고 함수의 이름이 진입점이 된다.
파이썬의 경우 def로 함수를 정의하기 때문에 아래 예시에서 hello world라는 함수 이름이 진입점이 되는 것이다.
따라서 본인의 언어에 맞는 함수를 작성하면 해당 진입점이 시작 지점이 되어 동작한다고 생각하면 된다.
언어마다 다르겠지만 파이썬의 경우 requirements.txt 파일이 사용할 패키지명을 기재하여 라이브러리를 사용할 수 있도록 하는 기능을 한다.
3)
내가 사용한 파이썬 코드인데 일단 진입점 명은 download_blob로 설정하였다.
나머지는 주석을 통해 이해하면 될 것 같다.
4)
내가 사용한 패키지 라이브러리는 아래와 같다.
requests==2.28.2
google-cloud-storage==2.8.0
google-cloud==0.34.0
google-cloud-dns
xlsxwriter
openpyxl
pandas
따라서 이 패키지들을 requirements.txt 에 적어주면 Cloud function이 작동할 때 사용할 수 있게 해준다.
5) 호출을 통해 result.csv 파일이 GCS 버킷에 저장되는지 확인