在 Go 中指定依附元件

Go 中的 Cloud Functions 必須透過擁有 go.mod 檔案的 Go 模組或 vendor 目錄提供所有依附元件。您的函式不得同時使用 Go 模組和 vendor 目錄來指定依附元件。

Go 執行階段包含執行環境中的多個系統套件。如果您的函式使用的依附元件,需要並未列出的系統套件,您可以要求套件

使用 Go 模組

Cloud Functions 支援 Go 的實驗性模組功能,該功能可讓您在專案根目錄的 go.mod 檔案中指定依附元件。當您部署函式時,在 go.mod 檔案中指定的依附元件將被截取並自動建構。

Go 模組的行為是依您在 GOPATH 內部還是外部而決定,若要確定您是否在 GOPATH 內部:

  1. 移至您的專案目錄。

  2. 執行以下指令以尋找 GOPATH

    go env GOPATH
    

    這會輸出一行類似以下的訊息:

    GOPATH=YOUR_GOPATH
    
  3. 執行以下指令來尋找目前工作的目錄:

    pwd
    

如果您使用中的目錄是以 YOUR_GOPATH 為開頭,則您在 GOPATH 內部。在此情況下,請透過執行以下三個指令來產生 go.mod 檔案:

export GO111MODULE=on
go mod init
go mod tidy

若您使用中的目錄並非以 YOUR_GOPATH 為開頭,則您在 GOPATH 外部。在此情況下,請執行以下指令來產生 go.mod 檔案:

go mod init MODULE
go mod tidy

在以上的範例中,MODULE 是您模組的名稱。例如,您的模組名稱可能為 example.com/myproject。當您在 GOPATH 內部時,go 指令將自動偵測模組名稱。

在您建立 go.mod 檔案後,您便可使用 go get 指令來擷取依附元件,並將其自動新增至您的專案。例如:

go get DEPENDENCY

在上述的範例中,DEPENDENCY 是您想新增至函式的依附元件。例如,go get cloud.google.com/go/storage 指令會新增 Cloud Storage 用戶端程式庫至您的函式。

使用 vendor 目錄

Cloud Functions 也允許您透過 vendor 目錄來納入依附元件。在多數情況下,vendor 目錄是由依附元件管理員進行維護。您可以依喜好使用任何的依附元件管理員。例如,您可以使用 Go 的模組功能以從您的 go.mod 檔案來建立 vendor 目錄。

如果您擁有 go.mod 檔案和 vendor 目錄,則 vendor 目錄將在您部署函式時遭到忽略。您可以使用 .gcloudignore 檔案以避免上傳您的 go.modgo.sum 檔案,在此情況下將會遵守您 vendor 目錄中的內容:

  1. 在專案目錄的根目錄建立包含下列內容的 .gcloudignore 檔案:

    go.mod
    go.sum
    
    # Also ignore Git directories. Delete the following two lines if you want to
    # upload them.
    .git
    .gitignore
    
  2. 透過執行以下指令以使用您的 go.mod 檔案內容來建立 vendor 目錄:

    go mod vendor
    

使用私人依附元件

若您的函式依附元件是託管於無法公開存取的存放區中,則您在附屬函式前,必須使用 vendor 目錄來擷取您的依附元件。如果您計劃使用 go.mod 檔案,請參閱以上說明以避免 go.mod 檔案和 vendor 目錄之間的衝突。

本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁
Cloud Functions Documentation