使用 Cloud Functions 從 Cloud Storage 串流資料至 BigQuery

本教學課程示範如何使用 Cloud Functions 將新物件從 Cloud Storage 值區串流至 BigQuery。Cloud Functions 是 Google Cloud Platform (GCP) 事件導向的無伺服器運算平台,可自動調整資源配置,具備高可用性和容錯功能,且沒有需要佈建、管理、更新或修補的伺服器。只要透過 Cloud Functions 串流資料,即可連結並擴充其他 GCP 服務,而且只須在您的應用程式執行時付費。

本文的目標讀者是資料分析人員、開發人員或作業人員,這類人員需要對新增到 Cloud Storag 的檔案進行近乎即時的分析。本文章假設您已熟悉 Linux、Cloud Storage 與 BigQuery。

架構

以下架構圖說明了本教學課程的串流管道中所有的元件及整個流程。雖然此管道預期您會將 JSON 文件上傳到 Cloud Storage 中,但只須將程式碼稍加變更就可以支援其他檔案格式。其他檔案格式的擷取則不在本文涵蓋範圍內。

管道的架構圖

在上圖中,管道包含下列步驟:

  1. 將 JSON 檔案上傳到 FILES_SOURCE Cloud Storage 值區。
  2. 此事件會觸發 streaming Cloud 函式。
  3. 剖析資料,並將資料插入剖到 BigQuery 中。
  4. 擷取的狀態記錄在 Cloud FirestoreStackdriver Logging 中。
  5. 以下列其中一種 Cloud Pub/Sub 主題發佈訊息:
    • streaming_success_topic
    • streaming_error_topic
  6. Cloud Functions 會根據結果將 JSON 檔案從 FILES_SOURCE 值區移動到以下其中一個值區:
    • FILES_ERROR
    • FILES_SUCCESS

目標

  • 建立 Cloud Storage 值區以儲存 JSON 檔案。
  • 建立要做為資料串流目的地的 BigQuery 資料集與資料表。
  • 設定在檔案新增至值區時所要觸發的 Cloud 函式。
  • 設定 Cloud Pub/Sub 主題。
  • 設定用來處理函式輸出的其他函式。
  • 測試串流管道。
  • 設定 Stackdriver Monitoring,用以提醒任何非預期中的行為。

費用

本教學課程使用下列 Google Cloud Platform 計費元件:

  • Cloud Storage
  • Cloud Functions
  • Cloud Firestore
  • BigQuery
  • Logging
  • Monitoring

您可以使用 Pricing Calculator,根據您的預測使用量來產生預估費用。 初次使用 GCP 的使用者可能符合申請免費試用的資格。

事前準備

  1. 登入您的 Google 帳戶。

    如果您沒有帳戶,請申請新帳戶

  2. 選取或建立 Google Cloud Platform 專案。

    前往「Manage resources」(管理資源) 頁面

  3. 請確認您已啟用 Google Cloud Platform 專案的計費功能。

    瞭解如何啟用計費功能

  4. 啟用Cloud Functions API。

    啟用 API

  5. 建立 Stackdriver 工作區。如要進一步瞭解工作區,請參閱管理工作區一文。

    前往 Stackdriver

完成此教學課程後,您可刪除已建立的資源以免繼續計費。詳情請參閱清除所用資源一節。

設定您的環境

在本教學課程中,您將使用 Cloud Shell 輸入指令。Cloud Shell 可讓您在 Google Cloud Platform 主控台中存取指令列,其中包括 Cloud SDK 以及在 GCP 中進行開發所需的其他工具。Cloud Shell 會以視窗的形式顯示在 GCP 主控台的底部。初始化可能需要幾分鐘的時間,但該視窗會立即顯示。

如何使用 Cloud Shell 來設定您的環境並複製此教學課程中使用的 Git 存放區:

  1. 在 GCP 主控台中,開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 確認您使用的是剛才建立的專案。請將 [YOUR_PROJECT_ID] 替換成您新建立的 GCP 專案。

    gcloud config set project [YOUR_PROJECT_ID]
    
  3. 設定預設運算區域。基於本教學課程的用途,請設定為 us-east1。如果您要部署到實際工作環境,請部署到您選擇的地區

    REGION=us-east1
    
  4. 複製內有本教學課程所用函數的存放區。

    git clone https://github.com/GoogleCloudPlatform/solutions-gcs-bq-streaming-functions-python
    cd solutions-gcs-bq-streaming-functions-python
    

