準備本機開發環境

您必須先設定本機環境以進行函數開發,才能開始使用 Oracle Functions 建立及建置函數。

雖然可以使用 Cloud Shell 或 Oracle Cloud Infrastructure 運算執行處理作為開發環境,但本文件假設您使用本機 Linux 環境進行函數開發。

在開始之前

除了本節中針對設定本機 Linux 執行處理以供函數開發的工作之外,您還必須執行下列工作:

  • 若要在本機開發功能,請從 GitHub 安裝 Fn 專案開發平台。

  • 請確定您的本機執行處理上已安裝 Docker 17.10.0 或更新版本。

    如需有關在 Linux 上安裝或升級 Docker 的資訊,請參閱 Oracle Container Runtime for Docker User 's Guide

建立簽章金鑰

使用 Oracle Functions 之前,您必須先設定 Oracle Cloud Infrastructure API 簽章金鑰。

  1. 以功能開發人員身分登入您的本機機器開發環境。
  2. 使用您輸入的密碼詞組產生加密的私密金鑰:
    $ openssl genrsa -out ~/.oci/<private-key-file-name>.pem -aes128 2048

    其中 <private-key-file-name> 是您為私密金鑰檔案選擇的名稱。

  3. 出現提示時,輸入密碼詞組以加密私密金鑰檔案。請務必記下您輸入的密碼詞組,因為稍後將會用到此資訊。
  4. 出現提示時,請重新輸入密碼詞組進行確認。
  5. 變更檔案的權限,以確保只有您可以讀取檔案。
    $ chmod go-rwx ~/.oci/<private-key-file-name>.pem

    其中 <private-key-file-name> 是私密金鑰檔案的名稱。

  6. 輸入下列項目來產生公用金鑰 (使用您在建立私密金鑰時所提供的相同密碼詞組加密,以及在與私密金鑰檔案相同的位置加密):
    $ openssl rsa -pubout -in ~/.oci/<private-key-file-name>.pem -out ~/.oci/<public-key-file-name>.pem

    其中 <private-key-file-name> 是私密金鑰檔案的名稱,<public-key-file-name> 是您為公用金鑰檔案選擇的名稱。

  7. 出現提示時,請輸入您先前輸入的相同密碼來加密私密金鑰檔案。
  8. 輸入下列項目,複製您剛才建立之公用金鑰檔案的內容:
    $ cat ~/.oci/<public-key-file-name>.pem | pbcopy

    其中 <public-key-file-name> 是您為公開金鑰檔案選擇的名稱。

  9. 以功能開發人員身分登入主控台,開啟右上角的使用者功能表,然後選取使用者設定值。
  10. 在「API 金鑰」頁面中,按一下新增公開金鑰。將公用金鑰的值貼到視窗中,然後按一下新增。就會上傳金鑰並顯示其指紋。

建立命令行介面 (CLI) 設定檔

使用 Oracle Functions 之前,您必須先有一個 Oracle Cloud Infrastructure CLI 組態檔,其中包含您將用來建立及建置函數之使用者帳戶的證明資料設定檔。

Oracle Cloud Infrastructure CLI 組態檔可以包含數個設定檔。如果您已經有一個包含一或多個設定檔的組態檔,您必須為將使用 Oracle Functions 來建立及建置功能的使用者,新增設定檔至現有檔案。

  1. 以功能開發人員身分登入您的本機機器開發環境。
  2. 在文字編輯器中開啟 ~/.oci/config 檔案。(如果目錄和 (或) 檔案不存在,請加以建立。)
  3. 新增設定檔至 ~.oci/config 檔案,如下所示:
    [<profile-name>]
    user=<user-ocid>
    fingerprint=<public-key-fingerprint>
    key_file=<full-path-to-private-key-pem-file>
    tenancy=<tenancy-ocid>
    region=<region-name>
    pass_phrase=<passphrase>

    其中:

    • <profile-name> 是您為設定檔選擇的名稱。
    • <user-ocid> 是您將用來建立及部署函數之 Oracle Cloud Infrastructure 使用者帳戶的 OCID。
    • <public-key-fingerprint> 是您先前在主控台上傳之公用 API 金鑰值的指紋。
    • <full-path-to-private-key-pem-file> 是您先前建立之私密金鑰檔案的完整路徑。
    • <tenancy-ocid> 是您將在其中建立及部署函數之租用戶的 OCID。
    • <region-identifier> 是您將在其中建立及部署函數之 Oracle Cloud Infrastructure 區域的 ID。例如,us-phoenix-1
    • <passphrase> 是您在建立公用/私密金鑰時所指定的密碼詞組。
  4. 儲存並關閉檔案。

