Observação:

Publicar Mensagens no Kafka Stream com Autenticação do Controlador de Recursos usando o OCI Functions

Introdução

Descubra a sinergia perfeita entre o Oracle Cloud Infrastructure (OCI) Functions e o OCI Streaming na orquestração de pipelines de dados em tempo real. Neste tutorial, exploraremos uma abordagem segura e eficiente para a produção de mensagens, aproveitando o método de autenticação do controlador de recursos da Oracle e o padrão de design único. Saiba como a autenticação do controlador de recursos simplifica o gerenciamento de segurança ao autenticar perfeitamente funções sem servidor com serviços do OCI Streaming, enquanto o padrão singleton otimiza a utilização de recursos e melhora a eficiência da produção de mensagens. Aprofundamos a convergência do OCI Functions e do OCI Streaming, capacitando os desenvolvedores a arquitetar soluções robustas e escaláveis orientadas a eventos sem esforço.

OCI Streaming: A OCI tem uma matriz de ferramentas para lidar com dados na nuvem, com o OCI Streaming sendo um desses serviços adaptado para fluxos de dados em tempo real de alto rendimento. Ao aproveitar o OCI Streaming, os desenvolvedores podem construir pipelines de dados escaláveis e confiáveis que ingerem, processem e distribuam fluxos de dados com eficiência.

OCI Functions: O OCI Functions é uma plataforma totalmente gerenciada, multi-tenant, altamente escalável, sob demanda, Functions-as-a-Service. Ela foi criada no OCI de nível empresarial e desenvolvida pelo mecanismo de código-fonte aberto Fn Project. Use o OCI Functions (às vezes abreviado como Functions e anteriormente conhecido como Oracle Functions) quando quiser focar na gravação de código para atender às necessidades do negócio.

Autenticação do Controlador de Recursos: você pode usar um controlador de recursos para autenticar e acessar recursos do OCI. O controlador de recursos consiste em um token de sessão temporário e credenciais seguras que permitem que o OCI Functions se autentique em outros serviços do OCI, como OCI Streaming.

Observação:

Objetivos

Pré-requisitos

Tarefa 1: Configurar Grupos Dinâmicos

Vá para seu domínio, clique em Grupos Dinâmicos e crie os grupos a seguir.

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

Tarefa 2: Criar Políticas

Vá para Políticas e crie as políticas a seguir.

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

Tarefa 3: Criar o OCI Container Registry

  1. Vá para Serviços do Desenvolvedor, clique em Registro de contêiner e crie um repositório privado para a imagem Fn.

    Nome: lab/fn-java-streaming.

    T3_1

  2. Verifique os repositórios e anote o Namespace.

    T3_1

  3. Abra o shell de terminal no qual você tem a CLI do OCI e o Docker instalados e prossiga com o log-in no registro. Verifique qual é o URL correto para sua região. Neste tutorial, estamos usando o Leste do Brasil (São Paulo) em que o URL do registro é gru.ocir.io.

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

    T3_3

Tarefa 4: Criar as Funções do OCI Java para receber a Mensagem e Publicar no Tópico do OCI Streaming

Observação Certifique-se de selecionar sua sub-rede privada, a mesma sub-rede do pool de streams.

  1. Vá para Serviços do Desenvolvedor, em Funções, clique em Aplicativos e, em seguida, clique em Criar aplicativo.

    T9_1

  2. Crie algumas configurações para armazenar as definições do OCI Streaming.

    Observação Essas variáveis de configuração são usadas neste código de amostra Java do tutorial para poder produzir mensagens para seu stream, certifique-se de passar as corretas do seu ambiente.

    Nome do Segredo Valor
    BOOTSTRAP_SERVERS cole seus servidores Bootstrap do Pool de Streams na porta 9092
    STREAM_POOL_OCID colar o OCID do Pool de Streams
    STREAM_TOPIC_NAME cole seu Nome de Fluxo

    T4_2

  3. Vá para o shell de terminal no qual você tem o Docker, a CLI do OCI e a CLI do Fn Project instalados e execute os comandos a seguir para inicializar a função.

    Observação: Se você seguiu as tarefas, o comando de log-in do Docker já foi executado até agora; caso contrário, prossiga com as etapas de log-in do Docker na Tarefa 3.

    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
    

    Observação: neste tutorial, estamos usando a região Leste do Brasil (São Paulo), se você estiver usando outra região, será necessário alterar os locais de api-url e registro.

  4. Obtenha o código de amostra da função Java aqui: fn-java-streaming.zip e descompacte-o em sua máquina shell da console do bastion.

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

    T9_1

    Esse projeto de código Java simples produzirá uma mensagem para o tópico chamado my-pvt-topic do pool de streams. Ele usará os valores de configuração de Fn criados na etapa 3.

    • HelloFunction.java.

      T9_1

    • KafkaProducerSingleton.java.

      T9_1

  5. Crie o novo código e implante a função.

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

    T9_1

    T9_1

  6. Chame a função.

    # 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

    Observação: a primeira chamada pode levar até 1 minuto para chamar a função.

Confirmação

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.