建立串流來源及目的地接收器

如要將內容串流至 BigQuery,您需要一個 FILES_SOURCE Cloud Storage 值區,還有一個在 BigQuery 內的目的地資料表。

建立 Cloud Storage 值區

請建立一個 Cloud Storage 值區,這個值區代表的是本教學課程中介紹的串流管道來源。此值區的主要目的在於暫時儲存串流到 BigQuery 的 JSON 檔案。

  • 建立 FILES_SOURCE Cloud Storage 值區,並將 FILES_SOURCE 設定為名稱不重複的環境變數。

    FILES_SOURCE=${DEVSHELL_PROJECT_ID}-files-source-$(date +%s)
    gsutil mb -c regional -l ${REGION} gs://${FILES_SOURCE}
    

建立 BigQuery 資料表

在此節中,會建立一份 BigQuery 資料表,做為您檔案的內容目的地。BigQuery 可以在將資料載入資料表或是建立新資料表時,指定資料表的結構定義。在本節中,要建立資料表並同時指定其結構定義。

  1. 建立 BigQuery 資料集與資料表。在 schema.json 檔案中定義的結構定義必須符合來自 FILES_SOURCE 值區的檔案結構定義。

    bq mk mydataset
    bq mk mydataset.mytable schema.json
    
  2. 確認資料表已建立。

    bq ls --format=pretty mydataset
    

    輸出結果如下:

    +---------+-------+--------+-------------------+
    | tableId | Type  | Labels | Time Partitioning |
    +---------+-------+--------+-------------------+
    | mytable | TABLE |        |                   |
    +---------+-------+--------+-------------------+
    

將資料串流至 BigQuery

現在已建立了來源和目的地接收器,您可以建立 Cloud 函式將資料從 Cloud Storage 串流至 BigQuery。

設定串流 Cloud 函式

串流函式會監聽新增至 FILES_SOURCE 值區的檔案,並觸發以下流程:

  • 剖析並驗證檔案。
  • 檢查重複。
  • 將檔案內容插入 BigQuery。
  • 在 Cloud Firestore 和 Logging 中記錄擷取狀態。
  • 在 Cloud Pub/Sub 發佈錯誤或成功主題的訊息。

如何部署函式:

  1. 建立 Cloud Storage 值區以暫存部署期間的函式,其中 FUNCTIONS_BUCKET 會設定為名稱不重複的環境變數。

    FUNCTIONS_BUCKET=${DEVSHELL_PROJECT_ID}-functions-$(date +%s)
    gsutil mb -c regional -l ${REGION} gs://${FUNCTIONS_BUCKET}
    
  2. 部署 streaming 函式。實作程式碼位於 ./functions/streaming 資料夾。這項作業可能要幾分鐘才能完成。

    gcloud functions deploy streaming --region=${REGION} \
        --source=./functions/streaming --runtime=python37 \
        --stage-bucket=${FUNCTIONS_BUCKET} \
        --trigger-bucket=${FILES_SOURCE}
    

    此程式碼會部署以 Python 編寫的 Cloud 函式,其名稱為 streaming。有檔案新增至 FILES_SOURCE 值區時,就會觸發此函式。

  3. 驗證是否已部署該函式。

    gcloud functions describe streaming  --region=${REGION} \
        --format="table[box](entryPoint, status, eventTrigger.eventType)"
    

    輸出結果如下:

    ┌────────────────┬────────┬────────────────────────────────┐
    │  ENTRY_POINT   │ STATUS │           EVENT_TYPE           │
    ├────────────────┼────────┼────────────────────────────────┤
    │ streaming      │ ACTIVE │ google.storage.object.finalize │
    └────────────────┴────────┴────────────────────────────────┘
    
  4. 佈建一個稱為 streaming_error_topic 的 Cloud Pub/Sub 主題,用來處理錯誤路徑。

    STREAMING_ERROR_TOPIC=streaming_error_topic
    gcloud pubsub topics create ${STREAMING_ERROR_TOPIC}
    
  5. 佈建一個稱為 streaming_success_topic 的 Cloud Pub/Sub 主題,用來處理成功路徑。

    STREAMING_SUCCESS_TOPIC=streaming_success_topic
    gcloud pubsub topics create ${STREAMING_SUCCESS_TOPIC}
    

