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.
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:
- Il valore specificato nel parametro cmdlet.
- Il valore specificato nelle preferenze di sessione.
- Valore specificato nel profilo selezionato dall'utente del file di configurazione OCI situato in
~/.oci/config
.
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
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
.
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.
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.
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.
È 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.
#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.
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
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. È possibile passare un parametro di flusso o il parametro di file equivalente, ma non entrambi.
OutputFile
. 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.
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
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:
OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED
su true
. Il valore booleano non fa distinzione tra maiuscole e minuscole.
Abilitazione dei modelli di endpoint specifici del realm a livello di client:
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug
Per un esempio completo, vedere l'esempio CreateBucketUsingRealmSpecificEndpoint_ObjectStorage su GitHub.