Concepts avancés

Cette section couvre les concepts relatifs à la trousse SDK PowerShell.

Cette section couvre les concepts relatifs à la trousse 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 pour spécifier les valeurs de certains paramètres communs facultatifs. Ces variables d'environnement peuvent être configurées directement dans la session PowerShell ou à l'aide de l'applet de commande 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éfinir les variables d'environnement directement à partir de PowerShell

Les variables d'environnement suivantes peuvent être utilisées pour spécifier des valeurs pour certains paramètres utilisés par les modules OCI pour PowerShell :
Paramètre d'applet de commande Nom de la variable d'environnement Note
Region OCI_PS_REGION Si aucune valeur n'est spécifiée, la valeur de la région issue du profil préféré de l'utilisateur est utilisée.
Profile OCI_PS_PROFILE Si aucune valeur n'est spécifiée, le profil DEFAULT est utilisé.
ConfigFile OCI_PS_CONFIG Si une valeur n'est pas spécifiée, le fichier de configuration à ~/.oci/config sera 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 spécifiée, la valeur par défaut de 100 000 millisecondes (100 secondes) est utilisée.
AuthType OCI_PS_AUTH Si aucune valeur n'est spécifiée, la clé d'API définie dans le fichier de configuration est utilisée.

Par exemple, pour définir la région :

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

Définir les variables d'environnement à l'aide d'applets de commande

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

Set-OCIClientSession

Cet applet de commande définit les préférences des fichiers Région, Profil et Configuration pour la session PowerShell au moyen des variables d'environnement indiquées ci-dessus.

Note

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 supprimer une variable d'environnement de préférence de session, exécutez l'applet de commande Clear-OCIClientSession avec les paramètres appropriés.

Get-OCIClientSession

L'applet de commande Get-OCIClientSession dans le module commun permet d'extraire les valeurs de préférences de session définies pour les paramètres communs à partir de la session PowerShell courante.

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 suivent cet ordre de priorité :

  1. Valeur spécifiée dans le paramètre d'applet de commande.
  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é à ~/.oci/config.
Note

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

Magasin d'historiques

Par défaut, les applets de commande OCI affichent le corps de réponse de l'opération d'API REST. Le magasin d'historiques fournit aux utilisateurs une variable PowerShell qui peut être utilisée pour examiner les appels de commande OCI et leurs réponses d'API complètes à partir des services OCI.
Note

Chaque session PowerShell obtient son propre magasin d'historiques.

Vous pouvez utiliser le magasin d'historiques pour :

  • Utiliser les valeurs d'objet de réponse de l'applet de commande précédent dans l'applet de commande suivant
  • Inspecter la réponse d'API complète, y compris les en-têtes de réponse, par exemple, l'utilisation de balise d'entité (ETag) pour la simultanéité optimiste, ou l'en-tête OpcNextPage pour la pagination
  • Examiner les séquences d'appel d'applet de commande à des fins de diagnostic

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

Pour plus d'informations, voir l'exemple de magasin d'historiques dans GitHub.

Propriétés du magasin d'historiques

Cette section explique les propriétés contenues dans l'objet de magasin d'historiques 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;}

Taille

Indique le nombre maximal de commandes pouvant être enregistrées dans le magasin d'historiques. La valeur par défaut est de 20. Les valeurs valides sont comprises entre 1 et 100 000 (inclusive). Pour modifier la taille du magasin d'historiques, utilisez Set-OCICmdletHistory.

Note

Nous recommandons de maintenir la taille de l'historique au minimum pour limiter l'utilisation de la mémoire.

Entrées

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

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

Nom Type Description
StartTime System.DateTime Heure de début d'exécution de l'applet de commande.
EndTime System.DateTime Heure de fin d'exécution de l'applet de commande.
Commande System.Management.Automation.InvocationInfo Décrit comment et où cette commande a été appelée.
Réponse System.Management.Automation.PSObject Objet de sortie retourné par l'applet de commande.

LastResponse

Objet System.Management.Automation.PSObject encapsulant la réponse du dernier applet de commande dans une session PowerShell.

Applets de commande du magasin d'historiques

Le module Oci.PSModules.Common fournit les applets de commande suivants à utiliser avec le magasin d'historiques. Voir l'exemple GitHub.

Get-OCICmdletHistory

Obtient l'historique de l'applet de commande stocké dans la session PowerShell courante.

Set-OCICmdletHistory

Définit les propriétés du magasin d'historiques.

Clear-OCICmdletHistory

Supprime l'historique de l'applet de commande stocké dans la session PowerShell courante.

Pagination

Les applets de commande 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 (automatiquement après les jetons de pagination) jusqu'à ce qu'aucun autre enregistrement ne soit disponible.

Note

Des exemples dans cette rubrique appellent l'opération ListImages dans le service de calcul. Assurez-vous d'importer OCI.PSModules.Core avant d'essayer les exemples de cette section.

Obtenir les résultats de la première page

Le comportement par défaut d'un applet de commande qui prend en charge la pagination est d'obtenir uniquement la première page des résultats lorsqu'il est appelé sans le paramètre -Page spécifié.

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

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

L'exemple ci-dessus définit implicitement le paramètre -Page à NULL.

Note

Le nombre maximal de résultats par page est défini par le service et se trouve dans les informations de référence sur l'API du service.

Limiter les résultats

Le paramètre -Limit indique le nombre maximal de résultats retournés par page.

L'exemple suivant définit le nombre maximal de résultats retournés par page à 5 :

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

Obtenir les résultats de la page suivante

