Google Cloud Functions (Go1.11) 자습서
8254 단어 5gcpcloudfunctionsgo1.11
제목
Google Cloud Functions(Go1.11)의 퀵 스타트와 튜토리얼을 통해 각 기능을 확인해 간다.
이번에는 일단 퀵 스타트.
그리고 Go 모듈을 사용한 프로젝트 배포에 관한 자습서만.
기본적으로 다음을 참고로 진행한다.
h tps : // c ぉ d. 오, ぇ. 코 m / 훈 c 치온 s / 두 cs /
전제
GCP는 알고 있다.
다음은 끝난 후 작업.
Cloud SDK 설치 및 초기화 및 인증
개발 환경
#OS
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
#Cloud SDK
$ gcloud version
Google Cloud SDK 244.0.0
# Golang
$ go version
go version go1.11.4 linux/amd64
실천
빠른 시작
참고
출처
[QuickStart/helloworld.go]package Quickstart
import (
"fmt"
"net/http"
)
func HelloWorld(w http.ResponseWriter, r *http.Request) {
if _, err := fmt.Fprint(w, "Hello, World! (go111)"); err != nil {
fmt.Println(err)
}
}
배포 및 동작 확인
$ pwd
/home/sky0621/work/src/go111/src/github.com/sky0621/tips-go/try/gcp/gcfgo/Quickstart
$
$ gcloud functions deploy HelloWorld --runtime=go111 --trigger-http
Deploying function (may take a while - up to 2 minutes)...done.
〜〜 省略 〜〜
$ curl https://us-central1-【GCPプロジェクトID】.cloudfunctions.net/HelloWorld
Hello, World! (go111)
Structured
참고
유의점
Go 런타임의 경우 함수는 프로젝트의 루트에 있는 Go 패키지에 포함되어야 합니다.
함수를 main
패키지로 하는 것은 불가.
서브 패키지는 Go 모듈을 사용하는 경우에만 지원됩니다.
출처
$ tree
.
├── function.go
├── go.mod
├── go.sum
└── subpkg
└── jsonform.go
[Structured/function.go]package Structured
import (
"Structured/subpkg"
"encoding/json"
"fmt"
"net/http"
"go.uber.org/zap"
)
var lgr *zap.Logger
func init() {
var err error
lgr, err = zap.NewProduction()
if err != nil {
panic(err)
}
}
func StructuredHello(w http.ResponseWriter, r *http.Request) {
var jf subpkg.JsonForm
if err := json.NewDecoder(r.Body).Decode(&jf); err != nil {
lgr.Error(err.Error())
}
if _, err := fmt.Fprintf(w, "Hello, %s(%s)", jf.Name, jf.ID); err != nil {
lgr.Error(err.Error())
}
}
[Structured/subpkg/jsonform.go]package subpkg
type JsonForm struct {
ID string `json:"id"`
Name string `json:"name"`
}
배포 및 동작 확인
$ pwd
/home/sky0621/work/src/go111/src/github.com/sky0621/tips-go/try/gcp/gcfgo/Structured
$
$ gcloud functions deploy StructuredHello --runtime=go111 --trigger-http
Deploying function (may take a while - up to 2 minutes)...done.
〜〜 省略 〜〜
$ curl -X POST \
> https://us-central1-【GCPプロジェクトID】.cloudfunctions.net/StructuredHello \
> -H 'Content-Type: application/json' \
> -H 'cache-control: no-cache' \
> -d '{
> "id": "001",
> "name": "Sato"
> }'
Hello, Sato(001)
Reference
이 문제에 관하여(Google Cloud Functions (Go1.11) 자습서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sky0621/items/51477feb86b1ba03c54e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
$ gcloud version
Google Cloud SDK 244.0.0
$ go version
go version go1.11.4 linux/amd64
빠른 시작
참고
출처
[QuickStart/helloworld.go]
package Quickstart
import (
"fmt"
"net/http"
)
func HelloWorld(w http.ResponseWriter, r *http.Request) {
if _, err := fmt.Fprint(w, "Hello, World! (go111)"); err != nil {
fmt.Println(err)
}
}
배포 및 동작 확인
$ pwd
/home/sky0621/work/src/go111/src/github.com/sky0621/tips-go/try/gcp/gcfgo/Quickstart
$
$ gcloud functions deploy HelloWorld --runtime=go111 --trigger-http
Deploying function (may take a while - up to 2 minutes)...done.
〜〜 省略 〜〜
$ curl https://us-central1-【GCPプロジェクトID】.cloudfunctions.net/HelloWorld
Hello, World! (go111)
Structured
참고
유의점
Go 런타임의 경우 함수는 프로젝트의 루트에 있는 Go 패키지에 포함되어야 합니다.
함수를
main
패키지로 하는 것은 불가.서브 패키지는 Go 모듈을 사용하는 경우에만 지원됩니다.
출처
$ tree
.
├── function.go
├── go.mod
├── go.sum
└── subpkg
└── jsonform.go
[Structured/function.go]
package Structured
import (
"Structured/subpkg"
"encoding/json"
"fmt"
"net/http"
"go.uber.org/zap"
)
var lgr *zap.Logger
func init() {
var err error
lgr, err = zap.NewProduction()
if err != nil {
panic(err)
}
}
func StructuredHello(w http.ResponseWriter, r *http.Request) {
var jf subpkg.JsonForm
if err := json.NewDecoder(r.Body).Decode(&jf); err != nil {
lgr.Error(err.Error())
}
if _, err := fmt.Fprintf(w, "Hello, %s(%s)", jf.Name, jf.ID); err != nil {
lgr.Error(err.Error())
}
}
[Structured/subpkg/jsonform.go]
package subpkg
type JsonForm struct {
ID string `json:"id"`
Name string `json:"name"`
}
배포 및 동작 확인
$ pwd
/home/sky0621/work/src/go111/src/github.com/sky0621/tips-go/try/gcp/gcfgo/Structured
$
$ gcloud functions deploy StructuredHello --runtime=go111 --trigger-http
Deploying function (may take a while - up to 2 minutes)...done.
〜〜 省略 〜〜
$ curl -X POST \
> https://us-central1-【GCPプロジェクトID】.cloudfunctions.net/StructuredHello \
> -H 'Content-Type: application/json' \
> -H 'cache-control: no-cache' \
> -d '{
> "id": "001",
> "name": "Sato"
> }'
Hello, Sato(001)
Reference
이 문제에 관하여(Google Cloud Functions (Go1.11) 자습서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sky0621/items/51477feb86b1ba03c54e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)