Concetti avanzati

In questa sezione vengono descritti i concetti relativi all'SDK PowerShell.

In questa sezione vengono descritti i concetti relativi all'SDK PowerShell.

Gestione delle preferenze della sessione

I moduli OCI per PowerShell supportano l'uso delle variabili di ambiente in una sessione PowerShell per specificare i valori di alcuni parametri comuni facoltativi. Queste variabili di ambiente possono essere configurate direttamente nella sessione PowerShell o utilizzando il cmdlet Set-OCIClientSession. I valori assegnati a queste variabili di ambiente vengono utilizzati per effettuare chiamate API solo nella sessione PowerShell in cui sono impostate.

Impostare le variabili di ambiente direttamente da PowerShell

Le seguenti variabili di ambiente possono essere utilizzate per specificare i valori per alcuni parametri utilizzati dai moduli OCI per PowerShell:
Parametro Cmdlet Nome variabile di ambiente Nota
Region OCI_PS_REGION Se non viene specificato un valore, viene utilizzato il valore dell'area del profilo preferito dall'utente.
Profilo OCI_PS_PROFILE Se non viene specificato alcun valore, viene utilizzato il profilo DEFAULT.
ConfigFile OCI_PS_CONFIG Se non viene specificato un valore, verrà utilizzato il file di configurazione in ~/.oci/config.
NoRetry OCI_PS_NORETRY Se non viene specificato un valore, per tentare di eseguire nuovi tentativi viene utilizzata la strategia di nuovi tentativi predefinita.
TimeOutInMillis OCI_PS_TIMEOUT Se non viene specificato un valore, viene utilizzato il valore predefinito di 100.000 millisecondi (100 secondi).
AuthType OCI_PS_AUTH Se non viene specificato un valore, viene utilizzata la chiave API definita nel file di configurazione.

Ad esempio, per impostare l'area:

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

Imposta variabili di ambiente utilizzando Cmdlet

È possibile utilizzare i cmdlet Set-OCIClientSession e Get-OCIClientSession per impostare e recuperare le variabili di ambiente delle preferenze di sessione.

Set-OCIClientSession

Questo cmdlet imposta le preferenze dei file Region, Profile e Config per la sessione PowerShell tramite le variabili di ambiente mostrate in precedenza.

Nota

Prima di eseguire l'esempio seguente, importare OCI.PSModules.Common.
PS /> Set-OCIClientSession -RegionId "us-ashburn-1" -Profile "Test" -Config "~/.oci/testconfig"
 
RegionId     Profile Config
--------     ------- ------
us-ashburn-1 Test    ~/.oci/testconfig

Per rimuovere una variabile di ambiente delle preferenze di sessione, eseguire il cmdlet Clear-OCIClientSession con i parametri appropriati.

Ottieni-OCIClientSession

Il cmdlet Get-OCIClientSession nel modulo comune viene utilizzato per recuperare i valori delle preferenze di sessione impostati per i parametri comuni dalla sessione PowerShell corrente.

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

Priorità parametro

Nella valutazione dei parametri, i moduli OCI per PowerShell seguono il presente ordine di precedenza:

  1. Il valore specificato nel parametro cmdlet.
  2. Il valore specificato nelle preferenze di sessione.
  3. Valore specificato nel profilo selezionato dall'utente del file di configurazione OCI situato in ~/.oci/config.
Nota

I moduli OCI per PowerShell utilizzano il profilo DEFAULT come profilo di fallback. Qualsiasi valore non definito in modo esplicito per un determinato profilo viene ereditato dal profilo PREDEFINITO.

Archivio storico

Per impostazione predefinita, i Cmdlet OCI generano l'output del corpo della risposta dell'operazione API REST di base. L'area di memorizzazione della cronologia fornisce agli utenti una variabile PowerShell che può essere utilizzata per esaminare i richiami Cmdlet OCI e le relative risposte API complete dai servizi OCI.
Nota

Ogni sessione PowerShell ottiene la propria area di memorizzazione della cronologia.

È possibile utilizzare l'archivio storico per:

  • Utilizzare i valori dell'oggetto di risposta del Cmdlet precedente nel Cmdlet successivo
  • Ispezionare la risposta API completa, incluse le intestazioni delle risposte, ad esempio l'uso di tag elettronici per la concorrenza ottimistica o l'intestazione OpcNextPage per l'impaginazione
  • Esaminare le sequenze di richiamo dei cmdlet a scopo diagnostico

L'area di memorizzazione cronologia è incapsulata come oggetto Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistoryStore in una variabile PowerShell denominata $OCICmdletHistory.

Per ulteriori informazioni, vedere l'esempio Area di memorizzazione cronologia su GitHub.

Proprietà archivio cronologia

Questa sezione spiega le proprietà contenute nell'oggetto dell'area di memorizzazione della cronologia memorizzato in $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;}

