Preparar o Ambiente de Desenvolvimento Local

Para poder começar a usar o Oracle Functions para criar e implantar funções, configure seu ambiente local para desenvolvimento de funções.

Embora seja possível usar o Cloud Shell ou uma instância de computação do Oracle Cloud Infrastructure como ambiente de desenvolvimento, este documento pressupõe que você usará um ambiente Linux local para desenvolvimento de funções.

Antes de Começar

Além das tarefas apresentadas nesta seção para configurar uma instância local do Linux para desenvolvimento de funções, você também deve executar as seguintes tarefas:

Criar uma Chave de Assinatura

Antes de usar o Oracle Functions, você precisa configurar uma chave de assinatura de API Oracle Cloud Infrastructure.

  1. Efetue log-in em seu ambiente de desenvolvimento de máquina local como desenvolvedor de funções.
  2. Gere uma chave privada criptografada com uma frase-senha fornecida digitando:
    $ openssl genrsa -out ~/.oci/<private-key-file-name>.pem -aes128 2048

    onde <private-key-file-name> é um nome de sua escolha para o arquivo de chave privada.

  3. Quando solicitado, insira uma frase-senha para criptografar o arquivo de chave privada. Certifique-se de anotar a frase-senha informada, pois ela será necessária posteriormente.
  4. Quando solicitado, digite novamente a frase-senha para confirmá-la.
  5. Altere as permissões no arquivo para garantir que somente você possa lê-lo.
    $ chmod go-rwx ~/.oci/<private-key-file-name>.pem

    onde <private-key-file-name> é um nome do arquivo da chave privada.

  6. Gere uma chave pública (criptografada com a mesma frase-senha fornecida ao criar a chave privada e no mesmo local do arquivo de chave privada) digitando:
    $ openssl rsa -pubout -in ~/.oci/<private-key-file-name>.pem -out ~/.oci/<public-key-file-name>.pem

    em que <private-key-file-name> é um nome do arquivo de chave privada e <public-key-file-name> é um nome de sua escolha para o arquivo de chave pública.

  7. Quando solicitado, digite a mesma frase-senha informada anteriormente para criptografar o arquivo de chave privada.
  8. Copie o conteúdo do arquivo de chave pública que você acabou de criar, informando:
    $ cat ~/.oci/<public-key-file-name>.pem | pbcopy

    em que <public-key-file-name> é um nome de sua escolha para o arquivo de chaves públicas.

  9. Efetue log-in na Console como desenvolvedor de funções, abra o menu Usuário no canto superior direito e selecione Configurações do Usuário.
  10. Na página Chaves API, clique em Adicionar Chave Pública. Cole o valor da chave pública na janela e clique em Adicionar. A chave é carregada e sua impressão digital é exibida.

Criar um Perfil da Interface da Linha de Comandos (CLI)

Antes de usar o Oracle Functions, você deve ter um arquivo de configuração da CLI do Oracle Cloud Infrastructure que contenha o perfil de credenciais da conta de usuário que você usará para criar e implantar funções.

O arquivo de configuração da CLI do Oracle Cloud Infrastructure pode conter vários perfis. Se você já tiver um arquivo de configuração contendo um ou mais perfis, será necessário adicionar um novo perfil ao arquivo existente para o usuário que usará o Oracle Functions para criar e implantar funções

  1. Efetue log-in em seu ambiente de desenvolvimento de máquina local como desenvolvedor de funções.
  2. Abra o arquivo ~/.oci/config em um editor de texto. (Se o diretório e/ou o arquivo ainda não existirem, crie-os).
  3. Adicione um novo perfil ao arquivo ~.oci/config da seguinte maneira:
    [<profile-name>]
    user=<user-ocid>
    fingerprint=<public-key-fingerprint>
    key_file=<full-path-to-private-key-pem-file>
    tenancy=<tenancy-ocid>
    region=<region-name>
    pass_phrase=<passphrase>

    em que:

    • <profile-name> é um nome de sua escolha para o perfil.
    • <user-ocid> é o OCID da conta de usuário do Oracle Cloud Infrastructure que você usará para criar e implantar funções.
    • <public-key-fingerprint> é a impressão digital do valor da chave de API pública que você carregou na Console anteriormente.
    • <full-path-to-private-key-pem-file> é o caminho completo do arquivo de chave privada criado anteriormente.
    • <tenancy-ocid> é o OCID da tenancy na qual você criará e implantará funções.
    • <region-identifier> é o identificador da região do Oracle Cloud Infrastructure na qual você criará e implantará funções. Por exemplo, us-phoenix-1.
    • <passphrase> é a frase-senha especificada ao criar chaves públicas/privadas.
  4. Salve e feche o arquivo.

