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.
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:
- Valor especificado en el parámetro cmdlet.
- Valor especificado en las preferencias de sesión.
- Valor especificado en el perfil seleccionado por el usuario del archivo de configuración de OCI ubicado en
~/.oci/config
.
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
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
.
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.
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.
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.
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.
#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.
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
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. Puede transferir un parámetro de flujo o el parámetro de archivo equivalente, pero no ambos.
OutputFile
. 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.
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
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:
OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED
en true
. 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:
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug
Para ver un ejemplo completo, consulte el ejemplo CreateBucketUsingRealmSpecificEndpoint_ObjectStorage en GitHub.