附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
使用 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) 自行認證。
注意:
- 本教程僅供教育和學習之用。它為學員提供一個實驗環境,並在受控制的環境中獲得實際經驗。請特別注意,本教學課程中使用的安全組態和實務可能不適用於實際情況。
- 真實世界應用程式的安全考量通常更複雜且動態。因此,在實際執行環境中實行此處示範的任何技術或組態之前,必須先進行全面性的安全評估和複查。此檢閱應涵蓋安全的所有層面,包括存取控制、加密、監督以及規範,以確保系統符合組織的安全原則和標準。
- 從實驗室環境轉換成實際部署時,安全性應始終是首要任務。
目標
- 使用 OCI Functions,將訊息無縫產生至 OCI 串流集區內的串流主題。運用 Oracle 資源主體認證方法,並在 Java 中實行單一設計樣式,我們將引導您完成使用 Kafka API 安全認證無伺服器函數的程序,並最佳化資源使用率以提高訊息生產效率。
必要條件
-
Oracle Cloud Infrastructure
-
本機機器環境
-
專用子網路上的 Oracle Linux 運算執行處理。這對於存取專用子網路上的資源很重要,例如將在本教學課程期間部署的 OCI Streaming 和 Functions。
-
連線至 Oracle Linux 運算執行處理並執行教學課程作業的 OCI 堡壘主機。如需詳細資訊,請參閱堡壘主機總覽。
-
本機 Oracle Cloud Infrastructure 命令行介面 (OCI CLI) 設定。如需詳細資訊,請參閱 Installing the CLI 。
-
如果您使用 Oracle Linux,可以建置映像檔的本機 Docker,請參閱 Docker:在 Oracle Linux 8 上安裝 Docker (OL8) 。
-
本機 FN CLI 可將您的功能部署到 OCI:安裝 Fn Project CLI
-
作業 1:設定動態群組
移至您的網域,按一下動態群組並建立下列群組。
- 群組名稱:
MyFunctions
。
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
作業 2:建立原則
請前往原則並建立下列原則。
- 原則名稱:
FunctionsPolicies
。
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 容器登錄
-
前往開發人員服務,按一下容器登錄,然後為 Fn 映像檔建立專用儲存區域。
名稱:
lab/fn-java-streaming
。 -
檢查儲存區域,並記下命名空間。
-
開啟已安裝 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
作業 4:建立 Java OCI 函數以接收訊息並發布至 OCI 串流主題
注意:請確定您選取的專用子網路與串流集區的子網路相同。
-
前往開發人員服務,在函數下,按一下應用程式,然後按一下建立應用程式。
-
建立一些組態以儲存 OCI Streaming 設定值。
注意:此教學課程 Java 範例程式碼中會使用此組態變數來產生訊息至您的串流,請確定您已從環境傳送正確的組態變數。
加密密碼名稱 數值 BOOTSTRAP_SERVERS 將您的「串流集區啟動安裝」伺服器貼到連接埠 9092 STREAM_POOL_OCID 貼上您的串流集區 OCID STREAM_TOPIC_NAME 貼上您的串流名稱 -
移至已安裝 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-url 和 registry 位置。
-
從此處取得 Java 函數範例程式碼: fn-java-streaming.zip ,然後在您的堡壘主機主控台 Shell 機器上解壓縮。
# check your file is there ls -lrt # unzip the file unzip fn-java-streaming.zip
這個簡單的 Java 程式碼專案會從串流集區產生名為
my-pvt-topic
的主題訊息。它會使用在步驟 3 中建立的 Fn 組態值。-
HelloFunction.java
. -
KafkaProducerSingleton.java
.
-
-
建置新程式碼並部署函數。
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
呼叫函數。
# Invoke the function to check if it is working as expected. echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
注意:第一個呼叫最多可能需要 1 分鐘才能呼叫函數。
相關連結
認可
- 作者 - Joao Tarla (Oracle LAD A 團隊解決方案工程師)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93781-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.