設定 Cloud Firestore 資料庫

將資料串流至 BigQuery 時,一定要瞭解每次檔案擷取時發生的情況。舉例來說,假設有檔案匯入不正確,在這種情況下,必須找出問題的根本原因並加以解決,以免在管道尾端產生毀損的資料和不準確的報告。前一節部署的 streaming 函式會將檔案擷取狀態儲存在 Cloud Firestore 文件中,以便查詢最近的錯誤來進行疑難排解。

如要建立 Cloud Firestore 執行個體,請依循以下步驟。

  1. 前往 GCP 主控台的 Cloud Firestore。

    前往 Cloud Firestore 頁面

  2. 在「Choose where you store your data」(選擇資料儲存位置) 視窗中,在「Native mode」(原生模式) 旁按一下 [Select Native Mode] (選取原生模式)

  3. 在「Select a location」(選取位置) 清單中,選取「nam5 (United States)」(nam5 (美國)),然後按一下 [Create Database] (建立資料庫)。等候 Cloud Firestore 初始化完成。請稍候幾分鐘。

處理串流錯誤

如要佈建處理錯誤檔案的的路徑,請另外部署一個 Cloud 函式,監聽發佈到 streaming_error_topic 的訊息。您的公司必須決定在實際工作環境中要如何處理這樣的錯誤。基於本教學課程的目的,將有問題的檔案移至另一個 Cloud Storage 值區以利疑難排解。

  1. 建立 Cloud Storage 值區來儲存有問題的檔案。 系統會將 FILES_ERROR 設定為名稱不重複的環境變數,用於儲存錯誤檔案的值區。

    FILES_ERROR=${DEVSHELL_PROJECT_ID}-files-error-$(date +%s)
    gsutil mb -c regional -l ${REGION} gs://${FILES_ERROR}
    
  2. 部署 streaming_error 函式以處理錯誤。可能會需要幾分鐘的時間。

    gcloud functions deploy streaming_error --region=${REGION} \
        --source=./functions/move_file \
        --entry-point=move_file --runtime=python37 \
        --stage-bucket=${FUNCTIONS_BUCKET} \
        --trigger-topic=${STREAMING_ERROR_TOPIC} \
        --set-env-vars SOURCE_BUCKET=${FILES_SOURCE},DESTINATION_BUCKET=${FILES_ERROR}
    

    這個指令類似於部署 streaming 函式的指令。主要的不同之處在於,這個指令中的函式是由發佈到主題的訊息所觸發,且會接收兩個環境變數:一是檔案複製來源的 SOURCE_BUCKET 變數,另一個是檔案複製目的地的 DESTINATION_BUCKET 變數。

  3. 驗證是否已建立 streaming_error 函式。

    gcloud functions describe streaming_error --region=${REGION} \
        --format="table[box](entryPoint, status, eventTrigger.eventType)"
    

    輸出結果如下:

    ┌─────────────┬────────┬─────────────────────────────┐
    │ ENTRY_POINT │ STATUS │          EVENT_TYPE         │
    ├─────────────┼────────┼─────────────────────────────┤
    │ move_file   │ ACTIVE │ google.pubsub.topic.publish │
    └─────────────┴────────┴─────────────────────────────┘
    

處理成功的串流

如要佈建用以處理成功檔案的的路徑,請部署第三個 Cloud 函式,監聽發佈到 streaming_success_topic 的訊息。在本教學課程的示範中,成功擷取的檔案會封存在 Coldline Cloud Storage 值區內。

  1. 建立 Coldline Cloud Storage 值區。系統會將 FILES_SUCCESS 設定為名稱不重複的環境變數,用於儲存成功檔案的值區。

    FILES_SUCCESS=${DEVSHELL_PROJECT_ID}-files-success-$(date +%s)
    gsutil mb -c coldline -l ${REGION} gs://${FILES_SUCCESS}
    
  2. 部署 streaming_success 函式以處理成功的檔案。可能會需要幾分鐘的時間。

    gcloud functions deploy streaming_success --region=${REGION} \
        --source=./functions/move_file \
        --entry-point=move_file --runtime=python37 \
        --stage-bucket=${FUNCTIONS_BUCKET} \
        --trigger-topic=${STREAMING_SUCCESS_TOPIC} \
        --set-env-vars SOURCE_BUCKET=${FILES_SOURCE},DESTINATION_BUCKET=${FILES_SUCCESS}
    
  3. 驗證是否已建立該函式。

    gcloud functions describe streaming_success  --region=${REGION} \
        --format="table[box](entryPoint, status, eventTrigger.eventType)"
    

    輸出結果如下:

    ┌─────────────┬────────┬─────────────────────────────┐
    │ ENTRY_POINT │ STATUS │          EVENT_TYPE         │
    ├─────────────┼────────┼─────────────────────────────┤
    │ move_file   │ ACTIVE │ google.pubsub.topic.publish │
    └─────────────┴────────┴─────────────────────────────┘
    

