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 Funciones de OCI, 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 Funciones de OCI, 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 de funciones de OCI en Cloud Shell QuickStart. 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 que será propietario de las funciones desplegadas
  • proporcionar la dirección de Oracle Cloud Infrastructure Registry que desea utilizar con Funciones de OCI

En las instrucciones de este tema se supone que:

Para crear un nuevo archivo de contexto con la CLI de Fn Project:

  1. Conéctese al entorno de desarrollo como desarrollador de funciones.

  2. 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

    Note that you specify --provider oracle to enable authentication and authorization using Oracle Cloud Infrastructure request signing, private keys, user groups, and policies that grant permissions to those user groups.

  3. 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
  4. Configure el nuevo contexto con el OCID del compartimento que desea propietario de las funciones desplegadas (puede 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 funciones de OCI en el arrendamiento, si aún no existen). Introduzca:

    fn update context oracle.compartment-id <compartment-ocid>

    Por ejemplo:

    fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
  5. 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 formato https://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. us-phoenix-1.

    Por ejemplo:

    fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
  6. Configure el nuevo contexto con la dirección del registro de Docker (por ejemplo, Oracle Cloud Infrastructure Registry) que desea utilizar con Funciones de OCI mediante la introducción de:

    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.

      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 arrendamiento acme-dev puede ser ansh81vru1zp. 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 función. 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 nombres de repositorio.

    Por ejemplo:

    fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
  7. (Opcional) Configure el nuevo contexto con el OCID del compartimento para los repositorios en los que desea que Funciones de OCI 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, Funciones de OCI transfiere y extrae imágenes de 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 por oracle.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.

    Funciones de OCI 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 las funciones de OCI se comportan de la siguiente manera en relación con 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, Funciones de OCI transfiere correctamente la imagen a ese repositorio.
    • Si no existe un repositorio con ese nombre en ningún compartimento (incluido en el compartimento raíz) del arrendamiento, Funciones de OCI crea un nuevo repositorio con ese nombre en el compartimento especificado por oracle.image-compartment-id y le envía 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, Funciones de OCI emite un error. Para que las funciones de OCI transfieran correctamente la imagen, debe definir oracle.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).
  8. (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 haya completado los pasos de este tema, vaya a Definir el contexto de la CLI de Fn Project con el parámetro oracle.profile.

Notas sobre nombres de repositorio y prefijos de nombre de repositorio

Al desplegar una función, la imagen de función se transfiere a un repositorio del registro especificado por la configuración 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 <repo-name-prefix>) no existe ya en el registro:

  • Si la propiedad Crear repositorio al transferir primero el compartimento raíz del registro está definida en true, se crea un nuevo repositorio privado en el compartimento raíz.
  • Si la propiedad Crear repositorio al insertar primero el compartimento raíz del registro está definida en false, no se puede crear un nuevo repositorio y el intento de transferir la imagen de función falla.

Si la propiedad Crear repositorio al insertar primero el compartimento raíz del registro está definida 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 denomina hello-world, cree un nuevo repositorio denominado hello-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 denomina hello-galaxy, asigne a la nueva función el nombre hello-galaxy.
  • Si desea utilizar un prefijo de nombre de repositorio para organizar y controlar el acceso a los repositorios, especifique un <repo-name-prefix> en el contexto de la CLI de Fn Project y cree también un repositorio con un nombre que incluya el prefijo de nombre de repositorio y el nombre de función. Por ejemplo, para almacenar imágenes para una función denominada hello-world en un repositorio denominado acme-repo/hello-world, especifique phx.ocir.io/ansh81vru1zp/acme-repo en el contexto de la CLI de Fn Project y cree también un repositorio denominado acme-repo/hello-world.