Copiar e Configurar o Script oci-curl

É possível usar um script para chamar uma função. O script oci-curl cria uma solicitação assinada com base nas credenciais fornecidas no corpo do script.

Para usar oci-curl para chamar uma função, você deve fornecer as credenciais de um usuário do Oracle Cloud Infrastructure que tenha recebido acesso a recursos na mesma tenancy e pertencentes ao mesmo compartimento da função.

Geralmente, você deseja chamar uma função como desenvolvedor de funções que está configurado para seu ambiente de desenvolvimento. As instruções abaixo pressupõem que esse é o caso.

  1. Acesse seu ambiente de desenvolvimento.
  2. Crie uma cópia do arquivo de script oci-curl no seu ambiente de desenvolvimento e adicione suas credenciais ao arquivo da seguinte forma:
    1. Em um browser, navegue até https://docs.cloud.oracle.com/iaas/Content/Resources/Assets/signing_sample_bash.txt para ver o código oci-curl como texto bruto.
    2. Selecione todo o texto e copie-o.
    3. Em um editor de texto, abra um arquivo novo em um local conveniente.

      Por exemplo, em uma janela de terminal, você pode criar um novo subdiretório no diretório home e abrir um novo arquivo nesse diretório informando:

      $ cd ~
      
      $ mkdir oci-curl
      
      $ vim ~/oci-curl/oci-curl.sh

      O nome e a localização do novo arquivo dependem de você, mas as instruções a seguir assumem ~/oci-curl/oci-curl.sh.

    4. Cole o código de script oci-curl copiado anteriormente no novo arquivo.
    5. Salve o arquivo, mas deixe-o aberto para que você possa adicionar suas credenciais.
  3. Substitua as credenciais de amostra no arquivo oci-curl.sh pelas da conta do usuário que você deseja chamar funções:
    local tenancyId="<tenancy_id>";
    local authUserId="<user_id>";
    local keyFingerprint="<public_fingerprint>";
    local privateKeyPath="<private_key_path>";

    Em que:

    • <tenancy_id> é o OCID da tenancy na qual a função foi implantada.
    • <user_id> é o OCID da conta do usuário que você deseja executar a função. A conta do usuário deve ter acesso a recursos na mesma tenancy e pertencer ao mesmo compartimento da função.
    • <public_fingerprint> é a impressão digital da chave pública do usuário carregada no Oracle Cloud Infrastructure.
    • <private_key_path> é o caminho completo para o arquivo de chave privada que está emparelhado com a chave pública para a qual você forneceu a impressão digital. Por exemplo:
      local privateKeyPath="/Users/johndoe/.oci/john_api_key_private.pem";
  4. Salve e feche o arquivo oci-curl.sh.

Instalar a CLI (Interface de Linha de Comandos) do Fn Project

Antes de usar o Oracle Functions, a CLI (Interface de Linha de Comandos) do Fn Project deve ser instalada no seu ambiente de desenvolvimento.

Este procedimento usa curl para instalar a CLI em uma instância do Linux. As instruções para outros sistemas operacionais são fornecidas no arquivo readme do Projeto Fn no GitHub.

  1. Faça login no seu ambiente de desenvolvimento como desenvolvedor de funções.
  2. Use o seguinte comando para recuperar e executar o script de instalação:
    $ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
    
    

    Se for solicitada uma senha, insira a senha do superusuário.

  3. Em uma janela do terminal, confirme se a CLI foi instalada informando:
    $ fn version

    Se a CLI tiver sido instalada corretamente, a versão será exibida.

Criar um Contexto de Interface de Linha de Comando Fn

Quando a CLI (Interface de Linha de Comando) do Fn Project é instalada inicialmente, ela é configurada para desenvolvimento local. Para configurar a CLI do Fn Project para estabelecer conexão com sua tenancy do Oracle Cloud Infrastructure, você precisa criar um novo contexto.