Le paramètre -Page est utilisé pour obtenir la page suivante des résultats en transmettant le jeton de pagination à partir de l'en-tête de réponse 'opc-next-page` contenu dans la réponse de l'applet de commande précédent.

Note

Vous pouvez utiliser le magasin d'historiques pour obtenir la réponse de l'applet de commande précédent.

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

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

Obtenir tous les résultats

Les applets de commande OCI qui prennent en charge la pagination peuvent paginer automatiquement et extraire les résultats de toutes les pages disponibles. Laissez l'applet de commande faire la pagination en transmettant le paramètre de commutation -All lors de l'exécution de l'applet de commande.

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

Processus en attente et appels asynchrones

La plupart des ressources Oracle Cloud Infrastructure, notamment les instances de calcul, comportent des cycles de vie. Dans la plupart des cas, vous voulez que votre code attende qu'une ressource ou une demande de travail ait atteint un état spécifique, ou qu'une temporisation soit dépassée, avant d'entreprendre une action supplémentaire. Vous pouvez scruter une ressource pour déterminer son état.

Les modules OCI pour PowerShell offrent des paramètres de processus en attente qui permettent à votre applet de commande d'attendre qu'une ressource atteigne un état souhaité. Un applet de commande avec des paramètres de processus en attente peut être appelé de manière bloquante pour attendre que l'un des états souhaités soit atteint ou qu'une temporisation soit dépassée. Les processus en attente convertissent la logique de scrutation (que vous auriez autrement à ajouter) avant d'entreprendre d'autres actions sur une ressource ou une demande de travail.

Par exemple, lorsque vous appelez LaunchInstance dans le service de calcul, l'en-tête de réponse contient un work-request-id. Les modules OCI pour PowerShell utilisent cet ID lorsque vous spécifiez le paramètre -WaitForStatus, qui fait que votre script attende que la demande de travail réussisse 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 de processus d'attente

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

WaitForStatus

Spécifiez ce paramètre pour exécuter l'action, puis attendez que la ressource atteigne l'état souhaité du cycle de vie. Il est possible de spécifier plusieurs états, avec retour sur le premier, lorsque la ressource atteint l'un des états souhaités.

WaitIntervalSeconds

Vérifiez le paramètre WaitIntervalSeconds pour voir si la ressource a atteint l'un des états souhaités. La valeur par défaut de ce paramètre est 30 secondes.

MaxWaitAttempts

Nombre maximal de tentatives à effectuer jusqu'à ce que la ressource atteigne l'un des états désirés. La valeur par défaut de ce paramètre est 3 tentatives.

Note

Actuellement, les applets de commande OCI n'acceptent pas le temps d'attente maximal pour les applets de commande qui prennent en charge les processus en attente. Vous pouvez contourner cette limitation en contrôlant les valeurs de MaxWaitAttempts ou de WaitIntervalSeconds.

Une fois terminé, l'applet de commande retourne l'objet de réponse initial reçu. En cas d'erreur de type "la ressource ne parvient pas à atteindre l'état désiré dans les limites données", une exception contenant le message d'erreur serait générée.

Entrées et sorties de flux

Certains applets OCI interagissent avec des API qui acceptent ou renvoient des objets de type flux (par exemple, l'opération InvokeFunctions dans le service Fonctions). Ces applets de commande OCI acceptent les paramètres qui peuvent prendre un chemin de fichier et convertir implicitement les fichiers en flux et inversement.
Note

Vous pouvez transmettre un paramètre de flux ou un 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.
Note

Pour un exemple, voir le texte d'aide sur l'applet de commande Invoke-OCIFunctionsInvokeFunction dans OCI.PSModules.Functions.

Cet exemple sur GitHub montre comment utiliser les flux.

Journalisation

Pour faciliter le dépannage, les modules OCI pour PowerShell prennent en charge la journalisation des messages de niveau debug et verbose dans la console en plus des messages d'erreur. Cette fonction 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 l'applet de commande pour voir les messages des journaux dans 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 avec les principaux d'instance

Principaux d'instance est une fonction de service IAM qui permet aux instances d'être des acteurs (ou principaux) autorisés pouvant effectuer des actions sur les ressources de service. Chaque instance de calcul possède sa propre identité et s'authentifie à l'aide des certificats qui y sont ajoutés. Comme ces certificats sont créés automatiquement, affectés à des instances et modifiés, vous n'avez pas besoin de transmettre des données d'identification à vos hôtes ni de les modifier.

Note

Pour plus d'informations sur les principaux d'instance, voir Appel de services depuis une instance.

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

PS /> Get-OCIIdentityRegionsList -AuthType InstancePrincipal

Points d'extrémité dédiés

Les endpoints dédiés sont les modèles de endpoint définis par le service pour un domaine spécifique au niveau client. Les modules OCI pour PowerShell vous permettent d'activer l'utilisation de cette fonction de modèles de point d'extrémité propres au domaine au niveau de l'application et au niveau du client. Cette fonction est désactivée par défaut.
Note

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

Activation des modèles de point d'extrémité propres à un domaine au niveau de l'application :

Pour activer la fonction des modèles de point d'extrémité propres au domaine au niveau de l'application, réglez la variable d'environnement OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED à true.
Note

La valeur booléenne n'est pas sensible à la casse.

Activation des modèles de point d'extrémité propres au domaine au niveau du client :

Pour activer la fonction de modèles de point d'extrémité 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, voir l'exemple CreateBucketUsingRealmSpecificEndpoint_ObjectStorage sur GitHub.