Creación de un contexto de CLI de Fn Project para conectarse a Oracle Cloud Infrastructure
Descubra cómo crear un contexto de la CLI de Fn Project para conectarse a Oracle Cloud Infrastructure y utilizarlo con OCI Functions.
Antes de usar OCI Functions, debe configurar la CLI de Fn Project para conectarse al arrendamiento de Oracle Cloud Infrastructure.
Cuando la CLI de Fn Project se instala inicialmente, se configura para un contexto de desarrollo local. Para configurar la CLI de Fn Project para conectarse a su arrendamiento de Oracle Cloud Infrastructure, debe crear un nuevo contexto. El contexto especifica los puntos finales de OCI Functions, el OCID del compartimento al que pertenecerán las funciones desplegadas, y la dirección del registro de Docker de origen y destino para transferir y extraer imágenes.
Puede definir varios contextos, cada uno almacenado en un archivo de contexto diferente en formato .yaml. De forma predeterminada, los archivos de contexto individuales se almacenan en el directorio ~/.fn/contexts
. El archivo ~/.fn/config.yaml
especifica qué archivo de contexto utiliza Fn Project.
Para crear un nuevo contexto, puede crear un nuevo archivo de contexto manualmente y editar el archivo ~/.fn/config.yaml
manualmente para que haga referencia a ese archivo. De manera alternativa, puede usar la CLI de Fn Project para crear de manera interactiva el nuevo archivo de contexto e indicar a la CLI de Fn Project que empiece a usar ese archivo, como se describe a continuación.
Si utiliza Cloud Shell como entorno de desarrollo, ya se han creado dos contextos de la CLI de Fn Project (un contexto por defecto y un contexto para la región actual). Para obtener más información, consulte la guía QuickStart de OCI Functions on Cloud Shell. Solo tiene que copiar y pegar comandos de la página Introducción en la ventana de Cloud Shell:
- para indicar a la CLI de Fn Project que utilice el contexto para la región actual
- Proporcionar el OCID del compartimento propietario de las funciones desplegadas
- para proporcionar la dirección de Oracle Cloud Infrastructure Registry que desea utilizar con OCI Functions
En las instrucciones de este tema se supone que:
- no utilice Cloud Shell como entorno de desarrollo
- Está utilizando Linux.
- Ya completó los pasos de Installing the Fn Project CLI.
Para crear un nuevo archivo de contexto con la CLI de Fn Project:
-
Conéctese al entorno de desarrollo como desarrollador de funciones.
-
En una ventana de terminal, cree el nuevo contexto de la CLI de Fn Project para Oracle Cloud Infrastructure introduciendo lo siguiente:
fn create context <my-context> --provider oracle
donde <my-context> es el nombre que prefiera. Por ejemplo:
fn create context johns-oci-context --provider oracle
Tenga en cuenta que especifica
--provider oracle
para activar la autenticación y autorización mediante firma de solicitudes, claves privadas, grupos de usuarios y políticas que otorgan permisos a esos grupos de usuarios de Oracle Cloud Infrastructure. -
Para especificar que la CLI de Fn Project debe utilizar el nuevo contexto, introduzca:
fn use context <my-context>
donde <my-context> es el nombre especificado en el paso anterior. Por ejemplo:
fn use context johns-oci-context
-
Configure el nuevo contexto con el OCID del compartimento que desea que posea las funciones desplegadas (pueda que haya creado un nuevo compartimento específicamente para este propósito, consulte Creación de compartimentos para poseer recursos de red y recursos de OCI Functions en el arrendamiento, si aún no existen) introduciendo:
fn update context oracle.compartment-id <compartment-ocid>
Por ejemplo:
fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
-
Configure el nuevo contexto con el punto final api-url que se va a utilizar al llamar a la API; para ello, introduzca:
fn update context api-url <api-endpoint>
donde
<api-endpoint>
es uno de los puntos finales de la lista de puntos finales de Functions en la API de Functions, en el formatohttps://functions.<region-identifier>.oci.oraclecloud.com
.<region-identifier>
en<api-endpoint>
es el identificador de la región de Oracle Cloud Infrastructure en la que creará y desplegará las funciones. Por ejemplo,us-phoenix-1
.Por ejemplo:
fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
-
Para configurar el nuevo contexto con la dirección del registro de Docker (por ejemplo, Oracle Cloud Infrastructure Registry) que desea utilizar con OCI Functions, introduzca:
fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name-prefix>
donde:
-
<region-key>
es la clave de la región de Oracle Cloud Infrastructure Registry. Por ejemplo,phx
para Phoenix. Consulte Disponibilidad por región.Le recomendamos que el registro de Docker que especifique esté en la misma región que la subred en la que desea que se ejecuten las funciones.
-
<tenancy-namespace>
es la cadena de espacio de nombres de Object Storage generada automáticamente del arrendamiento en el que se van a crear repositorios (como se muestra en la página Información de arrendamiento). Por ejemplo, el espacio de nombres del arrendamientoacme-dev
puede seransh81vru1zp
. Tenga en cuenta que para algunos arrendamientos más antiguos, la cadena de espacios de nombres puede ser la misma que el nombre de arrendamiento en letras minúsculas (por ejemplo,acme-dev
). <repo-name-prefix>
es (opcionalmente) un prefijo de nombre de repositorio para anteponer a los nombres de funciones que despliega, para especificar los nombres de repositorios a los que transferir imágenes de funciones. El uso de un prefijo de nombre de repositorio puede facilitar la organización y el control del acceso a los repositorios del registro. Consulte Notas sobre los nombres de repositorio y los prefijos de nombre de repositorio.
Por ejemplo:
fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
-
-
(Opcional) Configure el nuevo contexto con el OCID del compartimento para los repositorios a los que desea que OCI Functions transfiera y extraiga imágenes de función introduciendo:
fn update context oracle.image-compartment-id <compartment-ocid>
Por ejemplo:
fn update context oracle.image-compartment-id ocid1.compartment.oc1..aaaaaaaaquqe______z2q
Si no especifica un valor para
oracle.image-compartment-id
, OCI Functions transfiere y extrae imágenes desde y hacia los repositorios del compartimento raíz. En ambos casos, debe existir una sentencia de política adecuada para permitirle gestionar repositorios en el compartimento (ya sea el compartimento especificado pororacle.image-compartment-id
o el compartimento raíz). Consulte Sentencias de política para proporcionar a los usuarios de OCI Functions acceso a repositorios de Oracle Cloud Infrastructure Registry.OCI Functions construye el nombre del repositorio para una imagen de función anteponiendo el prefijo del nombre del repositorio al nombre de la función. Los nombres de repositorio son únicos en todos los compartimentos de todo el arrendamiento. Tenga en cuenta que OCI Functions se comporta de la siguiente manera con respecto a los compartimentos y
oracle.image-compartment-id
al transferir una imagen a un repositorio con nombre:- Si ya existe un repositorio con ese nombre en el compartimento especificado por
oracle.image-compartment-id
, OCI Functions transfiere correctamente la imagen a ese repositorio. - Si no existe un repositorio con ese nombre en ningún compartimento (incluido el compartimento raíz) del arrendamiento, OCI Functions crea un nuevo repositorio con ese nombre en el compartimento especificado por
oracle.image-compartment-id
y le transfiere correctamente la imagen. - Si ya existe un repositorio con ese nombre en el arrendamiento, pero en un compartimento diferente al especificado por
oracle.image-compartment-id
, OCI Functions emite un error. Para que OCI Functions transfiera correctamente la imagen, debe definiroracle.image-compartment-id
en el OCID del compartimento del repositorio existente o especificar un nombre de repositorio diferente (cambiando el nombre de la función o especificando un prefijo de nombre de repositorio alternativo).
- Si ya existe un repositorio con ese nombre en el compartimento especificado por
-
(Opcional) Verifique el contexto de la CLI de Fn Project que ha creado mediante la visualización del archivo de contexto. Por ejemplo, introduzca:
more ~/.fn/contexts/johns-oci-context.yaml
El archivo de contexto contiene:
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>
Cuando complete los pasos de este tema, vaya a Setting the Context for the Fn Project CLI Using the oracle.profile Parameter.
Notas sobre los nombres de repositorio y los prefijos de nombre de repositorio
Al desplegar una función, la imagen de función se transfiere a un repositorio en el registro especificado por el valor registry:
en el contexto de la CLI de Fn Project. El nombre del repositorio es el mismo que el nombre de la función (es decir, <function-name>
) o el nombre de la función con un prefijo de nombre de repositorio antepuesto (es decir, <repo-name-prefix>/<function-name>
).
Al desplegar una función, tenga en cuenta lo siguiente. Si un repositorio denominado <function-name>
(o <repo-name-prefix>/<function-name>
si ha especificado un <repo-name-prefix>
) no existe ya en el registro:
- Si la propiedad Create repository on first push in root compartment del registro se define en true, se crea un nuevo repositorio privado en el compartimento raíz
- Si la propiedad Create repository on first push in root compartment del registro se define en false, no se puede crear un nuevo repositorio y falla el intento de transferir la imagen de función.
Si la propiedad Create repository on first push in root compartment del registro se define en false y aún no existe un repositorio adecuado, realice una de las siguientes acciones antes de desplegar una función:
- Cree un nuevo repositorio con el mismo nombre que la función y no especifique
<repo-name-prefix>
en el contexto de la CLI de Fn Project. Por ejemplo, si la función se denominahello-world
, cree un nuevo repositorio denominadohello-world
. - Cree una función con el mismo nombre que un repositorio existente y no especifique
<repo-name-prefix>
en el contexto de la CLI de Fn Project. Por ejemplo, si el repositorio existente se denominahello-galaxy
, asigne un nombre a la nueva funciónhello-galaxy
. - Si desea utilizar un prefijo de nombre de repositorio para organizar y controlar el acceso a los repositorios, especifique
<repo-name-prefix>
en el contexto de la CLI de Fn Project y, además, cree un repositorio con un nombre que incluya tanto el prefijo de nombre de repositorio como el nombre de función. Por ejemplo, para almacenar imágenes para una función denominadahello-world
en un repositorio denominadoacme-repo/hello-world
, especifiquephx.ocir.io/ansh81vru1zp/acme-repo
en el contexto de la CLI de Fn Project y también cree un repositorio denominadoacme-repo/hello-world
.