附註:

使用 OCI 函數將訊息張貼至具有資源主體認證的 Kafka 串流

簡介

探索 Oracle Cloud Infrastructure (OCI) Functions 與 OCI Streaming 之間的緊密協同效應,以協調即時資料管線。在本教學課程中,我們將運用 Oracle 資源主要項目認證方法和單一設計樣式,探索安全且有效率的訊息生產方法。瞭解資源主體認證如何透過使用 OCI Streaming 服務無縫驗證無伺服器函數來簡化安全性管理,而單一樣式則可最佳化資源使用率並提升訊息生產效率。我們整合了 OCI Functions 和 OCI Streaming,讓開發人員能夠輕鬆建構強大且可擴展的事件導向解決方案。

OCI Streaming: OCI 提供一系列工具來處理雲端中的資料,而 OCI Streaming 是專為高傳輸量、即時資料串流量身打造的服務。運用 OCI Streaming,開發人員可以建構可擴展且可靠的資料管線,以有效率地擷取、處理及分送資料串流。

OCI Functions: OCI Functions 是一個完全託管的多租用戶,可高度擴展,可隨選 Functions-as-a 服務平台。它是以企業級 OCI 為基礎,由 Fn Project 開放原始碼引擎提供技術支援。當您想要專注於撰寫程式碼以滿足業務需求時,請使用 OCI Functions (有時縮寫為 Functions,之前稱為 Oracle Functions)。

資源主體認證:您可以使用資源主體來認證和存取 OCI 資源。資源主要項目包含暫時階段作業記號和安全證明資料,讓 OCI 函數能夠向其他 OCI 服務 (例如 OCI Streaming) 自行認證。

注意:

目標

必要條件

作業 1:設定動態群組

移至您的網域,按一下動態群組並建立下列群組。

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

作業 2:建立原則

請前往原則並建立下列原則。

Allow dynamic-group MyFunctions to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME

作業 3:建立 OCI 容器登錄

  1. 前往開發人員服務,按一下容器登錄,然後為 Fn 映像檔建立專用儲存區域。

    名稱:lab/fn-java-streaming

    T3_1

  2. 檢查儲存區域,並記下命名空間

    T3_1

  3. 開啟已安裝 OCI CLI 和 Docker 的終端機 Shell,然後繼續登入登錄。請檢查您所在區域的正確 URL 為何。在本教學課程中,我們使用巴西東部 (聖保羅) ,其中登錄 URL 為 gru.ocir.io

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

作業 4:建立 Java OCI 函數以接收訊息並發布至 OCI 串流主題

注意:請確定您選取的專用子網路與串流集區的子網路相同。

  1. 前往開發人員服務,在函數下,按一下應用程式,然後按一下建立應用程式

    T9_1

  2. 建立一些組態以儲存 OCI Streaming 設定值。

    注意:此教學課程 Java 範例程式碼中會使用此組態變數來產生訊息至您的串流,請確定您已從環境傳送正確的組態變數。

    加密密碼名稱 數值
    BOOTSTRAP_SERVERS 將您的「串流集區啟動安裝」伺服器貼到連接埠 9092
    STREAM_POOL_OCID 貼上您的串流集區 OCID
    STREAM_TOPIC_NAME 貼上您的串流名稱

    T4_2

  3. 移至已安裝 Docker、OCI CLI、Fn Project CLI 的終端機 Shell,然後執行下列命令來初始化函數。

    注意:如果您遵循這些工作,現在已經執行您的 Docker 登入命令 (如果沒有的話),請繼續執行「工作 3」中的 Docker 登入步驟。

    fn create context oci-cloud --provider oracle
    fn use context oci-cloud
    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    

    注意:在本教學課程中,我們將使用 Brazil East (Sao Paulo) 區域,如果您使用其他區域,則必須變更 api-urlregistry 位置。

  4. 從此處取得 Java 函數範例程式碼: fn-java-streaming.zip ,然後在您的堡壘主機主控台 Shell 機器上解壓縮。

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-streaming.zip
    

    T9_1

    這個簡單的 Java 程式碼專案會從串流集區產生名為 my-pvt-topic 的主題訊息。它會使用在步驟 3 中建立的 Fn 組態值。

    • HelloFunction.java.

      T9_1

    • KafkaProducerSingleton.java.

      T9_1

  5. 建置新程式碼並部署函數。

    cd fn-java-streaming
    ls -lrt
    fn deploy --app fn-lab
    

    T9_1

    T9_1

  6. 呼叫函數。

    # Invoke the function to check if it is working as expected.
    echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
    

    T9_1

    注意:第一個呼叫最多可能需要 1 分鐘才能呼叫函數。

認可

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center