Dimensione

Indica il numero massimo di comandi che è possibile salvare nell'area di memorizzazione della cronologia. Il valore predefinito è 20. I valori validi sono compresi tra 1 e 100000 (inclusi). Per modificare la dimensione dell'area di memorizzazione della cronologia, utilizzare Set-OCICmdletHistory.

Nota

Si consiglia di mantenere la dimensione della cronologia al minimo per limitare l'uso della memoria.

Voci

Raccolta di oggetti Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory che consente l'accesso indicizzato alla cronologia memorizzata.

L'oggetto Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory dispone delle proprietà riportate di seguito.

Nome Tipo Descrizione
Ora di inizio System.DateTime Ora di inizio dell'esecuzione del cmdlet.
EndTime System.DateTime Ora di fine esecuzione del cmdlet.
Comando System.Management.Automation.InvocationInfo Descrive come e dove è stato richiamato questo comando.
Risposta System.Management.Automation.PSObject Oggetto di output restituito dal cmdlet.

LastResponse

Un oggetto System.Management.Automation.PSObject che incapsula l'ultima risposta Cmdlet OCI in una sessione PowerShell.

Memorizzazione cronologia

Il modulo Oci.PSModules.Common fornisce i seguenti cmdlet per l'utilizzo dell'area di memorizzazione della cronologia. Vedere l'esempio GitHub.

Ottieni-OCICmdletHistory

Ottiene la cronologia del cmdlet memorizzata nella sessione PowerShell corrente.

Set-OCICmdletHistory

Imposta le proprietà dell'area di memorizzazione della cronologia.

Cancella OCICmdletHistory

Elimina la cronologia del cmdlet memorizzata nella sessione PowerShell corrente.

Impaginazione

I Cmdlet OCI che richiamano le operazioni API elenco hanno la possibilità di impaginare i risultati, consentendo di recuperare i risultati disponibili in batch (seguendo automaticamente i token di impaginazione) fino a quando non saranno disponibili altri record.

Nota

Gli esempi in questo argomento richiamano l'operazione ListImages nel servizio Computazione. Assicurarsi di importare OCI.PSModules.Core prima di provare gli esempi in questa sezione.

Recupera risultati prima pagina

Il funzionamento predefinito di un cmdlet che supporta l'impaginazione è quello di ottenere solo la prima pagina dei risultati quando richiamata senza il parametro -Page specificato.

Ad esempio, per ottenere la prima pagina delle immagini di computazione disponibili, richiamare Get-OCIComputeImagesList con l'ID compartimento:

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

Nell'esempio precedente il parametro -Page viene impostato in modo implicito su NULL.

Nota

Il numero massimo di risultati per pagina è definito dal servizio e può essere trovato nel riferimento all'API del servizio.

Limita risultati

Il parametro -Limit specifica il numero massimo di risultati restituiti per pagina.

In questo esempio viene impostato il numero massimo di risultati restituiti per pagina su 5:

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

Recupera risultati pagina successiva

Il parametro -Page viene utilizzato per ottenere la pagina successiva dei risultati passando il token di impaginazione dall'intestazione di risposta `opc-next-page` contenuta nella risposta del cmdlet precedente.

Nota

È possibile utilizzare l'area di memorizzazione della cronologia per ottenere la risposta del cmdlet precedente.

Questo esempio mostra come recuperare i risultati rimanenti da una chiamata paginata precedente passando la proprietà $OCICmdletHistory.LastResponse.OpcNextPage dall'area di memorizzazione della cronologia come argomento al parametro -Page:.

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

Recupera tutti i risultati

I Cmdlet OCI che supportano l'impaginazione possono impaginare e recuperare automaticamente i risultati da tutte le pagine disponibili. Lasciare che il cmdlet esegua l'impaginazione passando il parametro switch -All durante l'esecuzione del cmdlet.

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

Camerieri e chiamate asincrone

La maggior parte delle risorse Oracle Cloud Infrastructure, come le istanze di computazione, hanno cicli di vita. In molti casi, è necessario che il comando aspetti che una risorsa o una richiesta di lavoro raggiunga uno stato specifico oppure che venga superato il timeout prima di eseguire ulteriori azioni. È possibile eseguire il polling di una risorsa per determinarne lo stato.

I moduli OCI per PowerShell offrono parametri del cameriere che consentono al cmdlet di attendere fino a quando una risorsa raggiunge lo stato desiderato. Un cmdlet con parametri del cameriere può essere richiamato in modo bloccante per attendere il raggiungimento di uno degli stati desiderati o il superamento di un timeout. I camerieri estraggono la logica di polling che altrimenti dovresti aggiungere prima di intraprendere ulteriori azioni su una risorsa o una richiesta di lavoro.

