Cloud Scheduler 작업에 attributes 설정

(타겟을 Pub/Sub로 이용하는 경우의 이야기)

2018년 11월에 발매된 Google Cloud Scheduler
GCP에서 정기적으로 실행하려는 작업을 구현하는 데 매우 유용한 기능입니다.

하지만 2019년 3월 현재 Cloud Console에서는attributes 그 외 몇개의 항목의 입력 폼이 제공되어 있지 않기 때문에
gcloud를 사용하여 API를 통해 설정하는 것이 더 좋았습니다.

검증 사전 준비



Pub/Sub 주제 만들기



scheduler_test라는 이름으로만 만들 수 있습니다.

Cloud Functions 만들기



Cloud Functions에서 Pub/Sub 주제를 구독하는 함수를 만듭니다.
Node.js 8의 기본 코드에 attributes를 출력하는 프로세스를 추가했습니다.

scheduler_test
/**
 * Triggered from a message on a Cloud Pub/Sub topic.
 *
 * @param {!Object} event Event payload.
 * @param {!Object} context Metadata for the event.
 */
exports.helloPubSub = (event, context) => {
  const pubsubMessage = event.data;
  console.log(Buffer.from(pubsubMessage, 'base64').toString());
  console.log(event.attributes);  // <- 追加
};

주제를 수동으로 게시



속성 ( attributes )을 설정하는 양식이 있습니다.



이 상태에서 게시해 보면 아래와 같이 출력됩니다.

CloudFunction 출력 로그
test message from topic
{ foo: 'bar' }

Cloud Console을 통해 작업 만들기



Pub/Sub 주제를 통해 Cloud Function에 전달할 수 있는 정보는 페이로드 정도입니다.



이 상태에서 작성한 작업을 실행합니다.

CloudFunction 출력 로그
test message from scheduler
null

불행히도 attributesnull 입니다.

gcloud 명령을 통해 작업 만들기



Cloud Scheduler는 베타 버전이므로 gcloud beta에서 실행 명령을 사용합니다.
문서: gcloud beta scheduler
문서: gcloud beta scheduler jobs create pubsub
attributes 뿐만 아니라 재시도 관련 옵션 및
메시지를 파일에서 읽는 옵션 등이 숨겨져 있습니다.

이번에는 다음 명령 작업을 만듭니다.

Pub/Sub 주제를 게시하는 작업 만들기
gcloud beta scheduler jobs create pubsub scheduler_test_gcloud \
  --description 'for scheduler test' \
  --schedule '0 */3 * * *' \
  --time-zone 'Asia/Tokyo' \
  --topic 'projects/xxxxxxxxxx/topics/scheduler_test' \
  --message-body 'test message from scheduler' \
  --attributes 'foo=bar'

Cloud Console과는 주제 이름을 지정하는 방법이 다릅니다.
프로젝트를 식별할 수 있는 형식으로 작성해야 하는 것 같습니다.

위의 명령으로 작성한 작업을 실행해보십시오.

CloudFunction 출력 로그
test message from scheduler
{ foo: 'bar' }

무사히 attributes 를 얻을 수 있었습니다.

무스비



이제 CloudFunctions에 전달할 수 있는 값의 자유도가 높아졌습니다.

지금 잠시 동안 gcloud를 통해 작업을 만드는 것이 열심히 보입니다.
아직 베타판이므로, 아무것도 불평은 말할 수 없습니다만.

좋은 웹페이지 즐겨찾기