2.3 KiB
2.3 KiB
Cloud Functionsについて
Dev
リクエストをトリガーにする場合
関数のエントリポインの定義
@functions_framework.http
def hello_request(request: Request):
...
Cloud FUnctionsを起動する
functions-framework \
--source=src/main.py \
--target=hello_request \
--signature-type=http \
--port=8080
ローカルでリクエストを送信する(ローカル)
GET
curl -X GET -H "Content-Type: application/json" \
'http://localhost:8080?name=python'
POST
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "python"}' \
http://localhost:8080
PUT
curl -X PUT -H "Content-Type: application/json" \
-d '{"name": "python"}' \
http://localhost:8080
Eventをトリガーにする場合
ローカルで実行するにはイベントをHTTPにラップして Functions Frameworkで動かすのが基本です。 本番ではPub/Sub / Storage / Firestore / Eventarc などのイベントトリガでCloud Functionsを起動します。
- ユースケース:
- Pub/Sub: Pub/Subイベントにより実行する
- Storage: GCSにファイルのアップロードなどがあった場合
- Firestore: Firestoreのデータに変更等が生じた場合
- Eventarc: イベントログなどをトリガーにする(BQにデータが登録された場合)
関数のエントリポインの定義
@functions_framework.cloud_event
def main(cloud_event):
...
第1世代 (1st Gen)では以下のエントリポイントになる
def main(event, context)
Cloud FUnctionsを起動する
functions-framework \
--source=src/main.py \
--target=hello_pubsub \
--signature-type=cloudevent \
--port=8080
ローカルでイベントを送信する(ローカル)
curl -X POST \
-H "Content-Type: application/json" \
-H "Ce-Specversion: 1.0" \
-H "Ce-Type: google.cloud.pubsub.topic.v1.messagePublished" \
-H "Ce-Source: //pubsub.googleapis.com/projects/test-project/topics/test-topic" \
-H "Ce-Id: 1234567890" \
-H "Ce-Time: 2025-12-06T00:00:00Z" \
-d '{
"message": {
"data": "'$(echo -n "hello-local" | base64)'"
}
}' \
http://localhost:8080