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 utilizar OCI Functions con la CLI de Fn Project, debe configurar la CLI de Fn Project para conectarse a su 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 y el OCID del compartimento al que pertenecerán las funciones desplegadas. En el caso de las funciones basadas en imágenes, el contexto también especifica la dirección del registro de Docker hacia y desde la que 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 funciones basadas en imágenes, 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 ha completado 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 oracledonde <my-context> es el nombre que prefiera. Por ejemplo:
fn create context johns-oci-context --provider oracleTenga en cuenta que especifica
--provider oraclepara 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 del que desea que pose las funciones desplegadas (puede haber creado un nuevo compartimento específicamente para este propósito, consulte Creación de compartimentos para poseer recursos de Red y recursos de funciones de OCI en el arrendamiento, si aún no existen). Para ello, introduzca:
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 - (Opcional) Para las funciones de solo código, si desea que el flujo de desarrollador implícito cargue archivos en Object Storage, configure el contexto con el nombre del cubo y el espacio de nombres de Object Storage introduciendo:
fn update context object_storage_bucket_name <source-bucket-name>fn update context object_storage_namespace <object-storage-namespace>Para obtener más información, consulte Creación implícita de una función de solo código mediante los comandos fn init, fn build y fn deploy.
-
Para funciones basadas en imágenes, configure el nuevo contexto con la dirección del registro deDocker (por ejemplo, Oracle Cloud Infrastructure Registry) que desea utilizar con OCI Functions; para ello, 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,phxpara Phoenix. Consulte Disponibilidad por región.Para las funciones basadas en imágenes, se recomienda 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-devpuede 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 las funciones que despliegue, para especificar los nombres de los 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 nombres de repositorio y prefijos de nombre de repositorio para funciones basadas en imágenes.
Por ejemplo:
fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo -
-
(Opcional) Para las funciones basadas en imágenes, configure el nuevo contexto con el OCID del compartimento para los repositorios hacia y desde los que desea que OCI Functions transfiera y extraiga imágenes de funciones introduciendo:
fn update context oracle.image-compartment-id <compartment-ocid>Por ejemplo:
fn update context oracle.image-compartment-id ocid1.compartment.oc1..aaaaaaaaquqe______z2qPara las funciones basadas en imágenes, si no especifica un valor para
oracle.image-compartment-id, OCI Functions transfiere y extrae imágenes a los repositorios del compartimento raíz y desde ellos. 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-ido el compartimento raíz). Consulte Sentencias de política para proporcionar a los usuarios de OCI Functions acceso a los repositorios de Oracle Cloud Infrastructure Registry para funciones basadas en imágenes.Para las funciones basadas en imágenes, OCI Functions crea 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 en lo que respecta a los compartimentos y
oracle.image-compartment-idal 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-idy 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-iden 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.yamlEl 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 haya completado los pasos de este tema, vaya a Configuración del contexto de la CLI de Fn Project con el parámetro oracle.profile.
Notas sobre los nombres de repositorio y prefijos de nombre de repositorio para funciones basadas en imágenes
Al desplegar una función basada en imágenes, la imagen de función se transfiere a un repositorio del 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 agregado previamente (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-worlden un repositorio denominadoacme-repo/hello-world, especifiquephx.ocir.io/ansh81vru1zp/acme-repoen el contexto de la CLI de Fn Project y también cree un repositorio denominadoacme-repo/hello-world.