Usando um Repositório de Código para Criar uma Função com o Code Editor
Descubra como usar o Code Editor para criar uma nova função no OCI Functions com base no código de função existente em um repositório Git remoto.
Você pode usar o Code Editor para criar uma função no OCI Functions com base no código de função existente em um repositório Git remoto. Depois de clonar o repositório Git remoto em um repositório Git local, você pode usar o Code Editor para editar o código no repositório Git local. Quando terminar de fazer alterações, você poderá usar o Code Editor para confirmar e enviar o código de volta ao repositório Git remoto. Com as atualizações no repositório Git remoto, você pode usar o Code Editor para implantar a função no OCI Functions e, em seguida, chamar a função.
Ao usar o Code Editor para criar e atualizar funções, observe o seguinte:
- O repositório Git remoto deve conter um arquivo func.yaml válido no nível superior.
- O nome de uma função que você cria usando o Code Editor deve corresponder ao nome da função especificado no arquivo func.yaml no repositório de código remoto. Se os nomes forem diferentes, você não poderá chamar a função.
- Ao implantar uma função no OCI Functions, você está extraindo o commit mais recente do repositório Git remoto. Alterações não confirmadas e confirmações no repositório local são ignoradas. Portanto, para poder implantar uma função nova ou atualizada no OCI Functions, sempre confirme arquivos novos e modificados no repositório Git local e, em seguida, envie as alterações para o repositório Git remoto.
Este tópico explica como usar o Code Editor para:
- criar uma nova função a partir do código em um repositório Git remoto existente
- implantar a função no OCI Functions
- chamar a função
- opcionalmente, atualizar a função, implantá-la novamente e chamá-la novamente
Antes de começar:
- Você deve ter concluído as etapas nas Funções QuickStart no Cloud Shell.
- Para seguir as etapas deste tópico, você deve ter acesso a um repositório Git remoto (por exemplo, em GitHub) que contenha o código da função e um arquivo func.yaml no nível superior do repositório.
- Por conveniência e simplicidade, os exemplos neste tópico supõem que você tenha usado o comando
fn init --runtime python helloworld-func-python
para criar uma função helloworld python simples que você enviou para um repositório Git remoto. Se você criou essa função helloworld do python e a enviou para um repositório Git remoto, poderá especificar esse repositório Git remoto como o repositório de código ao seguir as instruções. Se você não tiver certeza de como criar a função helloworld do python e enviá-la para um repositório Git remoto, consulte Etapas Preliminares Opcionais para Fazer Upload de um Código de Função helloworld Python Simples para um Repositório de Código Remoto.
Para obter mais informações sobre recursos e funcionalidades do Code Editor, consulte Code Editor.
Etapas Preliminares Opcionais para Fazer Upload de um Código de Função helloworld Python Simples para um Repositório de Código Remoto
Para preencher um repositório Git remoto com arquivos de código-fonte e func.yaml válidos para uma função helloworld python simples, para uso na seção Criando uma Função a Partir de um Repositório de Código Usando o Code Editor mais adiante neste tópico:
- Crie um novo repositório Git remoto. Por exemplo, em GitHub como
https://github.com/jdoe/simple-python-helloworld-repo
. - No Cloud Shell, crie um diretório temporário para conter a função helloworld do python. Por exemplo,
/home/jdoe/temp/python/simple-helloworld
- Alterne para o diretório que você acabou de criar.
- Execute
fn init --runtime python helloworld-func-python
para criar uma função helloworld python chamadahelloworld-func-python
. - Alterne para o diretório
helloworld-func-python
recém-criado. - Converta o diretório
helloworld-func-python
sem versão em um repositório Git local digitando:git init
- Adicione os arquivos no diretório
helloworld-func-python
à área de preparação digitando:git add .
- Armazene o conteúdo da área de preparação no repositório Git local digitando:
git commit
- Quando solicitado, informe uma mensagem de commit:
- Pressione a tecla i no teclado para inserir texto.
- Informe uma mensagem de commit. Por exemplo:
Adds simple python hello-world files.
- Pressione a tecla Esc, digite : w q e pressione Enter.
- No Cloud Shell, conecte o repositório Git local ao repositório Git remoto criado anteriormente digitando:
git remote add origin <remote-repository-url>
Por exemplo:
git remote add origin https://github.com/jdoe/simple-python-helloworld-repo.git
- Crie uma nova ramificação chamada
main
no repositório Git local digitando:git branch -M main
- Envie arquivos para a ramificação
main
no repositório Git remoto informando:git push -u origin main
- Se solicitado, informe o nome de usuário e a senha do Git para o repositório Git remoto.
No caso de GitHub, observe que sua senha é o Token de Acesso Pessoal GitHub.
Agora você fez upload de arquivos de código-fonte e func.yaml válidos para uma função helloworld python simples para um repositório Git remoto, para uso na seção Criando uma Função a Partir de um Repositório de Código Usando o Code Editor.
Criando uma Função a Partir de um Repositório de Código Usando o Code Editor
Para usar o Code Editor para criar uma nova função no OCI Functions com base no código de função existente em um repositório Git remoto:
- Confirme se você concluiu as etapas nas Funções QuickStart no Cloud Shell para:
- Configure sua tenancy com grupos e usuários, crie um compartimento no qual criar recursos do OCI Functions, crie uma VCN e sub-redes e crie uma política do serviço IAM.
- Configure seu ambiente de desenvolvimento do Cloud Shell com o contexto da CLI do Fn Project, obtenha um token de autenticação e faça log-in no registro do Docker especificado para o contexto da CLI do Fn Project.
- Acesse a Console como desenvolvedor de funções.
-
Use a Console para criar um novo aplicativo no OCI Functions:
- Abra o menu de navegação e selecione Serviços ao Desenvolvedor. Em Funções, selecione Aplicativos.
- Selecione a região que você pretende usar para o OCI Functions.
Recomendamos que você use a mesma região que o registro Docker especificado no contexto da CLI do Fn Project (consulte Criando um Contexto da CLI do Fn Project para Conexão com o Oracle Cloud Infrastructure).
-
Selecione o compartimento especificado no contexto da CLI do Fn Project (consulte Criando um Contexto da CLI do Fn Project para Conectar ao Oracle Cloud Infrastructure).
A página Aplicativos mostra os aplicativos já definidos no compartimento.
-
Selecione Criar Aplicativo e especifique:
- Um nome para o novo aplicativo. Por exemplo,
helloworld-python-app
-
A VCN e a sub-rede (ou sub-redes, até no máximo três) na qual executar a função. Recomendamos que as sub-redes estejam na mesma região que o registro Docker especificado no contexto da CLI do Fn Project (consulte Criando um Contexto da CLI do Fn Project para Conexão com o Oracle Cloud Infrastructure).
Para obter mais informações sobre as outras opções de criação de aplicativo, consulte Criando um Aplicativo.
- Um nome para o novo aplicativo. Por exemplo,
- Selecione Criar para criar o aplicativo.
-
Inicie o Code Editor de uma das seguintes maneiras:
- Na página de lista Aplicativos, selecione o aplicativo no qual deseja criar a função. Na página Detalhes do Aplicativo, selecione Funções. Na guia Funções, selecione Criar no editor de código. Este método abre o Code Editor no aplicativo que você acabou de criar.
- Selecione a opção Editor de código no botão Ferramentas do desenvolvedor na barra de ferramentas da Console.
- Crie uma nova função com base em um repositório de código:
- No painel do Code Editor do Oracle Cloud Infrastructure, navegue até o aplicativo que você acabou de criar no compartimento especificado no contexto da CLI do Fn Project. Por exemplo,
helloworld-python-app
. - Com o nome do aplicativo destacado, selecione Criar Função... no menu do botão direito do mouse.
- Selecione o método de criação Criar com base em um repositório de código no campo de entrada na barra de menus do Code Editor.
- Informe o nome da função especificado no arquivo func.yaml da função no repositório remoto (por exemplo, helloworld-func-python) e pressione Enter.
Observe que o nome da função que você cria usando o Code Editor deve corresponder ao nome da função especificado no arquivo func.yaml no repositório de código remoto. Se os nomes forem diferentes, você não poderá chamar a função posteriormente.
- Informe o url do repositório remoto que contém o código da função. Por exemplo,
https://github.com/jdoe/simple-python-helloworld-repo
- Se solicitado, informe o nome de usuário e a senha do Git para o repositório Git remoto.
No caso de GitHub, observe que a senha é o Token de Acesso Pessoal GitHub.
Quando o repositório Git remoto tiver sido clonado com sucesso, uma caixa de diálogo será exibida com a mensagem "Gostaria de abrir o repositório clonado ou adicioná-lo ao espaço de trabalho atual".
-
Selecione o botão X no canto superior direito da caixa de diálogo para fechar a caixa de diálogo sem selecionar uma opção.
Importante: Não selecione o botão Abrir nem o botão Adicionar ao Espaço de Trabalho na caixa de diálogo.
- Selecione OK para confirmar a caixa de diálogo informando que as alterações precisam ser confirmadas e enviadas para uma ramificação remota para que a função possa ser implantada.
O repositório Git remoto é clonado em um repositório Git local em
/home/<username>/oci-ide-plugins/faas-artifacts/<app-ocid>/<function-name>/<repository-name>
. Por exemplo,/home/jdoe/oci-ide-plugins/faas-artifacts/ocid1.fnapp.oc1.iad.aaaaaa______76nf/helloworld-func-python/simple-python-helloworld-repo
.Se você tiver baseado a nova função na função helloworld do python no repositório Git remoto, o diretório do repositório Git local conterá:
- func.yaml
- func.py
- requirments.txt
- No painel do Code Editor do Oracle Cloud Infrastructure, navegue até o aplicativo que você acabou de criar no compartimento especificado no contexto da CLI do Fn Project. Por exemplo,
- Implante a função no OCI Functions:
- Abra uma janela de terminal do Code Editor selecionando Novo Terminal na janela Terminal na barra de menus do Code Editor.
- Na janela de terminal do Code Editor, altere o diretório para o diretório recém-criado que contém o arquivo func.yaml e os arquivos de origem da função digitando:
cd /home/<oci-username>/oci-ide-plugins/faas-artifacts/<application-OCID>/<function-name>/<repos-name>
Por exemplo:
cd /home/jdoe/oci-ide-plugins/faas-artifacts/ocid1.fnapp.oc1.iad.aaaaaa______76nf/helloworld-func-python/simple-python-helloworld-repo
-
Na janela de terminal do Code Editor, no diretório que contém o arquivo func.yaml e os arquivos de origem da função, faça log-in no registro do Docker especificado no contexto da CLI do Fn Project. Supondo que o registro do Docker seja o Oracle Cloud Infrastructure Registry, use o seguinte comando:
docker login -u '<tenancy-namespace>/<user-name>' <region-key>.ocir.io
Por exemplo:
docker login -u 'ansh81vru1zp/jdoe@acme.com' phx.ocir.io
- Quando for solicitada uma senha, digite seu token de autenticação do OCI.
- Na janela de terminal do Code Editor, implante a função no OCI Functions executando:
fn -v deploy --app <application-name>
Por exemplo:
fn -v deploy --app helloworld-python-app
- Chame a função que você acabou de implantar:
- Na janela de terminal do Code Editor, no diretório que contém o arquivo func.yaml e os arquivos de origem da função, chame a função executando:
fn invoke <application-name> <function-name>
Por exemplo:
fn invoke helloworld-python-app helloworld-func-python
Se uma mensagem for retornada mostrando que a função não foi encontrada, uma causa provável será uma incompatibilidade entre o nome da função criada no Code Editor e o nome da função especificada em func.yaml. Repita as etapas anteriores para criar uma função no Code Editor que tenha o mesmo nome especificado no arquivo func.yaml no repositório Git remoto.
Se você tiver baseado a nova função na função helloworld do python, a seguinte mensagem será exibida:
{"message": "Hello World"}
- Na janela de terminal do Code Editor, no diretório que contém o arquivo func.yaml e os arquivos de origem da função, chame a função executando:
-
(Opcional) Se você tiver baseado a nova função na função helloworld do python chamada
helloworld-func-python
nas etapas anteriores, esta etapa opcional descreve como alterar o texto da mensagem que é exibida quando a função é chamada. Atualize o texto da mensagem no repositório Git local, envie a atualização para o repositório Git remoto e, em seguida, implante e chame a função.- No painel do Oracle Cloud Infrastructure do Code Editor, na função
helloworld-func-python
que você acabou de criar, selecione o arquivofunc.py
e altere a linha:{"message": "Hello {0}".format(name)}),
para ler:{"message": "Greetings {0}".format(name)}),
- No navegador do Code Editor, selecione o painel Controle de Origem, selecione o botão Mais Ações e selecione Confirmar no menu Confirmar.
- Quando solicitado a preparar alterações, selecione Sim.
- Informe uma mensagem de commit (por exemplo,
Changes-Hello-to-Greetings
) e pressione Enter. - Selecione o botão Mais Ações e selecione Enviar no menu Obter, Enviar
- Se solicitado, informe o nome de usuário e a senha do Git para o repositório Git remoto.
No caso de GitHub, observe que a senha é o Token de Acesso Pessoal GitHub.
- Se uma caixa de diálogo for exibida com a mensagem "Deseja que o Code Editor execute periodicamente 'git fetch'?", selecione Perguntar Mais Tarde.
-
Na janela de terminal do Code Editor, no diretório que contém o arquivo func.yaml e os arquivos de origem da função, implante a função digitando:
fn -v deploy --app <application-name>
Por exemplo:
fn -v deploy --app helloworld-python-app
- Na janela de terminal do Code Editor, chame a função digitando:
fn invoke <application-name> <function-name>
Por exemplo:
fn invoke helloworld-python-app helloworld-func-python
A mensagem a seguir é exibida.
{"message": "Greetings World"}
A mensagem atualizada confirma que você modificou com sucesso o código-fonte da função no repositório Git local, enviou a atualização para o repositório Git remoto e, em seguida, implantou e chamou a função.
- No painel do Oracle Cloud Infrastructure do Code Editor, na função