O contexto especifica pontos finais do Oracle Functions, o OCID do compartimento ao qual as funções implantadas pertencerão e o endereço do registro do Docker ao qual as imagens serão enviadas e extraídas. Você pode definir vários contextos, cada um armazenado em um arquivo de contexto diferente no formato .yaml.

  1. Efetue log-in no seu ambiente de desenvolvimento como desenvolvedor de funções.
  2. Em uma janela de terminal, crie o novo contexto de CLI do Fn Project para o Oracle Cloud Infrastructure:
    $ fn create context <my-context> --provider oracle

    onde <my-context> é um nome que você escolhe.

  3. Especifique se a CLI do Projeto Fn deve usar o novo contexto:
    $ fn use context <my-context>

    em que <my-context> é o nome do contexto especificado.

  4. Especifique o nome do perfil de interface de linha de comando a ser usado:
    $ fn update context oracle.profile <profile-name>
  5. Especifique o OCID do compartimento no qual as funções implantadas serão implantadas:
    $ fn update context oracle.compartment-id <compartment-ocid>
  6. Especifique o ponto final a ser usado ao chamar a API:
    $ fn update context api-url <api-endpoint>
    Onde <api-endpoint> é um dos pontos finais no formato:
    https://functions.<region-identifier>.oci.oraclecloud.com
    Onde <region-identifier> é o identificador da região do Oracle Cloud Infrastructure na qual você criará e implantará funções. Por exemplo:
    us-phoenix-1
  7. Configure o novo contexto com o endereço do registro do Docker que você deseja usar com o Oracle Functions:
    $ fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name>
    Em que:
    • <region-key> é a chave da região do Oracle Cloud Infrastructure Registry. Por exemplo, phx para Phoenix.

      A Oracle recomenda que o registro do Docker especificado esteja na mesma região da sub-rede em que você pretende executar funções.

    • <tenancy-namespace> é a string de namespace Oracle Cloud Infrastructure Object Storage gerada automaticamente da tenancy na qual os repositórios serão criados (conforme mostrado na página Informações da Tenancy).
    • <repo-name> é um nome de repositório para pré-pendência dos nomes de funções que você implanta.

    Por exemplo:

    $ fn update context registry phx.ocir.io/ansh81vru1zp/my-repo

Criar um Token de Autenticação

Para implantar funções no Oracle Cloud Infrastructure, você deve criar um token de autenticação a ser usado como senha ao fazer sign-in do Docker no Oracle Cloud Infrastructure Registry.

  1. Acesse a console do Oracle Cloud Infrastructure, clique no ícone Usuário e selecione Definições do Usuário.
  2. Para criar um novo token de autenticação, clique em Tokens de Autenticação na seção Recursos e clique em Gerar Token.
  3. Forneça uma descrição para o Token de Autenticação e clique em Gerar Token. Copie o token quando ele for exibido.
  4. Clique no link Copiar e armazene as informações do token em um local seguro porque, ao fechar a caixa de diálogo, você não poderá ver o token na console novamente.
  5. Clique em Fechar.

Acessar o Oracle Cloud Infrastructure Registry

Para poder usar o Oracle Functions, você deve acessar o Docker no registro do Docker no qual você armazenará suas funções como imagens do Docker. Este é o registro Docker especificado anteriormente no contexto da CLI (Interface de Linha de Comando) do Fn Project.

Para poder acessar o registro, você deve primeiro ter feito o seguinte:
  • Instalado e iniciado o Docker no ambiente de desenvolvimento
  • Criou um contexto Oracle Cloud Infrastructure para a CLI (Interface de Linha de Comandos) Fn
  • Criou um token de autenticação do Oracle Cloud Infrastructure para o usuário

Você pode armazenar funções em repositórios públicos e privados no Oracle Cloud Infrastructure Registry, um registro gerenciado pela Oracle criado sobre o Oracle Cloud Infrastructure.

Para concluir as etapas abaixo, você deve fornecer o namespace da tenancy para o Oracle Cloud Infrastructure Object Storage, o nome do usuário e o token de autenticação do usuário.

Para acessar o Docker no Oracle Cloud Infrastructure Registry:

  1. Acesse seu ambiente de desenvolvimento como desenvolvedor de funções.
  2. Em uma janela de terminal, acesse o Oracle Cloud Infrastructure Registry:
    $ docker login <region-key>.ocir.io

    Onde <region-key> é a chave da região do Oracle Cloud Infrastructure Registry especificada no contexto da CLI do Fn Project. Por exemplo, phx para Phoenix.

  3. Quando solicitado, informe o Nome de Usuário do usuário que criará e implantará funções:
    <tenancy-namespace>/<username>
    Em que:
    • <tenancy-namespace> é a string de namespace Oracle Cloud Infrastructure Object Storage gerada automaticamente da tenancy na qual os repositórios serão criados (conforme mostrado na página Informações da Tenancy).
    • <username> é o usuário que criará e implantará funções.
    Se sua tenancy estiver federada com o Oracle Identity Cloud Service, use o formato:
    <tenancy-namespace>/oracleidentitycloudservice/<username>
  4. Quando for solicitada uma Senha, informe o token de autenticação do Oracle Cloud Infrastructure do usuário.