Cloud Run의 Go 언어에서 GCP Firestore에 액세스
서비스 계정 만들기
자격 증명 만들기
역할은 Datastore를 사용합니다.
키 만들기
출처
main.go
main.go(꽤 발췌)
import (
"context"
"cloud.google.com/go/firestore"
"google.golang.org/api/iterator"
)
func helo(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
client, err := firestore.NewClient(ctx, "GCPのプロジェクトID")
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
defer client.Close()
iter := client.Collection("users").Documents(ctx)
for {
doc, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatalf("Failed to iterate: %v", err)
}
fmt.Fprintf(w, "%v\n", doc.Data())
}
}
Dockerfile
Dockerfile
ARG APP_DIR="/appdir"
# builder
FROM golang:1.15
ARG APP_DIR
RUN go env -w GO111MODULE=on \
&& go env -w CGO_ENABLED=0
WORKDIR ${APP_DIR}
COPY . .
RUN go build -v -o app
# product
FROM scratch
ARG APP_DIR
ARG PORT="80"
ENV GOOGLE_APPLICATION_CREDENTIALS="${APP_DIR}/key.json" \
PORT="${PORT}"
WORKDIR ${APP_DIR}
COPY --from=0 ${APP_DIR}/app ./app
COPY --from=0 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY key.json ./key.json
EXPOSE ${PORT}
ENTRYPOINT ["./app"]
메모
움직일 때까지 나온 에러들을 단지 나열한 것만
Failed to iterate: rpc error: code = Unavailable desc = connection error: desc = "transport: authentication handshake failed: x509: certificate signed by unknown authority"
The request failed because either the HTTP response was malformed or connection to the instance had an error.
Failed to iterate: rpc error: code = Unauthenticated desc = transport: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid grant: account not found"}
Failed to iterate: rpc error: code = PermissionDenied desc = Missing or insufficient permissions.
기타
cloudbuild.yaml 라든지, 기재 이외는 전인 채. 이전 기사
이상한
cloudbuild.yaml 라든지, 기재 이외는 전인 채. 이전 기사
이상한
- '--service-account'
로 작성한 서비스 어카운트를 지정하면(자), 키를 만들거나 카피할 필요는 없었다. Reference
이 문제에 관하여(Cloud Run의 Go 언어에서 GCP Firestore에 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kihi1215/items/eb752eeafb1c79f97bdd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)