測試串流管道

現在串流管道已建立完畢。接下來要測試不同的路徑。首先,請測試新檔案的擷取,然後是複製檔案的擷取,最後請測試問題檔案的擷取。

擷取新檔案

如要測試新檔案的擷取,請上傳一個必定能成功通過整個管道的檔案。為了確保一切正常運作,請檢查所有的儲存項目:BigQuery、Cloud Firestore 和 Cloud Storage 值區。

  1. data.json 檔案上傳至 FILES_SOURCE 值區。

    gsutil cp test_files/data.json gs://${FILES_SOURCE}
    

    輸出結果如下:

    Operation completed over 1 objects/312.0 B.
    
  2. 在 BigQuery 中查詢資料。

    bq query 'select first_name, last_name, dob from mydataset.mytable'
    

    這個指令輸出的 data.json 檔案內容如下:

    +------------+-----------+------------+
    | first_name | last_name |    dob     |
    +------------+-----------+------------+
    | John       | Doe       | 1968-01-22 |
    +------------+-----------+------------+
    
  3. 前往 GCP 主控台的 Cloud Firestore 頁面。

    前往 Cloud Firestore 頁面

  4. 前往 / > [streaming_files] > [data.json] 文件,以驗證 success: true 欄位是否存在。streaming 函式會將檔案狀態儲存在一個名為 streaming_files 的集合中,並使用檔案名稱做為文件 ID。

    驗證「串流」函式是否儲存檔案的成功狀態

  5. 回到 Cloud Shell。

    前往 Cloud Shell

  6. 驗證 streaming_success 函數是否已刪除了 FILES_SOURCE 值區中已擷取的檔案。

    gsutil ls -l gs://${FILES_SOURCE}/data.json
    

    由於該檔案不再存在於 FILES_SOURCE 值區中,輸出結果會是 CommandException

  7. 驗證擷取的檔案現在是否位於 FILES_SUCCESS 值區。

    gsutil ls -l gs://${FILES_SUCCESS}/data.json
    

    輸出結果如下:

    TOTAL: 1 objects, 312 bytes.
    

擷取已處理的檔案

檔案名稱會在 Cloud Firestore 中做為文件 ID 使用。這樣 streaming 函式會更容易查詢指定的檔案是否已經過處理。如果先前已成功擷取檔案,則會忽略任何新增檔案的新嘗試,因為這會造成 BigQuery 中的資訊重複,導致報告不準確。

在本節中,需要確認當重複的檔案上傳至 FILES_SOURCE 值區時,管道會依預期運作。

  1. 將相同的 data.json 檔案再次上傳到 FILES_SOURCE 值區。

    gsutil cp test_files/data.json gs://${FILES_SOURCE}
    

    輸出結果如下:

    Operation completed over 1 objects/312.0 B.
    
  2. 查詢 BigQuery 後,會傳回與之前相同的結果。這代表管道有處理檔案,但因為之前已經擷取過,所以並未將檔案內容插入 BigQuery 中。

    bq query 'select first_name, last_name, dob from mydataset.mytable'
    

    輸出結果如下:

    +------------+-----------+------------+
    | first_name | last_name |    dob     |
    +------------+-----------+------------+
    | John       | Doe       | 1968-01-22 |
    +------------+-----------+------------+
    
  3. 前往 GCP 主控台的 Cloud Firestore 頁面。

    前往 Cloud Firestore 頁面

  4. / > [streaming_files] > [data.json] 文件中,確認已增加新的 **duplication_attempts** 欄位。

    驗證「串流」函式是否儲存「duplication_attempts」

    每次檔案新增到 FILES_SOURCE 值區時,如果名稱與之前成功處理的檔案相同,則會忽略檔案的內容,而新的重複嘗試會附加至 Cloud Firestore 中的 **duplication_attempts** 欄位。

  5. 回到 Cloud Shell。

    前往 Cloud Shell

  6. 驗證重複檔案仍在 FILES_SOURCE 值區中。

    gsutil ls -l gs://${FILES_SOURCE}/data.json
    

    輸出結果如下:

    TOTAL: 1 objects, 312 bytes.
    

    在重複的情況下,streaming 函式會在 Logging 中記錄非預期的行為,忽略其擷取,並將檔案留在 FILES_SOURCE 值區供之後分析。