複製並設定 oci-curl 命令檔

您可以使用命令檔來呼叫函數。oci-curl 命令檔會根據您在命令檔主體中提供的證明資料建立已簽署的要求。

若要使用 oci-curl 呼叫函數,您必須提供已被授予相同租用戶之資源存取權的 Oracle Cloud Infrastructure 使用者證明資料,並且屬於與函數相同的區間。

一般而言,您會想要呼叫函數作為針對開發環境設定的函數開發人員。以下指示假設情況為。

  1. 登入您的開發環境。
  2. 在開發環境中建立 oci-curl 命令檔檔案的複本,然後將您的證明資料新增至檔案,如下所示:
    1. 在瀏覽器中,瀏覽至 https://docs.cloud.oracle.com/iaas/Content/Resources/Assets/signing_sample_bash.txt 以查看 oci-curl 程式碼為原始文字。
    2. 選取所有文字並加以複製。
    3. 在文字編輯器中,於方便的位置開啟新檔案。

      例如,在終端機視窗中,您可以在本位目錄中建立新的子目錄,然後輸入下列項目來開啟該目錄中的新檔案:

      $ cd ~
      
      $ mkdir oci-curl
      
      $ vim ~/oci-curl/oci-curl.sh

      新檔案的名稱和位置可供您使用,但下列指示假設為 ~/oci-curl/oci-curl.sh

    4. 將您先前複製的 oci-curl 命令檔程式碼貼到新檔案中。
    5. 儲存檔案但保持開啟狀態,以便您可以新增您的證明資料。
  3. 以您要呼叫函數的使用者帳戶取代 oci-curl.sh 檔案中的範例認證:
    local tenancyId="<tenancy_id>";
    local authUserId="<user_id>";
    local keyFingerprint="<public_fingerprint>";
    local privateKeyPath="<private_key_path>";

    其中:

    • <tenancy_id> 是已部署函數之租用戶的 OCID。
    • <user_id> 是您要執行函數之使用者帳戶的 OCID。使用者帳戶必須能夠存取相同租用戶中的資源,而且屬於與函數相同的區間。
    • <public_fingerprint> 是上傳至 Oracle Cloud Infrastructure 之使用者公開金鑰的指紋。
    • <private_key_path> 是與您提供指紋的公用金鑰配對之私密金鑰檔案的完整路徑。例如:
      local privateKeyPath="/Users/johndoe/.oci/john_api_key_private.pem";
  4. 儲存並關閉 oci-curl.sh 檔案。

安裝 Fn 專案命令行介面 (CLI)

使用 Oracle Functions 之前,開發環境中必須先安裝 Fn 專案命令行介面 (CLI)。

此程序使用 curl 在 Linux 執行處理上安裝 CLI。如需其他作業系統的指示,請參閱 GitHub 上 Fn 專案的 Readme 檔。

  1. 以函數開發人員身分登入您的開發環境。
  2. 請使用下列命令來擷取和執行安裝命令檔:
    $ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
    
    

    如果出現提示,請輸入超級使用者的密碼。

  3. 在終端機視窗中,輸入下列項目以確認 CLI 已安裝:
    $ fn version

    CLI 若已正確安裝,便會顯示版本。

建立 Fn 命令行介面相關資訊環境

初始安裝 Fn 專案命令行介面 (CLI) 時,會將它設定為本機開發。若要設定 Fn 專案 CLI 以連線至您的 Oracle Cloud Infrastructure 租用戶,您必須建立新的相關資訊環境。

