Conceptos avanzados

En esta sección se tratan los conceptos de SDK de PowerShell.

En esta sección se tratan los conceptos de SDK de PowerShell.

Gestión de preferencias de sesión

Los módulos OCI para PowerShell soportan el uso de variables de entorno en una sesión de PowerShell para especificar valores de algunos parámetros comunes opcionales. Estas variables de entorno se pueden configurar directamente en la sesión de PowerShell o mediante el cmdlet Set-OCIClientSession. Los valores asignados a estas variables de entorno se utilizan para realizar llamadas de API solo en la sesión de PowerShell en la que se han definido.

Definición de variables de entorno directamente desde PowerShell

Las siguientes variables de entorno se pueden utilizar para especificar valores de algunos parámetros que utilizan los módulos OCI para PowerShell:
Parámetro de cmdlet Nombre de variable de entorno Nota
Region OCI_PS_REGION Si no se especifica un valor, se utiliza el valor de región del perfil preferido por el usuario.
Profile OCI_PS_PROFILE Si no se especifica un valor, se utiliza el perfil DEFAULT.
ConfigFile OCI_PS_CONFIG Si no se especifica un valor, se utilizará el archivo de configuración en ~/.oci/config.
NoRetry OCI_PS_NORETRY Si no se especifica un valor, se utiliza la estrategia de reintento por defecto para intentar llevar a cabo los reintentos.
TimeOutInMillis OCI_PS_TIMEOUT Si no se especifica un valor, se utiliza el valor por defecto de 100 000 milisegundos (100 segundos).
AuthType OCI_PS_AUTH Si no se especifica un valor, se utiliza la clave de API definida en el archivo de configuración.

Por ejemplo, para definir la región:

PS /> $Env:OCI_PS_REGION="us-phoenix-1"

Definición de variables de entorno mediante cmdlets

Puede utilizar los cmdlets Set-OCIClientSession y Get-OCIClientSession para definir y recuperar las variables de entorno de preferencia de sesión.

Set-OCIClientSession

Este cmdlet define las preferencias de archivo Region, Profile y Config para la sesión de PowerShell a través de las variables de entorno que se han mostrado anteriormente.

Nota

Importe OCI.PSModules.Common antes de ejecutar el siguiente ejemplo.
PS /> Set-OCIClientSession -RegionId "us-ashburn-1" -Profile "Test" -Config "~/.oci/testconfig"
 
RegionId     Profile Config
--------     ------- ------
us-ashburn-1 Test    ~/.oci/testconfig

Para eliminar una variable de entorno de preferencias de sesión, ejecute el cmdlet Clear-OCIClientSession con los parámetros adecuados.

Get-OCIClientSession

El cmdlet Get-OCIClientSession en el módulo común se utiliza para recuperar los valores de preferencia de sesión definidos para los parámetros comunes de la sesión de PowerShell actual.

PS /> Get-OCIClientSession                                                                    
 
RegionId     Profile Config
--------     ------- ------
us-ashburn-1 Test

Prioridad de parámetros

Al evaluar los parámetros, los módulos OCI para PowerShell siguen este orden de prioridad:

  1. Valor especificado en el parámetro cmdlet.
  2. Valor especificado en las preferencias de sesión.
  3. Valor especificado en el perfil seleccionado por el usuario del archivo de configuración de OCI ubicado en ~/.oci/config.
Nota

Los módulos OCI para PowerShell utilizan el perfil DEFAULT como perfil de reserva. Cualquier valor que no se haya definido explícitamente para un perfil determinado se hereda del perfil DEFAULT.

Almacén de historial

Por defecto, los cmdlets de OCI muestran el cuerpo de respuesta de la operación de API de REST subyacente. El almacén de historial proporciona a los usuarios una variable PowerShell que se puede utilizar para examinar las llamadas de cmdlet de OCI y sus respuestas completas de API de los servicios de OCI.
Nota

Cada sesión de PowerShell tiene su propio almacén de historial.

Puede utilizar el almacén de historial para:

  • Usar los valores de objeto de respuesta de cmdlet anteriores en el siguiente cmdlet.
  • Inspeccionar la respuesta completa de la API, incluidas las cabeceras de respuesta; por ejemplo, el uso de etiquetas electrónicas para la simultaneidad optimista o la cabecera OpcNextPage para la paginación.
  • Examinar secuencias de llamada de cmdlet con fines de diagnóstico.

El almacén de historial se encapsula como un objeto Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistoryStore en una variable de PowerShell denominada $OCICmdletHistory.

Para obtener más información, consulte el ejemplo de almacén de historial en GitHub.

Propiedades del almacén de historial

En esta sección se explican las propiedades que tiene el objeto del almacén de historial almacenado en $OCICmdletHistory.

   TypeName: Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistoryStore
                
                Name         MemberType Definition
                ----         ---------- ----------
                Entries      Property   Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory[] Entries {get;}
                LastResponse Property   psobject LastResponse {get;}
                Size         Property   int Size {get;}

