Concepts avancés

Cette section couvre les concepts du kit SDK PowerShell.

Cette section couvre les concepts du kit SDK PowerShell.

Gestion des préférences de session

Les modules OCI pour PowerShell prennent en charge l'utilisation de variables d'environnement dans une session PowerShell afin d'indiquer les valeurs de certains paramètres courants facultatifs. Ces variables d'environnement peuvent être configurées directement dans la session PowerShell ou à l'aide de la cmdlet Set-OCIClientSession. Les valeurs affectées à ces variables d'environnement sont utilisées pour effectuer des appels d'API uniquement dans la session PowerShell dans laquelle elles sont définies.

Définition des variables d'environnement directement à partir de PowerShell

Les variables d'environnement suivantes peuvent être utilisées afin de spécifier les valeurs de certains paramètres utilisés par les modules OCI pour PowerShell :
Paramètre de la cmdlet Nom de la variable d'environnement Remarque
Region OCI_PS_REGION Si aucune valeur n'est indiquée, la valeur de région du profil préféré de l'utilisateur est employée.
Profile OCI_PS_PROFILE Si aucune valeur n'est indiquée, le profil DEFAULT est utilisé.
ConfigFile OCI_PS_CONFIG Si aucune valeur n'est indiquée, le fichier de configuration situé dans ~/.oci/config est utilisé.
NoRetry OCI_PS_NORETRY Si aucune valeur n'est spécifiée, la stratégie de nouvelle tentative par défaut est utilisée.
TimeOutInMillis OCI_PS_TIMEOUT Si aucune valeur n'est indiquée, la valeur par défaut de 100 000 millisecondes (100 secondes) est utilisée.
AuthType OCI_PS_AUTH Si aucune valeur n'est indiquée, la clé d'API définie dans le fichier de configuration est utilisée.

Par exemple, pour définir la région, utilisez la commande suivante :

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

Définition des variables d'environnement à l'aide de cmdlets

Vous pouvez utiliser les cmdlets Set-OCIClientSession et Get-OCIClientSession pour définir et extraire les variables d'environnement de préférence de session.

Set-OCIClientSession

Cette cmdlet définit les préférences Region, Profile et Config pour la session PowerShell via les variables d'environnement indiquées ci-dessus.

Remarque

Importez OCI.PSModules.Common avant d'exécuter l'exemple suivant.
PS /> Set-OCIClientSession -RegionId "us-ashburn-1" -Profile "Test" -Config "~/.oci/testconfig"
 
RegionId     Profile Config
--------     ------- ------
us-ashburn-1 Test    ~/.oci/testconfig

Pour enlever une variable d'environnement de préférence de session, exécutez la cmdlet Clear-OCIClientSession avec les paramètres appropriés.

Get-OCIClientSession

La cmdlet Get-OCIClientSession dans le module commun permet d'extraire les valeurs de préférence de session définies pour les paramètres courants de la session PowerShell en cours.

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

Priorité des paramètres

Lors de l'évaluation des paramètres, les modules OCI pour PowerShell respectent l'ordre de priorité suivant :

  1. Valeur spécifiée dans le paramètre de cmdlet.
  2. Valeur spécifiée dans les préférences de session.
  3. Valeur spécifiée dans le profil sélectionné par l'utilisateur du fichier de configuration OCI situé à l'emplacement ~/.oci/config.
Remarque

Les modules OCI pour PowerShell utilisent le profil DEFAULT en tant que profil de secours. Toute valeur qui n'est pas explicitement définie pour un profil donné est ainsi héritée du profil DEFAULT.

Banque d'historique

Par défaut, les cmdlets OCI génèrent le corps de réponse de l'opération d'API REST sous-jacente. La banque d'historique fournit aux utilisateurs une variable PowerShell qu'ils peuvent utiliser pour examiner les appels des cmdlets OCI, ainsi que les réponses d'API complètes correspondantes reçues à partir des services OCI.
Remarque

Chaque session PowerShell a sa propre banque d'historique.

Vous pouvez utiliser la banque d'historique pour effectuer les opérations suivantes :

  • Utiliser les valeurs d'objet de réponse de la cmdlet précédente pour la cmdlet suivante
  • Inspecter la réponse d'API complète, y compris les en-têtes de réponse (par exemple, l'utilisation d'e-tags pour l'accès concurrentiel optimiste ou l'en-tête OpcNextPage pour la pagination)
  • Examiner les séquences d'appel de cmdlet à des fins de diagnostic

La banque d'historique est encapsulée en tant qu'objet Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistoryStore dans une variable PowerShell nommée $OCICmdletHistory.

Pour plus d'informations, reportez-vous à l'exemple de banque d'historique sur GitHub.

Propriétés de la banque d'historique

Cette section décrit les propriétés contenues dans l'objet de banque d'historique stocké dans $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

