Execução de uma função a partir da origem local

Com este tutorial, execute uma função com a CLI do Code Engine a partir do código em seu sistema local

Uma função é um trecho de código sem estado que executa tarefas à medida que é chamada pelas solicitações do site HTTP. Com as funções IBM Code Engine, você pode executar sua lógica de negócios de forma escalonável e sem servidor. IBM Code Engine oferecem um ambiente de tempo de execução otimizado para dar suporte a cenários de baixa latência e rápida expansão. Seu código de função pode ser escrito em um tempo de execução gerenciado que inclui versões específicas de Node.js ou Python.

Um pacote configurável de código é uma coleção de arquivos que representa seu código de função. Este pacote configurável de códigos é injetado no contêiner de tempo de execução Seu pacote configurável de códigos é criado pelo Code Engine e armazenado no registro do contêiner ou sequencial com a função. Um pacote configurável de código não é uma imagem de contêiner padrão do Open Container Initiative (OCI)

Antes de Iniciar

Todos os usuários do Code Engine são obrigados a ter uma conta pré-paga. Os tutoriais podem gerar custos adicionais. Use o Estimador de custos para gerar uma estimativa de custo com base em seu uso planejado. Para obter mais informações, consulte Code Engine precificação.

Configure seu ambiente

  1. Efetue login na CLI do IBM Cloud .

    ibmcloud login -r us-south
    
  2. Direcione um grupo de recursos executando o comando a seguir. Para ver uma lista de seus grupos de recursos, execute ibmcloud resource groups.

    ibmcloud target -g <resource_group>
    

    Saída de exemplo

    Targeted resource group default
    
  3. Crie um projeto no Code Engine chamado sample.

    ibmcloud ce project create --name sample
    

    Saída de exemplo

    Creating project 'sample'...
    ID for project 'sample' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
    Waiting for project 'sample' to be active...
    Now selecting project 'sample'.
    OK
    

    Note que o seu projeto também é selecionado para contexto, portanto, todos os comandos subsequentes relacionados ao aplicativo estão dentro do escopo deste novo projeto sample.

  4. Familiarize-se com comandos de funções visualizando as opções de comando.

    ibmcloud ce fn --help
    

Criar o código-fonte

Crie um arquivo de origem Node.js chamado funhello.js com o seguinte código de amostra.

  function main(params) {
      var msg = 'You did not tell me who you are.';
      if (params.name) {
          msg = `Hello, ${params.name}!`
       } else {
          msg = `Hello, Functions on CodeEngine!`
      }
      return {
          headers: { 'Content-Type': 'text/html; charset=utf-8' },
          body: `<html><body><h3>${msg}</h3></body></html>`
       }
  }

  module.exports.main = main;

Crie sua função

Crie a função do arquivo funhello.js.

ibmcloud ce fn create --name funhello --runtime nodejs --build-source funhello.js

Saída de comando

Preparing function 'funhello' for build push...
Creating function 'funhello'...
Packaging files to upload from source path 'hello.js'...
Submitting build run 'funhello-run-230623-090738611'...
Creating image 'private.stg.icr.io/ce--8a6a0-13c66hbi3rhz/function-funhello:230623-1407-s8kzr'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n funhello-run-230623-090738611' to check the build run status.
Waiting for function 'funhello' to become ready...
Function 'funhello' is ready.
OK
Run 'ibmcloud ce function get -n funhello' to see more details.

https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud

Depois que a invocação da função URL estiver disponível, use o seguinte comando para encontrar informações sobre a função.

ibmcloud ce fn get -n funhello

Vamos olhar mais detalhadamente o comando function create anterior. Observe que a saída do comando function create fornece informações sobre a progressão da execução da compilação antes de a função ser criada e implantada.

  1. Code Engine recebe uma solicitação para criar uma função a partir do código fonte.
  2. Code Engine verifica se há um ID de serviço IAM e uma chave de API associados ao projeto selecionado. Essa ID de serviço deve estar autorizada a ler e gravar em IBM Cloud Container Registry. Se nenhum ID de serviço existir, o Code Engine criará um para você. Note que este ID de serviço é usado para solicitações de construção do Code Engine subsequentes que são executadas por meio do mesmo projeto.
  3. Este exemplo cria código a partir de uma fonte local (--build-source). O código-fonte (hello.js) é compactado em um arquivo de pacote de código e carregado em um namespace gerenciado dentro da instância IBM Cloud Container Registry em sua conta. Note que você só pode destinar o IBM Cloud Container Registry para suas construções locais. Para obter mais informações sobre IBM Container Registry, incluindo informações sobre limites de cota e acesso, consulte Getting started with IBM Cloud Container Registry.
  4. Code Engine constrói seu código-fonte em um pacote configurável de código. O pacote de código-fonte é criado no mesmo namespace do arquivo de código-fonte.
  5. Após a conclusão da compilação, sua função é implantada. Você pode acessar sua função no site URL.