Size

Indica el número máximo de comandos que se pueden guardar en el almacén de historial. El valor por defecto es 20. Los valores válidos son de 1 a 100000 (incluidos). Para modificar el tamaño del almacén de historial, utilice Set-OCICmdletHistory.

Nota

Recomendamos mantener el tamaño del historial al mínimo para limitar el uso de memoria.

Entries

Recopilación de objetos Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory que permite el acceso indexado al historial almacenado.

El objeto Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory tiene las siguientes propiedades:

Nombre Tipo Descripción
StartTime System.DateTime Hora de inicio de la ejecución de cmdlet.
EndTime System.DateTime Hora de finalización de ejecución de cmdlet.
Comando System.Management.Automation.InvocationInfo Describe cómo y dónde se ha invocado este comando.
Respuesta System.Management.Automation.PSObject Objeto de salida devuelto por cmdlet.

LastResponse

Objeto System.Management.Automation.PSObject que encapsula la última respuesta de cmdlet de OCI en una sesión de PowerShell.

Almacén de historial de cmdlets

El módulo Oci.PSModules.Common proporciona los siguientes cmdlets para trabajar con el almacén de historial. Consulte el Ejemplo de GitHub.

Get-OCICmdletHistory

Obtiene el historial de cmdlet almacenado en la sesión actual de PowerShell.

Set-OCICmdletHistory

Define las propiedades del almacén de historial.

Clear-OCICmdletHistory

Suprime el historial de cmdlet almacenado en la sesión actual de PowerShell.

Paginación

Los cmdlets de OCI que llaman a operaciones de API de listas tienen la capacidad de paginar resultados, lo que les permite recuperar los resultados disponibles en lotes (automáticamente después de los tokens de paginación) hasta que no haya más registros disponibles.

Nota

Los ejemplos del tema llaman a la operación ListImages en el servicio Compute. Asegúrese de importar OCI.PSModules.Core antes de probar los ejemplos de esta sección.

Obtención de resultados de primera página

El comportamiento por defecto de un cmdlet que soporta la paginación es obtener solo la primera página de resultados cuando se llama sin el parámetro -Page especificado.

Por ejemplo, para obtener la primera página de imágenes de Compute disponibles, llame a Get-OCIComputeImagesList con el ID de compartimento:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId | Measure-Object
 
Count             : 100

El ejemplo anterior define implícitamente el parámetro -Page en NULL.

Nota

El servicio define el número máximo de resultados por página y se puede encontrar en la referencia de API de servicio.

Limitación de resultados

El parámetro -Limit especifica el número máximo de resultados devueltos por página.

En este ejemplo, se define el número máximo de resultados devueltos por página en 5:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Limit 5 | Measure-Object                                       
 
Count             : 5

Obtención de resultados de la página siguiente

El parámetro -Page se utiliza para obtener la siguiente página de resultados transfiriendo el token de paginación de la cabecera de respuesta 'opc-next-page` que contiene la respuesta cmdlet anterior.

Nota

Puede utilizar el almacén de historial para obtener la respuesta cmdlet anterior.

En este ejemplo, se muestra cómo recuperar los resultados restantes de una llamada paginada anterior transfiriendo la propiedad $OCICmdletHistory.LastResponse.OpcNextPage del almacén de historial como argumento al parámetro -Page:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Page $OCICmdletHistory.LastResponse.OpcNextPage | Measure-Object
 
Count             : 100

Obtención de todos los resultados

Los cmdlets de OCI que soportan la paginación pueden paginar y recuperar automáticamente los resultados de todas las páginas disponibles. Deje que el cmdlet realice la paginación transfiriendo el parámetro de conmutador -All al ejecutar el cmdlet.

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -All | Measure-Object                                            
 
Count             : 293

Esperas y llamadas asíncronas

La mayoría de las instancias de Oracle Cloud Infrastructure, como las instancias informáticas, tienen ciclos de vida. En muchos casos, desea que el comando espere hasta que un recurso o una solicitud de trabajo lleguen a un estado específico, o se exceda el timeout, antes de realizar otras acciones. Puede sondear un recurso para determinar su estado.

Los módulos OCI para PowerShell ofrecen parámetros de espera que permiten que el cmdlet espere hasta que un recurso alcance el estado deseado. Se puede llamar a un cmdlet con parámetros de espera de forma bloqueada para esperar hasta que se alcance uno de los estados deseados o se supere un timeout. Las esperas sintetizan la lógica de sondeo que de lo contrario tendría que agregar antes de realizar más acciones en un recurso o una solicitud de trabajo.

Por ejemplo, al llamar a LaunchInstance en el servicio de cálculo, la cabecera de respuesta contiene una work-request-id. Los módulos OCI para PowerShell utilizan este ID al especificar el parámetro -WaitForStatus, lo que hace que el script espere hasta que la solicitud de trabajo se realice correctamente antes de continuar.