Nombre maximal de commandes pouvant être enregistrées dans la banque d'historique. Valeur par défaut : 20. Les valeurs valides sont comprises entre 1 et 100 000 inclus. Pour modifier la taille de la banque d'historique, utilisez Set-OCICmdletHistory.

Remarque

Nous vous recommandons de limiter autant que possible la taille de l'historique pour réduire l'utilisation de la mémoire.

Entries

Ensemble d'objets Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory permettant un accès indexé à l'historique stocké.

L'objet Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory a les propriétés suivantes :

Nom Type Description
StartTime System.DateTime Heure de début de l'exécution de la cmdlet.
EndTime System.DateTime Heure de fin de l'exécution de la cmdlet.
Command System.Management.Automation.InvocationInfo Méthode et emplacement d'appel de cette commande.
Response System.Management.Automation.PSObject Objet de sortie renvoyé par la cmdlet.

LastResponse

Objet System.Management.Automation.PSObject encapsulant la dernière réponse de cmdlet OCI dans une session PowerShell.

Cmdlets de la banque d'historique

Le module Oci.PSModules.Common fournit les cmdlets suivantes pour l'utilisation de la banque d'historique. Reportez-vous à l'exemple GitHub.

Get-OCICmdletHistory

Permet d'obtenir l'historique des cmdlets stocké dans la session PowerShell en cours.

Set-OCICmdletHistory

Permet de définir les propriétés de la banque d'historique.

Clear-OCICmdletHistory

Permet de supprimer l'historique des cmdlets stocké dans la session PowerShell en cours.

Pagination

Les cmdlets OCI qui appellent des opérations d'API de liste peuvent paginer les résultats, ce qui vous permet d'extraire les résultats disponibles en lots (succession automatique des jetons de pagination) jusqu'à ce qu'aucun autre enregistrement ne soit disponible.

Remarque

Les exemples dans cette rubrique appellent l'opération ListImages dans le service Compute. N'oubliez pas d'importer OCI.PSModules.Core avant d'essayer les exemples de cette section.

Obtention des résultats de la première page

Le comportement par défaut d'une cmdlet qui prend en charge la pagination consiste à obtenir uniquement la première page des résultats lorsqu'elle est appelée sans le paramètre -Page.

Par exemple, pour obtenir la première page des images de calcul disponibles, appelez Get-OCIComputeImagesList en indiquant votre ID de compartiment :

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

Dans l'exemple ci-dessus, le paramètre -Page est implicitement défini sur NULL.

Remarque

Le nombre maximal de résultats par page est défini par le service et peut être trouvé dans la référence d'API du service.

Limitation du nombre de résultats

Le paramètre -Limit permet d'indiquer le nombre maximal de résultats à renvoyer par page.

Dans cet exemple, le nombre maximal de résultats renvoyés par page est fixé à 5 :

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

Obtention des résultats de la page suivante

Le paramètre -Page permet d'obtenir la page suivante des résultats en transmettant le jeton de pagination de l'en-tête de réponse "opc-next-page" contenu dans la réponse renvoyée par la cmdlet précédente.

Remarque

Vous pouvez utiliser la banque d'historique pour obtenir la réponse de la cmdlet précédente.

Cet exemple montre comment extraire les résultats restants d'un appel paginé précédent en transmettant la propriété $OCICmdletHistory.LastResponse.OpcNextPage de la banque d'historique en tant qu'argument au paramètre -Page :

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

Obtention de l'ensemble des résultats

Les cmdlets OCI qui prennent en charge la pagination peuvent paginer et extraire automatiquement les résultats de toutes les pages disponibles. Laissez la cmdlet gérer la pagination en transmettant le paramètre de commutateur -All lors de son exécution.

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

Processus en attente et appels asynchrones

La plupart des ressources Oracle Cloud Infrastructure, telles que les instances de calcul, ont des cycles de vie. Dans la plupart des cas, le code doit attendre qu'une ressource ou qu'une demande de travail atteigne un état spécifique, ou qu'un délai d'expiration soit dépassé, avant d'effectuer une autre action. Vous pouvez interroger une ressource pour déterminer son état.

Les modules OCI pour PowerShell offrent des paramètres de processus en attente qui permettent à votre cmdlet d'attendre qu'une ressource atteigne l'état souhaité. Vous pouvez appeler une cmdlet avec des paramètres de processus en attente de manière bloquante pour attendre que l'un des états souhaités soit atteint ou qu'un délai d'expiration soit dépassé. Les processus en attente extraient la logique d'interrogation, que vous devriez autrement ajouter avant d'effectuer d'autres actions sur une ressource ou une demande de travail.

Par exemple, lorsque vous appelez LaunchInstance dans le service Compute, l'en-tête de réponse contient l'ID work-request-id. Les modules OCI pour PowerShell utilisent cet ID lorsque vous indiquez le paramètre -WaitForStatus, ce qui oblige le script à attendre que la demande de travail soit terminée avant de continuer.