Chamar sua função

Chame a função URL colando-a em uma janela do navegador. Também é possível usar o comando curl em sua linha de comandos

Hello, Functions on CodeEngine!

Você criou e chamou com sucesso uma função Code Engine !

Forneça parâmetros para sua função

Invoque a função URL com um parâmetro adicionando ?name=Sunshine ao final de URL e colando-o em uma janela do navegador.

https://funhello.13c66hbi3rhz.us-south.codeengine.appdomain.cloud?name=Sunshine
Hello, Sunshine!

Limpar

É possível excluir sua função com o comando a seguir.

ibmcloud ce fn delete -n funhello

Quando você exclui sua função, os arquivos de compilação associados também são excluídos.

Por fim, exclua o pacote de código que a compilação criou em IBM Cloud Container Registry.

  1. Navegar para Container Registry> Imagens no IBM Cloud console.
  2. Selecione a região no Localização menu suspenso que você selecionou quando fez logon no IBM Cloud.
  3. Encontre a imagem (que representa seu pacote de código) associada à sua função pesquisando o nome da sua função (por exemplo,funhello ).
  4. Selecione a imagem (por exemplo,au.icr.io/ce--27b98-1jp42v8n9n3o/function-funhello@sha256:b53683f47e0e548b4fa1d3fc93404399fdc4008b54ccecc0852794ea88d01538 ) e selecione Excluir no menu reticências (...).

Próximas etapas

  • Depois que a função for criada, você poderá acessá-la clicando em Test function (Testar função) no console ou encontrando o endereço URL para a função com o comando function get comando.

  • É possível criar um mapeamento de domínio customizado e designá-lo à sua função.

  • Após sua função ser criada e implementada, é possível atualizar a função para atender às suas necessidades por meio do console ou usando o comando ibmcloud ce function update. Se quiser atualizar o código-fonte para usar com a sua função, você deverá fornecer a opção --build-source no comando function update comando.

Após a criação da função, é possível atualizá-la e ao código referenciado usando qualquer uma das seguintes maneiras, independentemente de como você criou ou atualizou a função anteriormente:

  • Se você tiver um pacote configurável de códigos existente, será necessário fornecer apenas uma referência à imagem, que aponta para o local de seu registro de contêiner ao implementar seu app. Para obter mais informações, consulte Criando cargas de trabalho de função de pacotes configuráveis de código existentes.

    Se você criou sua função usando o comando function create e especificou a opção --build-source para construir o pacote configurável de códigos a partir da origem local ou do repositório e desejar alterar sua função para apontar para um pacote configurável de código diferente, primeiro você deve remover a associação da construção de sua função. Por exemplo, execute ibmcloud ce function update -n FUN_NAME --build-clear.. Após remover a associação da construção de sua função, é possível atualizar a função para fazer referência a uma imagem diferente.

  • Se estiver começando com o código-fonte que reside em um repositório Git, você pode optar por permitir que o Code Engine crie o pacote de código a partir do código-fonte e crie a função com uma única operação. Nesse cenário, Code Engine faz o upload do pacote de código para IBM Cloud® Container Registry. Para saber mais, consulte Criando sua função a partir do código-fonte do repositório.

  • Se você estiver começando com o código de origem que reside em uma estação de trabalho local, será possível escolher Code Engine para construir o pacote configurável de código a partir de sua origem e criar sua função com um comando da CLI único. Neste cenário, o Code Engine faz upload de seu código de origem e pacote configurável de código para IBM Cloud® Container Registry.

    Por exemplo, você pode optar por Code Engine para criar seu código-fonte local enquanto você desenvolve o desenvolvimento do código-fonte para a função. Em seguida, após o pacote configurável de código ser amadurecido, é possível atualizar sua função para referenciar o pacote configurável de código específico que você deseja. É possível repetir esse processo conforme necessário.

Procurando mais exemplos de código? Confira as Amostras para IBM Cloud Code Engine GitHub repo.