Pub/Sub용 Functions 코드를 Github에서 관리

절차



1. Github 리포지토리에 Functions 코드를 준비합니다.



샘플 코드는 Pub/Sub 로 공개된 메시지와 속성을 출력하는 단순한 함수.

example/function.go
package example

import (
    "context"
    "encoding/json"
    "log"

    "cloud.google.com/go/pubsub"
)

// User JSONデコード用の構造体.
type User struct {
    Name string `json:"name"`
}

// HelloPubSub Pub/Subからトリガーされる関数.
func HelloPubSub(ctx context.Context, m *pubsub.Message) error {

    // メッセージの出力
    var user User
    if err := json.Unmarshal(m.Data, &user); err != nil {
        log.Fatal(err)
    }
    log.Println("Hello,", user.Name)

    // 属性の出力
    if len(m.Attributes) > 0 {
        for k, v := range m.Attributes {
            log.Println("key:", k)
            log.Println("value:", v)
        }
    }
    return nil
}


같은 계층에 go.mod도 필요.

example/go.mod
module github.com/mt-village/cloud-func-exampl

go 1.11

require cloud.google.com/go/pubsub v1.3.0

샘플은 여기> mt-village/cloud-func-example

2. GCP의 리포지토리와 동기화



Cloud Source Repositories의 "리포지토리 추가"에서 만든 Github 리포지토리를 연결합니다.
연결된 리포지토리는 github_mt-village_cloud-func-example와 같은 이름입니다.
이제 Github 측으로 변경된 내용이 GCP 측 리포지토리와 동기화됩니다.

3. Pub/Sub 주제 만들기



Cloud Pub/Sub 의 「토픽 작성」으로부터 신규 토픽을 작성.


4. Function 만들기



Cloud Functions의 "함수 만들기"에서 위에서 만든 주제와 리포지토리를 선택하여 새 Function을 만듭니다.


완성



테스트용 메시지를 공개.


Functions의 로그를 보면, 예상대로의 동작을 하고 있는 것을 확인할 수 있다.


리포지토리의 변경을 자동으로 검지해 함수를 재배포, 라고 하는 것은 해주지 않기 때문에, 코드를 변경하면 함수의 편집으로부터 수동으로 배치 버튼을 누를 필요가 있다. (자동으로하고 싶다)

참고 기사


  • Pub / Sub 트리거의 Cloud Functions를 Go로 만들 때는 pubsub.Message를 사용합시다.
  • 좋은 웹페이지 즐겨찾기