注意:

使用 OCI 函数通过资源主用户验证将消息发布到 Kafka 流

简介

了解 Oracle Cloud Infrastructure (OCI) Functions 与 OCI Streaming 在编排实时数据管道方面的无缝协同作用。在本教程中,我们将利用 Oracle 资源主体验证方法和单例设计模式,探讨安全高效的消息生成方法。了解资源主用户身份验证如何通过使用 OCI 流处理服务无缝验证无服务器功能来简化安全管理,而单例模式可优化资源利用率并提高消息生成效率。我们深入了解 OCI Functions 和 OCI Streaming 的融合,让开发人员能够轻松构建强大、可扩展的事件驱动解决方案。

OCI 流处理: OCI 提供一系列工具来处理云中的数据,OCI 流处理服务专为高吞吐量实时数据流而定制。利用 OCI Streaming,开发人员可以构建可扩展、可靠的数据管道,高效摄取、处理和分发数据流。

OCI Functions: OCI Functions 是一个完全托管、多租户、高度可扩展的按需函数即服务平台。它基于企业级 OCI 构建,由 Fn Project 开源引擎提供支持。当您需要专注于编写代码以满足业务需求时,请使用 OCI Functions(有时缩写为 Functions,以前称为 Oracle Functions)。

资源主体验证:您可以使用资源主体验证和访问 OCI 资源。资源主体由临时会话令牌和安全凭证组成,允许 OCI Functions 向其他 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。在本教程中,我们将使用 Brazil East (Sao Paulo) ,其中注册表 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. 转到 Developer Services(开发人员服务),在 Functions(函数)下单击 Applications(应用程序),然后单击 Create application(创建应用程序)

    T9_1

  2. 创建一些配置来存储 OCI 流处理设置。

    注意此配置变量在本教程 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 帮助中心