Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
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:
- Este tutorial é projetado exclusivamente para fins educacionais e de estudo. Ele fornece um ambiente para os alunos experimentarem e ganharem experiência prática em um ambiente controlado. É crucial notar que as configurações e práticas de segurança empregadas neste tutorial podem não ser adequadas para cenários do mundo real.
- As considerações de segurança para aplicativos do mundo real geralmente são muito mais complexas e dinâmicas. Portanto, antes de implementar qualquer uma das técnicas ou configurações demonstradas aqui em um ambiente de produção, é essencial realizar uma avaliação e revisão de segurança abrangente. Essa revisão deve abranger todos os aspectos da segurança, incluindo controle de acesso, criptografia, monitoramento e conformidade, para garantir que o sistema esteja alinhado com as políticas e os padrões de segurança da organização.
- A segurança sempre deve ser uma prioridade ao fazer a transição de um ambiente de laboratório para uma implantação do mundo real.
Objetivos
- Produza mensagens de forma integrada em um tópico de streaming dentro de um pool de fluxos do OCI usando o OCI Functions. Aproveitando o método de autenticação do controlador de recursos da Oracle e implementando o padrão de design único em Java, orientaremos você pelo processo de autenticação segura de funções sem servidor com a API Kafka e otimização da utilização de recursos para produção eficiente de mensagens.
Pré-requisitos
-
Oracle Cloud Infrastructure
-
Conta Oracle com permissões de acesso no nível de administrador.
-
Um compartimento para criar seus recursos.
Observação: Anote o nome do compartimento e o ID do compartimento.
-
VCN com uma sub-rede privada. Para obter mais informações, consulte Criando uma Rede Virtual na Nuvem.
-
Pool de streams na sub-rede privada da sua VCN. Para obter mais informações, consulte Criando um Pool de Streams.
-
Stream chamado
my-pvt-topic
, criado no pool de streams acima. Para obter mais informações, consulte Criando um Fluxo.
-
-
Ambiente de máquina local
-
Uma instância de computação do Oracle Linux na sub-rede privada. Isso é importante para acessar recursos na sub-rede privada, como OCI Streaming e Functions, que serão implantados durante este tutorial.
-
Um Bastion host do OCI para estabelecer conexão com a instância de computação do Oracle Linux e executar tarefas para o tutorial. Para obter mais informações, consulte Visão Geral do Serviço Bastion.
-
Configuração da CLI (Command Line Interface) local do Oracle Cloud Infrastructure. Para obter mais informações, consulte Instalando a CLI.
-
O Docker local para poder criar imagens, se você estiver usando o Oracle Linux, consulte Docker: Instalar o Docker no Oracle Linux 8 (OL8).
-
CLI FN local para poder implantar sua função no OCI: Instalando a CLI do Fn Project
-
Tarefa 1: Configurar Grupos Dinâmicos
Vá para seu domínio, clique em Grupos Dinâmicos e crie os grupos a seguir.
- Nome do Grupo:
MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Tarefa 2: Criar Políticas
Vá para Políticas e crie as políticas a seguir.
- Nome da Política:
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
Tarefa 3: Criar o OCI Container Registry
-
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
. -
Verifique os repositórios e anote o Namespace.
-
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
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.
-
Vá para Serviços do Desenvolvedor, em Funções, clique em Aplicativos e, em seguida, clique em Criar aplicativo.
-
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 -
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.
-
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
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
. -
KafkaProducerSingleton.java
.
-
-
Crie o novo código e implante a função.
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
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
Observação: a primeira chamada pode levar até 1 minuto para chamar a função.
Links Relacionados
Confirmação
- Autor - João Tarla (Engenheiro de Soluções da Oracle LAD A-Team)
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.
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93779-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.