相關資訊環境會指定 Oracle Functions 端點、已部署函數所屬區間的 OCID,以及要植入及提取映像檔的 Docker 登錄位址。您可以定義多個環境定義,每個環境定義都以.yaml 格式儲存在不同的環境定義檔案中。

  1. 以函數開發人員身分登入您的開發環境。
  2. 在終端機視窗中,建立 Oracle Cloud Infrastructure 的新 Fn 專案 CLI 相關資訊環境:
    $ fn create context <my-context> --provider oracle

    其中 <my-context> 是您選擇的名稱。

  3. 指定 Fn 專案 CLI 要使用新的相關資訊環境:
    $ fn use context <my-context>

    其中 <my-context> 是您指定的相關資訊環境名稱。

  4. 指定要使用之命令行介面設定檔的名稱:
    $ fn update context oracle.profile <profile-name>
  5. 指定將要部署已部署函數的區間 OCID:
    $ fn update context oracle.compartment-id <compartment-ocid>
  6. 指定呼叫 API 時要使用的端點:
    $ fn update context api-url <api-endpoint>
    其中 <api-endpoint> 是下列其中一種格式的端點:
    https://functions.<region-identifier>.oci.oraclecloud.com
    其中 <region-identifier> 是您將在其中建立及建置函數之 Oracle Cloud Infrastructure 區域的 ID。例如:
    us-phoenix-1
  7. 使用您要與 Oracle Functions 搭配使用之 Docker 登錄檔的位址設定新的相關資訊環境:
    $ fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name>
    其中:
    • <region-key>Oracle Cloud Infrastructure Registry 區域的索引鍵。例如,Phoenix 為 phx

      Oracle 建議您指定的 Docker 登錄檔位於與要執行函數之子網路相同的區域中。

    • <tenancy-namespace> 是用來建立儲存區域之租用戶的自動產生的 Oracle Cloud Infrastructure Object Storage 命名空間字串 (如「租用戶資訊」頁面所示)。
    • <repo-name> 是儲存庫名稱,可在您部署的函數名稱前面加上。

    例如:

    $ fn update context registry phx.ocir.io/ansh81vru1zp/my-repo

建立認證記號

若要在 Oracle Cloud Infrastructure 中部署函數,您必須在登入 Docker 至 Oracle Cloud Infrastructure Registry 時,建立認證記號作為密碼。

  1. 登入 Oracle Cloud Infrastructure 主控台,按一下使用者圖示,然後選取使用者設定值。
  2. 若要建立新的認證記號,請按一下「資源」段落中的認證記號,然後按一下產生記號。
  3. 提供「認證記號」的描述,然後按一下產生記號。在顯示記號時複製記號。
  4. 按一下製連結,並將記號資訊儲存在安全位置,因為當您關閉對話方塊時,將無法再次在主控台中看到記號。
  5. 按一下閉。

登入 Oracle Cloud Infrastructure Registry

您必須先將 Docker 登入要將函數儲存為 Docker 映像檔的 Docker 登錄,才能使用 Oracle Functions。這是您先前在 Fn 專案命令行介面 (CLI) 相關資訊環境中指定的 Docker 登錄檔。

您必須先完成下列作業,才能登入登錄:
  • 在開發環境中安裝並啟動 Docker
  • 已建立 Fn 命令行介面 (CLI) 的 Oracle Cloud Infrastructure Context
  • 已建立使用者的 Oracle Cloud Infrastructure 認證權杖

您可以將函數儲存在 Oracle Cloud Infrastructure Registry 的公用和專用儲存區域中,這是在 Oracle Cloud Infrastructure 上建立的 Oracle 管理式登錄。

若要完成下列步驟,您必須提供 Oracle Cloud Infrastructure Object Storage 的租用戶命名空間、使用者名稱以及使用者的認證權杖。

將 Docker 登入 Oracle Cloud Infrastructure Registry

  1. 以函數開發人員身分登入您的開發環境。
  2. 在終端機視窗中,登入 Oracle Cloud Infrastructure Registry
    $ docker login <region-key>.ocir.io

    其中 <region-key> 是 Fn 專案 CLI 相關資訊環境中指定之 Oracle Cloud Infrastructure Registry 區域的索引鍵。例如,Phoenix 為 phx

  3. 出現提示時,輸入將建立和建置函數之使用者的使用者名稱:
    <tenancy-namespace>/<username>
    其中:
    • <tenancy-namespace> 是用來建立儲存區域之租用戶的自動產生的 Oracle Cloud Infrastructure Object Storage 命名空間字串 (如「租用戶資訊」頁面所示)。
    • <username> --將建立和部署函數的使用者。
    如果您的租用戶與 Oracle Identity Cloud Service 同盟,請使用下列格式:
    <tenancy-namespace>/oracleidentitycloudservice/<username>
  4. 提示輸入碼時,請輸入使用者的 Oracle Cloud Infrastructure 認證記號。