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.
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é :
- Valeur spécifiée dans le paramètre d'applet de commande.
- Valeur spécifiée dans les préférences de session.
- Valeur spécifiée dans le profil sélectionné par l'utilisateur du fichier de configuration OCI situé à
~/.oci/config
.
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
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
.
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.
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.
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.
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.
#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.
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
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. Vous pouvez transmettre un paramètre de flux ou un paramètre de fichier équivalent, mais pas les deux.
OutputFile
. 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.
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
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 :
OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED
à true
. 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 :
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug
Pour un exemple complet, voir l'exemple CreateBucketUsingRealmSpecificEndpoint_ObjectStorage sur GitHub.