擷取含有錯誤的檔案

現在已確認串流管道正確運作,不會擷取重複檔案至 BigQuery,接下來要檢查錯誤的路徑。

  1. data_error.json 檔案上傳至 FILES_SOURCE 值區。

    gsutil cp test_files/data_error.json gs://${FILES_SOURCE}
    

    輸出結果如下:

    Operation completed over 1 objects/311.0 B.
    
  2. 查詢 BigQuery 後,會傳回與之前相同的結果。這代表管道有處理檔案,但因為沒有遵循預期的結構定義,所以並未將檔案內容插入 BigQuery 中。

    bq query 'select first_name, last_name, dob from mydataset.mytable'
    

    輸出結果如下:

    +------------+-----------+------------+
    | first_name | last_name |    dob     |
    +------------+-----------+------------+
    | John       | Doe       | 1968-01-22 |
    +------------+-----------+------------+
    
  3. 前往 GCP 主控台的 Cloud Firestore 頁面。

    前往 Cloud Firestore 頁面

  4. 前往 / > [streaming_files] > [data.json] 文件以驗證是否有新增 success: true 欄位。

    驗證「串流」函式是否儲存檔案的錯誤狀態

    對於有錯誤的檔案,streaming 函式也會儲存 error_message 欄位,說明之所以未擷取檔案的詳細資訊。

  5. 回到 Cloud Shell。

    前往 Cloud Shell

  6. 驗證 streaming_error 函式是否已從 FILES_SOURCE 值區中刪除該檔案。

    gsutil ls -l gs://${FILES_SOURCE}/data_error.json
    

    由於該檔案不再存在於 FILES_SOURCE 值區中,輸出結果會是 CommandException

  7. 驗證檔案現在是否如預期存在於 FILES_ERROR 值區中。

    gsutil ls -l gs://${FILES_ERROR}/data_error.json
    

    輸出結果如下:

    TOTAL: 1 objects, 311 bytes.
    

找出並修復資料擷取問題

在 Cloud Firestore 中對 streaming_files 集合執行查詢,就能快速診斷並修復問題。在本節中,會使用適用於 Cloud Firestore 的標準 Python API 來篩選所有的錯誤檔案。

db = firestore.Client()
docs = db.collection(u'streaming_files')\
    .where(u'success', u'==', False)\
    .get()