Por ejemplo:
#Create a new compute instance and wait for the instance work request to succeed or fail, 
#polling every 60 seconds and attempting 20 times max
$ComputeInstance = New-OCIComputeInstance -LaunchInstanceDetails $LaunchDetails -WaitForStatus Succeeded,Failed -MaxWaitAttempts 20 -WaitIntervalSeconds 60

Parámetros de espera

En esta sección se describen los parámetros utilizados para las llamadas asíncronas.

WaitForStatus

Especifique este parámetro para realizar la acción y, a continuación, espere hasta que el recurso alcance el estado de ciclo de vida deseado. Se pueden especificar varios estados y se devolvería cuando el recurso alcanzase uno de los estados deseados.

WaitIntervalSeconds

Compruebe WaitIntervalSeconds para ver si el recurso ha alcanzado uno de los estados deseados. El valor por defecto para este parámetro es 30 segundos.

MaxWaitAttempts

Número máximo de intentos que se realizarán hasta que el recurso alcance uno de los estados deseados. El valor por defecto para este parámetro es 3 intentos.

Nota

Actualmente, los cmdlets de OCI no aceptan el tiempo máximo de espera para cmdlets que soportan esperas. Puede resolver esta limitación controlando los valores de MaxWaitAttempts y/o WaitIntervalSeconds.

Cuando termina correctamente, el cmdlet devuelve el objeto de respuesta original recibido. En caso que haya un error como que el recurso no alcance el estado deseado dentro de los límites indicados, se devolvería una excepción con un mensaje de error.

Entradas y salidas de flujo

Algunos cmdlets de OCI interactúan con API que aceptan o devuelven objetos de tipo de flujo (por ejemplo, la operación InvokeFunctions en el servicio Funciones). Estos cmdlets de OCI aceptan parámetros que pueden tomar una ruta de acceso de archivo y convertir implícitamente archivos a flujos y viceversa.
Nota

Puede transferir un parámetro de flujo o el parámetro de archivo equivalente, pero no ambos.
El parámetro de entrada de archivo lleva el nombre del parámetro de entrada de flujo correspondiente, y el parámetro de salida de archivo se denomina OutputFile.
Nota

Para obtener un ejemplo, consulte el texto de ayuda para el cmdlet Invoke-OCIFunctionsInvokeFunction en OCI.PSModules.Functions.

Este ejemplo de GitHub muestra cómo trabajar con flujos.

Registro

Para facilitar la resolución de problemas, los módulos OCI para PowerShell soportan el registro de mensajes de nivel debug y verbose en la consola, además de mensajes de error. Esta función se ha integrado con los parámetros estándar Debug y Verbose de PowerShell.

Transfiera los parámetros -Debug o -Verbose en la llamada de cmdlet para ver los mensajes log en la consola.

Por ejemplo:

PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Limit 1 -Verbose
 
#More Verbose
PS /> Get-OCIComputeImagesList -CompartmentId $Env:CompartmentId -Limit 1 -Debug

Autenticación con principales de instancia

Principales de instancia es una función del servicio de IAM que permite que las instancias sean actores autorizados (o principales) que puedan realizar acciones en los recursos de servicio. Cada instancia informática tiene su propia identidad y se autentica con los certificados que se le agregan. Estos certificados se crean, se asignan a instancias y se rotan automáticamente, de modo que usted no necesita distribuir credenciales a sus hosts y rotarlos.

Nota

Para obtener más información sobre los principales de instancia, consulte Llamada a servicios desde una instancia.

Para activar la autenticación de principal de instancia desde los Cmdlets de OCI, autorice a la instancia para realizar llamadas y defina el parámetro AuthType. Por ejemplo:

PS /> Get-OCIIdentityRegionsList -AuthType InstancePrincipal

Puntos finales dedicados

Los puntos finales dedicados son las plantillas de punto final definidas por el servicio para un dominio específico en el nivel de cliente. Los módulos de OCI para PowerShell permiten activar el uso de esta función de plantillas de punto final específicas del dominio tanto en el nivel de aplicación como en el nivel de cliente. Esta función está desactivada por defecto.
Nota

El valor definido en el nivel de cliente tiene prioridad sobre el valor definido en el nivel de aplicación.

Activación de plantillas de punto final específicas de dominio en el nivel de aplicación:

Para activar la función de plantillas de punto final específicas del dominio en el nivel de aplicación, defina la variable de entorno OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED en true.
Nota

El valor booleano no distingue entre mayúsculas y minúsculas.

Activación de plantillas de punto final específicas del dominio en el nivel de cliente:

Para activar la función de plantillas de punto final específicas del dominio en el nivel de cliente, defina el indicador en el código como se muestra a continuación:
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug

Para ver un ejemplo completo, consulte el ejemplo CreateBucketUsingRealmSpecificEndpoint_ObjectStorage en GitHub.