Criando um Contexto da CLI do Fn Project para Conexão com o Oracle Cloud Infrastructure
Descubra como criar um contexto da CLI do Fn Project para estabelecer conexão com o Oracle Cloud Infrastructure para uso com o OCI Functions.
Antes de usar o OCI Functions, você deve configurar a CLI do Fn Project para estabelecer conexão com a tenancy do Oracle Cloud Infrastructure.
Quando a CLI do Fn Project é instalada inicialmente, ela é configurada para um 'contexto' de desenvolvimento local. Para configurar a CLI do Fn Project para conexão com a tenancy do Oracle Cloud Infrastructure, você tem de criar um novo contexto. O contexto especifica pontos finais do OCI Functions, o OCID do compartimento ao qual as funções implantadas pertencerão e o endereço do registro Docker ao qual enviar e extrair imagens.
Você pode definir vários contextos, cada um armazenado em um arquivo de contexto distinto no formato .yaml. Por padrão, os arquivos de contexto individuais são armazenados no diretório ~/.fn/contexts
. O arquivo ~/.fn/config.yaml
especifica qual arquivo de contexto o Fn Project utiliza.
Para criar um novo contexto, você pode criar um novo arquivo de contexto manualmente e editar o arquivo ~/.fn/config.yaml
manualmente para apontar para esse arquivo. Como alternativa, você pode usar a CLI do Fn Project para criar interativamente o novo arquivo de contexto e instruir a CLI do Fn Project para começar a usar esse arquivo, conforme descrito a seguir.
Se você estiver usando o Cloud Shell como seu ambiente de desenvolvimento, dois contextos da CLI do Fn Project já foram criados para você (um contexto padrão e um contexto para a região atual). Para obter mais informações, consulte o OCI Functions on Cloud Shell QuickStart Guide. Você simplesmente precisa copiar e colar comandos da página Conceitos Básicos na janela do Cloud Shell:
- instruir a CLI do Fn Project a usar o contexto da região atual
- para fornecer o OCID do compartimento que possuirá funções implantadas
- para fornecer o endereço do Oracle Cloud Infrastructure Registry que você deseja usar com o OCI Functions
As instruções neste tópico presumem que:
- você não está usando o Cloud Shell como seu ambiente de desenvolvimento
- você está usando Linux
- você já concluiu as etapas em Instalando a CLI do Fn Project
Para criar um novo arquivo de contexto usando a CLI do Fn Project:
-
Acesse o ambiente de desenvolvimento como desenvolvedor de funções.
-
Em uma janela de terminal, crie o novo contexto da CLI do Fn Project para o Oracle Cloud Infrastructure informando:
fn create context <my-context> --provider oracle
em que <my-context> é o nome de sua escolha. Por exemplo:
fn create context johns-oci-context --provider oracle
Observe que você especifica
--provider oracle
para ativar a autenticação e a autorização usando a assinatura de solicitação do Oracle Cloud Infrastructure, chaves privadas, grupos de usuários e políticas que concedem permissões a esses grupos de usuários. -
Especifique se a CLI do Fn Project deve usar o novo contexto informando:
fn use context <my-context>
em que <my-context> é o nome que você especificou na etapa anterior. Por exemplo:
fn use context johns-oci-context
-
Configure o novo contexto com o OCID do compartimento cujas funções implantadas você deseja possuir (você pode ter criado um novo compartimento especificamente para este propósito; consulte Criando Compartimentos para Recursos de Rede Próprios e Recursos do Serviço OCI Functions na Tenancy, se eles ainda não existirem) informando:
fn update context oracle.compartment-id <compartment-ocid>
Por exemplo:
fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
-
Configure o novo contexto com o ponto final api-url a ser usado ao chamar a API informando:
fn update context api-url <api-endpoint>
em que
<api-endpoint>
é um dos pontos finais na lista de pontos finais do serviço Functions na API do Serviço Functions, no formatohttps://functions.<region-identifier>.oci.oraclecloud.com
. O<region-identifier>
em<api-endpoint>
é o identificador da região do Oracle Cloud Infrastructure na qual você estará criando e implantando funções. Por exemplo,us-phoenix-1
.Por exemplo:
fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
-
Configure o novo contexto com o endereço do registro do Docker (por exemplo, o Oracle Cloud Infrastructure Registry) que você deseja usar com o OCI Functions informando:
fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name-prefix>
em que:
-
<region-key>
é a chave da região do Oracle Cloud Infrastructure Registry. Por exemplo,phx
para Phoenix. Consulte Disponibilidade por Região.Recomendamos que o registro do Docker especificado esteja na mesma região que a sub-rede na qual você pretende que as funções sejam executadas.
-
<tenancy-namespace>
é a string de namespace do serviço Object Storage gerada automaticamente da tenancy para criar repositórios (conforme mostrado na página Informações da Tenancy). Por exemplo, o namespace da tenancyacme-dev
pode seransh81vru1zp
. Observe que, para algumas definições mais antigas, a string de namespace pode ser igual ao nome da tenancy, tudo em letra minúscula (por exemplo,acme-dev
). <repo-name-prefix>
é (opcionalmente) um prefixo de nome de repositório para pré-anexar aos nomes das funções que você implanta, para especificar os nomes dos repositórios aos quais enviar imagens de função. O uso de um prefixo de nome de repositório pode facilitar a organização e o controle do acesso a repositórios no registro. Consulte Observações sobre nomes de repositório e prefixos de nome de repositório.
Por exemplo:
fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
-
-
(Opcional) Configure o novo contexto com o OCID do compartimento para repositórios de/para os quais você deseja que o OCI Functions envie e extraia imagens de função digitando:
fn update context oracle.image-compartment-id <compartment-ocid>
Por exemplo:
fn update context oracle.image-compartment-id ocid1.compartment.oc1..aaaaaaaaquqe______z2q
Se você não especificar um valor para
oracle.image-compartment-id
, o OCI Functions enviará e extrairá imagens de/para repositórios no compartimento raiz. Em ambos os casos, deve existir uma instrução de política adequada para permitir que você gerencie repositórios no compartimento (o compartimento especificado pororacle.image-compartment-id
ou o compartimento raiz). Consulte Instruções de Política para Fornecer aos Usuários do Serviço OCI Functions Acesso aos Repositórios do Oracle Cloud Infrastructure Registry.O OCI Functions constrói o nome do repositório para uma imagem de função pré-anexando o prefixo do nome do repositório ao nome da função. Os nomes de repositório são exclusivos em todos os compartimentos de toda a tenancy. Observe que o OCI Functions se comporta da seguinte forma com relação a compartimentos e
oracle.image-compartment-id
ao enviar uma imagem para um repositório nomeado:- Se já existir um repositório com esse nome no compartimento especificado por
oracle.image-compartment-id
, o OCI Functions enviará com sucesso a imagem para esse repositório. - Se um repositório com esse nome não existir em nenhum compartimento (incluindo no compartimento raiz) na tenancy, o OCI Functions criará um novo repositório com esse nome no compartimento especificado por
oracle.image-compartment-id
e enviará com sucesso a imagem para ele. - Se já existir um repositório com esse nome na tenancy, mas em outro compartimento especificado por
oracle.image-compartment-id
, o OCI Functions emitirá um erro. Para que o OCI Functions envie a imagem com sucesso, definaoracle.image-compartment-id
como o OCID do compartimento do repositório existente ou especifique outro nome de repositório (renomeando a função ou especificando um prefixo de nome de repositório alternativo).
- Se já existir um repositório com esse nome no compartimento especificado por
-
(Opcional) Verifique o contexto da CLI do Fn Project que você criou exibindo o arquivo de contexto. Por exemplo, informando:
more ~/.fn/contexts/johns-oci-context.yaml
O arquivo de contexto contém:
api-url: https://functions.us-phoenix-1.oci.oraclecloud.com provider: oracle registry: phx.ocir.io/ansh81vru1zp/acme-repo oracle.image-compartment-id: <compartment-ocid>
Quando você concluir as etapas deste tópico, vá para Definindo o Contexto da CLI do Project Fn Usando o Parâmetro oracle.profile.
Observações sobre nomes de repositório e prefixos de nome de repositório
Ao implantar uma função, a imagem da função é enviada para um repositório no registro especificado pela definição registry:
no contexto da CLI do Fn Project. O nome do repositório é o mesmo que o nome da função (ou seja, <function-name>
) ou o nome da função com um prefixo de nome de repositório pré-anexado a ela (ou seja, <repo-name-prefix>/<function-name>
).
Ao implantar uma função, observe o seguinte. Se um repositório chamado <function-name>
(ou <repo-name-prefix>/<function-name>
se você tiver especificado um <repo-name-prefix>
) ainda não existir no registro:
- Se a propriedade Criar repositório no primeiro push no compartimento raiz do registro for definida como verdadeira, um novo repositório privado será criado no compartimento raiz
- Se a propriedade Criar repositório no primeiro envio no compartimento raiz do registro for definida como falsa, não será possível criar um novo repositório e a tentativa de envio da imagem da função falhará.
Se a propriedade Criar repositório no primeiro push no compartimento raiz do registro estiver definida como falsa e um repositório adequado ainda não existir, execute um dos procedimentos a seguir antes de implantar uma função:
- Crie um novo repositório com o mesmo nome da função e não especifique um
<repo-name-prefix>
no contexto da CLI do Fn Project. Por exemplo, se a função for chamadahello-world
, crie um novo repositório chamadohello-world
. - Crie uma função com o mesmo nome de um repositório existente e não especifique um
<repo-name-prefix>
no contexto da CLI do Fn Project. Por exemplo, se o repositório existente for chamadohello-galaxy
, nomeie a nova funçãohello-galaxy
. - Se você quiser usar um prefixo de nome de repositório para organizar e controlar o acesso aos repositórios, especifique um
<repo-name-prefix>
no contexto da CLI do Fn Project e também crie um repositório com um nome que inclua o prefixo do nome do repositório e o nome da função. Por exemplo, para armazenar imagens de uma função chamadahello-world
em um repositório chamadoacme-repo/hello-world
, especifiquephx.ocir.io/ansh81vru1zp/acme-repo
no contexto da CLI do Fn Project e também crie um repositório chamadoacme-repo/hello-world
.