如何在您的環境中查看查詢結果:

  1. 在您的 firestore 資料夾中建立虛擬環境。

    pip install virtualenv
    virtualenv firestore
    source firestore/bin/activate
    
  2. 在虛擬環境中安裝 Python Cloud Firestore 模組。

    pip install google-cloud-firestore
    
  3. 將現有管道問題以視覺化的方式呈現。

    python firestore/show_streaming_errors.py
    

    show_streaming_errors.py 檔案包含Cloud Firestore 查詢以及其他樣板,用來循環執行結果並將輸出結果格式化。執行上述指令後,輸出結果會類似如下:

    +-----------------+-------------------------+----------------------------------------------------------------------------------+
    | File Name       | When                    | Error Message                                                                    |
    +-----------------+-------------------------+----------------------------------------------------------------------------------+
    | data_error.json | 2019-01-22 11:31:58 UTC | Error streaming file 'data_error.json'. Cause: Traceback (most recent call las.. |
    +-----------------+-------------------------+----------------------------------------------------------------------------------+
    
  4. 完成分析後,請停用虛擬環境。

    deactivate
    

    找到並修復有問題的檔案後,請以相同名稱將檔案再次上傳到 FILES_SOURCE 值區。此流程會使檔案通過整個串流管道,以將內容插入 BigQuery。

非預期行為的快訊

在實際工作環境中,每當發生非預期情況時,加以監控及接收快訊通知是相當重要的處理方式。Logging 的眾多功能之一就是自訂指標。自訂指標可讓您建立快訊政策,即可在指標符合指定條件時向您發出通知。

本節中的設定會讓 Monitoring 在檔案擷取失敗時,傳送電子郵件快訊。為了識別失敗的擷取,以下設定會使用預設的 Python logging.error(..) 訊息。

  1. 在 GCP 主控台中,前往「Logs-based metrics」(記錄指標) 頁面。

    前往「Logs-Based Metrics」(記錄指標) 頁面:

  2. 按一下 [Create Metric] (建立指標)

  3. 在 [Filter] (篩選器) 清單中,選取 [Convert to advanced filter] (轉換為進階篩選器)

    進階篩選器選單

  4. 在進階篩選器中,貼上下列設定。

    resource.type="cloud_function"
    resource.labels.function_name="streaming"
    resource.labels.region="us-east1"
    "Error streaming file "
    

    要貼到進階篩選器的設定

  5. 在「Metric Editor」(指標編輯工具) 中,填入以下欄位然後按一下 [Create Metric] (建立指標)

    • 在「Name」(名稱) 欄位中,輸入 streaming-error
    • 在「Label」(標籤) 區段中的「Name」(名稱) 欄位輸入 payload_error
    • 在「Label type」(標籤類型) 清單中,選取 [String] (字串)
    • 在「Field name」(欄位名稱) 清單中,選取 [textPayload]
    • 在「Extraction regular expression」(擷取規則運算式) 欄位中,輸入 (Error streaming file '.*'.)
    • 在「Type」(類型) 清單中,選取 [Counter] (計數器)

      指標編輯器欄位

  6. 在 Monitoring 中,前往「Create a Policy」(建立政策) 以建立快訊政策。

    前往 Stackdriver Monitoring

  7. 在「Create a Policy」(建立政策) 中,完成以下步驟

    1. 按一下 [Add Condition] (新增條件)
    2. 填妥以下欄位,然後按一下 [Save] (儲存)

      • 在「Title」(名稱) 欄位中,輸入 streaming-error-condition
      • 在「Metric」(指標) 欄位中,輸入 logging/user/streaming-error

        在 Monitoring 中新增條件 UI

      • 在「Condition triggers if」(符合下列情況時觸發條件) 清單中,選取 [Any time series violates] (任何時間序列違反條件時)

      • 在「Condition」(條件) 清單中,選取 [is above] (超過)。

      • 在「 Threshold」(門檻) 欄位輸入 0

      • 在「For」(持續時間) 清單中,選取 [1 minute] (1 分鐘)

        條件觸發條件

    3. 在「Notification Channel Type」(通知管道類型) 清單中,選取 [Email] (電子郵件),並輸入電子郵件地址,然後按一下 [Add Notification Channel] (新增通知管道)

    4. 在「Name this policy」(為此政策命名) 欄位,輸入 streaming-error-alert,然後按一下 [Save] (儲存)

儲存快訊政策後,Stackdriver 會監控 streaming 函式的錯誤記錄檔,當一分鐘間隔內出現串流錯誤時,就傳送電子郵件快訊。

清除所用資源

如何避免系統向您的 Google Cloud Platform 帳戶收取在本教學課程中使用資源的相關費用:

刪除專案

  1. 前往 GCP 主控台的「Projects」(專案) 頁面。

    前往「Projects」(專案) 頁面

  2. 在專案清單中,找到您要刪除的專案並按一下「刪除」圖示 delete
  3. 在對話方塊中輸入專案 ID,按一下 [Shut down] (關閉) 即可刪除專案。

後續步驟

  • 參閱事件及觸發條件一文,進一步瞭解在 GCP 中觸發無伺服器函式的其他方式。
  • 前往快訊頁面,進一步瞭解如何改進本教學課程中定義的快訊政策。
  • 參閱 Cloud Firestore 說明文件,進一步瞭解這個全球規模的 NoSQL 資料庫。
  • 前往 BigQuery 配額與限制頁面,進一步瞭解在實際工作環境中實作此解決方案時的串流插入限制。
  • 前往 Cloud Functions 配額與限制頁面,進一步瞭解在實際工作環境中實作此解決方案時的串流插入限制。
  • 試用其他 Google Cloud Platform 功能,請參考我們的教學課程
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
解決方案