Cloud Scheduler + Cloud Pub/Sub + Cloud Functions에서 GCE 인스턴스 자동 시작 or 중지해 보았습니다.
경위
지금까지 GAE의 cron으로 GCE의 인스턴스의 자동 기동, 정지시키고 있었지만, Cloud Scheduler 나왔기 때문에 그쪽에서 자동 기동, 정지의 관리할 수 없을까 생각해 보았다.
시스템 구성
대단한 단순
구축 절차
1. Pub/Sub의 Topic 작성
GCP 콘솔에서 Pub/Sub 화면을 열고 switcher라는 제목을 만듭니다.
2. Cloud Functions 만들기
uu4k/compute-instances-switcher
인스턴스를 시작하고 중지하는 Function을 작성합니다.
이번에는 Cloud Shell에서 배포합니다.
deploy.sh
git clone https://github.com/uu4k/compute-instances-switcher
cd compute-instances-switcher
./deploy.sh
# APIが有効になってないと有効にするか効かれるのでyを入力
# 2分くらい経てばデプロイ完了
compute-instances-switcher 해설
compute-instances-switcher는 pub/sub에서 인스턴스 시작 또는 중지 정보와 대상 인스턴스의 이름(와일드카드 가능)을 json으로 받고 인스턴스를 시작하거나 중지합니다.
pubsub.json
{"switch": "off", "target": "dev-*"}
이번은 인스턴스명 밖에 지정할 수 없습니다만, 인스턴스 리스트의 취득 API의 필터 파라미터를 커스터마이즈 하면 label등 다른 정보로의 대상 지정도 할 수 있으므로, 이 근처는 필요에 따라서 바꾸어 봐 주세요.
3. Cloud Scheduler 설정
0 9 * * 1-5
{"switch": "on", "target": "dev-*"}
4. 동작 확인
Cloud Scheduler 화면에서 수동으로 실행할 수 있으므로 수동으로 실행하여 대상 인스턴스가 제대로 시작되거나 중지되는지 확인할 수 있습니다.
작동하지 않는 경우 Cloud Functions 화면에서 오류가 발생했는지 여부와 오류 로그를 확인할 수 있으므로 그 원인을 조사해 봅시다.
후기
파이썬 API 클라이언트를 사용하는 방법에 걸린 것 이외에는 비교적 간단하게 할 수 있었다. 이번 건 이외에도 간단한 정기 실행 작업에도 사용할 수 있을 것 같다.
다만, Cloud Scheduler의 설정 변경을 할 수 없다(매회 삭제·작성) 때문에 그 근처가 귀찮아.
그리고, 처음 Functions를 실행하는 ServiceAccout에 compute.start라든지의 권한을 주지 않으면 안되는 것일까라고 생각했지만 이번에는 필요 없었다. 하고 싶은 것에 따라서는 권한 에러 나올지도 모르기 때문에 그 근처는 확인이 필요할 것 같다.
Reference
이 문제에 관하여(Cloud Scheduler + Cloud Pub/Sub + Cloud Functions에서 GCE 인스턴스 자동 시작 or 중지해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uu4k/items/4075acff6ef6a7ed9384텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)