Ad esempio, quando si chiama LaunchInstance nel servizio di calcolo, l'intestazione della risposta contiene un valore work-request-id. I moduli OCI per PowerShell utilizzano questo ID quando si specifica il parametro -WaitForStatus, il che fa sì che lo script aspetti che la richiesta di lavoro riesca prima di continuare.

Ad esempio:
#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

Parametri cameriere

Questa sezione descrive i parametri utilizzati per le chiamate asincrone.

WaitForStatus

Specificare questo parametro per eseguire l'azione, quindi attendere che la risorsa raggiunga lo stato del ciclo di vita desiderato. È possibile specificare più stati, restituendoli quando la risorsa raggiunge uno degli stati desiderati.

WaitIntervalSeconds

Controllare ogni WaitIntervalSeconds per verificare se la risorsa ha raggiunto uno degli stati desiderati. Il valore predefinito per questo parametro è 30 secondi.

MaxWaitAttempts

Numero massimo di tentativi da eseguire finché la risorsa non raggiunge uno degli stati desiderati. Il valore predefinito per questo parametro è 3 tentativi.

Nota

Al momento, i Cmdlet OCI non accettano il tempo massimo di attesa per i cmdlet che supportano i camerieri. È possibile risolvere questa limitazione controllando i valori di MaxWaitAttempts e/o WaitIntervalSeconds.

Al completamento, il cmdlet restituisce l'oggetto di risposta originale ricevuto. In caso di errore come la risorsa che non riesce a raggiungere lo stato desiderato entro i limiti specificati, verrà restituita un'eccezione contenente il messaggio di errore.

Input e output flusso

Alcuni Cmdlet OCI interagiscono con le API che accettano o restituiscono oggetti di tipo flusso (ad esempio, l'operazione InvokeFunctions nel servizio Functions). Questi cmdlet OCI accettano parametri che possono prendere un percorso di file e convertire implicitamente i file in flussi e viceversa.
Nota

È possibile passare un parametro di flusso o il parametro di file equivalente, ma non entrambi.
Il parametro di input del file prende il nome dal parametro di input del flusso corrispondente e il parametro di output del file viene denominato OutputFile.
Nota

Per un esempio, vedere il testo della Guida per il cmdlet Invoke-OCIFunctionsInvokeFunction in OCI.PSModules.Functions.

In questo esempio su GitHub viene illustrato come utilizzare i flussi.

Registrazione

Per facilitare la risoluzione dei problemi, i moduli OCI per PowerShell supportano la registrazione dei messaggi a livello di debug e verbose nella console oltre ai messaggi di errore. Questa funzione è stata integrata con i parametri standard PowerShell Debug e Verbose.

Passare i parametri -Debug o -Verbose nel richiamo del cmdlet per visualizzare i messaggi di log nella console.

Ad esempio:

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

Autenticazione con i principal delle istanze

Principali istanze è una funzione del servizio IAM che consente alle istanze di essere attori (o principal) autorizzati in grado di eseguire azioni sulle risorse del servizio. Ogni istanza di computazione ha la propria identità e viene autenticata utilizzando i certificati aggiunti. Questi certificati vengono creati automaticamente, assegnati alle istanze e ruotati, evitando di dover distribuire le credenziali agli host e ruotarle.

Nota

Per ulteriori informazioni sui principal delle istanze, vedere Chiamata di servizi da un'istanza.

Per abilitare l'autenticazione del principal dell'istanza dai Cmdlet OCI, chiamare autorizza l'istanza e impostare il parametro AuthType. Ad esempio:

PS /> Get-OCIIdentityRegionsList -AuthType InstancePrincipal

Endpoint dedicati

Gli endpoint dedicati sono i modelli di endpoint definiti dal servizio per un realm specifico a livello di client. I moduli OCI per PowerShell consentono di abilitare l'uso di questa funzione di modelli di endpoint specifici del realm sia a livello di applicazione che a livello di client. Il valore minimo consigliato è di almeno 100 MB per le piattaforme a 32 bit e di almeno 144 MB per le piattaforme a 64 bit.
Nota

Il set di valori a livello di client ha la precedenza sul set di valori a livello di applicazione.

Abilitazione dei modelli di endpoint specifici del realm a livello di applicazione:

Per abilitare la funzione dei modelli di endpoint specifici del realm a livello di applicazione, impostare la variabile di ambiente OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED su true.
Nota

Il valore booleano non fa distinzione tra maiuscole e minuscole.

Abilitazione dei modelli di endpoint specifici del realm a livello di client:

Per abilitare la funzione dei modelli di endpoint specifici del realm a livello di client, impostare il flag nel codice come mostrato di seguito.
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug

Per un esempio completo, vedere l'esempio CreateBucketUsingRealmSpecificEndpoint_ObjectStorage su GitHub.