Par exemple :
#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

Paramètres des processus en attente

Cette section décrit les paramètres utilisés pour les appels asynchrones.

WaitForStatus

Indiquez ce paramètre pour exécuter l'action, puis attendez que la ressource atteigne un état de cycle de vie donné. Vous pouvez spécifier plusieurs états. Une réponse est alors renvoyée lorsque la ressource atteint l'un des états souhaités.

WaitIntervalSeconds

Des vérifications régulières à l'intervalle défini par WaitIntervalSeconds sont effectuées pour vérifier si la ressource a atteint l'un des états souhaités. La valeur par défaut de ce paramètre est de 30 secondes.

MaxWaitAttempts

Nombre maximal de tentatives pouvant être effectuées avant que la ressource n'atteigne l'un des états souhaités. La valeur par défaut de ce paramètre est de 3 tentatives.

Remarque

Actuellement, les cmdlets OCI qui prennent en charge les processus en attente n'acceptent aucun délai d'attente maximal. Vous pouvez contourner cette limite en contrôlant les valeurs de MaxWaitAttempts et/ou de WaitIntervalSeconds.

Une fois son exécution terminée, la cmdlet renvoie l'objet de réponse d'origine reçu. En cas d'erreur, par exemple lorsque la ressource n'atteint pas l'état souhaité dans les limites indiquées, une exception contenant le message d'erreur est générée.

Entrées et sorties de flux

Certaines cmdlets OCI interagissent avec des API qui acceptent ou renvoient des objets de type flux (par exemple, l'opération InvokeFunctions dans le service Functions). Ces cmdlets OCI acceptent les paramètres qui peuvent prendre un chemin de fichier ainsi que convertir implicitement les fichiers vers et depuis des flux.
Remarque

Vous pouvez transmettre un paramètre de flux ou le paramètre de fichier équivalent, mais pas les deux.
Le paramètre d'entrée de fichier est nommé d'après le paramètre d'entrée de flux correspondant et le paramètre de sortie de fichier est nommé OutputFile.
Remarque

Pour consulter un exemple, reportez-vous au texte d'aide de la cmdlet Invoke-OCIFunctionsInvokeFunction dans OCI.PSModules.Functions.

Cet exemple sur GitHub montre comment utiliser les flux.

Journalisation

Pour faciliter la résolution des problèmes, les modules OCI pour PowerShell prennent en charge la journalisation des messages de niveau debug et verbose sur la console, en plus des messages d'erreur. Cette fonctionnalité a été intégrée aux paramètres standard Debug et Verbose de PowerShell.

Transmettez les paramètres -Debug ou -Verbose dans l'appel de la cmdlet pour afficher les messages de journal sur la console.

Par exemple :

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

Authentification à l'aide de principaux d'instance

Les principaux d'instance sont une fonctionnalité de service IAM qui permet aux instances d'être des acteurs autorisés (ou principaux) pouvant exécuter des actions sur les ressources de service. Chaque instance de calcul possède sa propre identité et est authentifiée à l'aide des certificats qui lui sont ajoutés. Ces certificats sont créés et affectés aux instances, et font également l'objet d'une rotation, le tout de façon automatique. Cela vous évite d'avoir à diffuser les informations d'identification aux hôtes et d'effectuer leur rotation.

Remarque

Pour obtenir plus d'informations sur les principaux d'instance, reportez-vous à Appel de services à partir d'une instance.

Pour activer l'authentification par principal d'instance à partir des cmdlets OCI, autorisez l'instance à effectuer des appels et définissez le paramètre AuthType. Par exemple :

PS /> Get-OCIIdentityRegionsList -AuthType InstancePrincipal

Adresses dédiées

Les adresses dédiées sont les modèles d'adresse définis par le service pour un domaine spécifique au niveau du client. Les modules OCI pour PowerShell vous permettent d'activer l'utilisation de cette fonctionnalité de modèles d'adresse propre au domaine au niveau de l'application et au niveau du client. Par défaut, cette fonction est désactivée.
Remarque

La valeur définie au niveau du client est prioritaire sur la valeur définie au niveau de l'application.

Activer des modèles d'adresse propres à un domaine au niveau de l'application :

Pour activer la fonctionnalité de modèles d'adresse propre au domaine au niveau de l'application, définissez la variable d'environnement OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED sur true.
Remarque

La valeur booléenne ne tient pas compte de la casse.

Activer des modèles d'adresse propres au domaine au niveau du client :

Pour activer la fonctionnalité de modèles d'adresse propre au domaine au niveau du client, définissez l'indicateur dans le code comme indiqué ci-dessous :
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug

Pour un exemple complet, reportez-vous à l'exemple CreateBucketUsingRealmSpecificEndpoint_ObjectStorage sur GitHub.