Conceitos Avançados

Esta seção abrange os conceitos do PowerShell SDK.

Esta seção abrange os conceitos do PowerShell SDK.

Gerenciando Preferências de Sessão

Os Módulos do OCI para PowerShell suportam o uso de variáveis de ambiente em uma sessão do PowerShell para especificar os valores de alguns parâmetros comuns opcionais. Essas variáveis de ambiente podem ser configuradas diretamente na sessão do PowerShell ou usando o cmdlet Set-OCIClientSession. Os valores designados a essas variáveis de ambiente são usados para fazer chamadas de API somente na sessão do PowerShell na qual elas estão definidas.

Definir Variáveis de Ambiente Diretamente do PowerShell

As seguintes variáveis de ambiente podem ser usadas para especificar os valores de alguns parâmetros usados pelos Módulos do OCI para PowerShell:
Parâmetro Cmdlet Nome da Variável do Ambiente Observação
Região OCI_PS_REGION Se um valor não for especificado, será usado o valor da região do perfil preferencial do usuário.
Perfil OCI_PS_PROFILE Se um valor não for especificado, será usado o perfil DEFAULT.
ConfigFile OCI_PS_CONFIG Se um valor não for especificado, o arquivo de configuração em ~/.oci/config será usado.
NoRetry OCI_PS_NORETRY Se um valor não for especificado, a estratégia de repetição padrão será usada para tentar repetições.
TimeOutInMillis OCI_PS_TIMEOUT Se um valor não for especificado, o valor default 100.000 milissegundos (100 segundos) será usado.
AuthType OCI_PS_AUTH Se um valor não for especificado, a chave de API definida no arquivo de configuração será usada.

Por exemplo, para definir a região:

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

Definir Variáveis de Ambiente usando Cmdlets

Você pode usar os cmdlets Set-OCIClientSession e Get-OCIClientSession para definir e recuperar as variáveis de ambiente de preferência da sessão.

Set-OCIClientSession

Este cmdlet define as preferências de arquivo Region, Profile e Config para a sessão do PowerShell por meio das variáveis de ambiente mostradas acima.

Observação

Importe OCI.PSModules.Common antes de executar o exemplo a seguir.
PS /> Set-OCIClientSession -RegionId "us-ashburn-1" -Profile "Test" -Config "~/.oci/testconfig"
 
RegionId     Profile Config
--------     ------- ------
us-ashburn-1 Test    ~/.oci/testconfig

Para remover uma variável de ambiente de preferência de sessão, execute o cmdlet Clear-OCIClientSession com os parâmetros apropriados.

Get-OCIClientSession

O cmdlet Get-OCIClientSession no módulo comum é usado para recuperar os valores de preferência de sessão definidos para os parâmetros comuns na sessão atual do PowerShell.

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

Precedência de Parâmetro

Ao avaliar parâmetros, os Módulos do OCI para PowerShell seguem esta ordem de precedência:

  1. O valor especificado no parâmetro cmdlet.
  2. O valor especificado nas preferências da sessão.
  3. O valor especificado no perfil selecionado pelo usuário do arquivo de configuração do OCI localizado em ~/.oci/config.
Observação

Os Módulos do OCI para PowerShell usam o perfil DEFAULT como perfil de fallback. Qualquer valor que não esteja explicitamente definido para determinado perfil será herdado do perfil DEFAULT.

Armazenamento do Histórico

Por padrão, os Cmdlets do OCI geram o corpo de resposta da operação da API REST subjacente. O armazenamento de histórico fornece aos usuários uma variável PowerShell que pode ser usada para examinar as chamadas de Cmdlet do OCI e suas respostas completas de API dos serviços do OCI.
Observação

Cada sessão do PowerShell obtém seu próprio armazenamento de histórico.

Você pode usar o armazenamento de histórico para:

  • Use os valores do objeto de resposta do Cmdlet anterior no próximo Cmdlet
  • Inspecione a resposta completa da API, incluindo os cabeçalhos de resposta - por exemplo, o uso de e-tags para concorrência otimista ou o cabeçalho OpcNextPage para paginação
  • Examinar sequências de chamada de cmdlet para fins de diagnóstico

O armazenamento de histórico é encapsulado como objeto Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistoryStore em uma variável do PowerShell denominada $OCICmdletHistory.

Para obter mais informações. consulte o exemplo de Armazenamento de Histórico no GitHub.

Propriedades de Armazenamento de Histórico

Esta seção explica as propriedades contidas no objeto de armazenamento de histórico armazenado em $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;}

Tamanho

Indica o número máximo de comandos que podem ser salvos no armazenamento de histórico. O valor padrão é 20. Valores válidos de 1 e 100000 (inclusive). Para modificar o tamanho do armazenamento de histórico, use Set-OCICmdletHistory.

Observação

Recomendamos manter o tamanho do histórico no mínimo para limitar o uso da memória.

Entradas

Coleção de objetos Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory que permite acesso indexado ao histórico armazenado.

O objeto Oci.PSModules.Common.Cmdlets.CmdletHistory.OCICmdletHistory tem as seguintes propriedades:

Nome Tipo Descrição
StartTime System.DateTime Horário de início da execução do cmdlet.
EndTime System.DateTime Horário de término da execução do cmdlet.
Comando System.Management.Automation.InvocationInfo Descreve como e onde este comando foi chamado.
Resposta System.Management.Automation.PSObject Objeto de saída retornado pelo cmdlet.

LastResponse

Um objeto System.Management.Automation.PSObject encapsulando a última resposta do Cmdlet do OCI em uma sessão do PowerShell.

Cmdlets do Armazenamento de Histórico

O módulo Oci.PSModules.Common fornece os cmdlets a seguir para trabalhar com o Armazenamento de Histórico. Veja o exemplo do GitHub.

Get-OCICmdletHistory

Obtém o histórico de cmdlet armazenado na sessão atual do PowerShell.

Set-OCICmdletHistory

Define as propriedades do armazenamento de histórico.

Clear-OCICmdletHistory

Exclui o histórico de cmdlet armazenado na sessão atual do PowerShell.

Paginação

Os Cmdlets do OCI que chamam as operações de API de lista têm a capacidade de paginar resultados, permitindo que você recupere os resultados disponíveis em batches (automaticamente após tokens de paginação) até que não haja mais registros disponíveis.

Observação

Os exemplos neste tópico chamam a operação ListImages no serviço Compute. Certifique-se de importar OCI.PSModules.Core antes de tentar os exemplos nesta seção.

Obter Resultados da Primeira Página

O comportamento padrão de um cmdlet que suporta paginação é obter somente a primeira página de resultados quando chamada sem o parâmetro -Page especificado.

Por exemplo, para obter a primeira página de imagens de computação disponível, chame Get-OCIComputeImagesList com compartment ID:

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

O exemplo acima define implicitamente o parâmetro -Page como NULO.

Observação

O número máximo de resultados por página é definido pelo serviço e pode ser encontrado na referência da API de serviço.

Limitar Resultados

O parâmetro -Limit especifica o número máximo de resultados retornados por página.

Esse exemplo define como 5 o número máximo de resultados retornados por página:

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

Obter Resultados da Próxima Página

O parâmetro -Page é usado para obter a próxima página de resultados informando o token de paginação do cabeçalho de resposta `opc-next-page` contido na resposta do cmdlet anterior.

Observação

Você pode usar o armazenamento de histórico para obter a resposta do cmdlet anterior.

Este exemplo mostra como recuperar os resultados restantes de uma chamada paginada anterior informando a propriedade $OCICmdletHistory.LastResponse.OpcNextPage do armazenamento de histórico como argumento para o parâmetro -Page: .

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

Obter Todos os Resultados

Os Cmdlets do OCI que suportam paginação podem paginar automaticamente e extrair resultados de todas as páginas disponíveis. Deixe o cmdlet fazer a paginação informando o parâmetro de alternância -All ao executar o cmdlet.

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

Cmdlets e Chamadas Assíncronas

A maioria dos recursos do Oracle Cloud Infrastructure, como instâncias de computação, tem calogramas de vida. Em muitos casos, você deseja que seu comando aguarde até que um recurso ou uma solicitação de serviço atinja um estado específico, ou que um timeout seja excedido, antes de executar outras ações. Você pode sondar um recurso para determinar seu estado.

Os Módulos do OCI para PowerShell oferecem parâmetros waiter que permitem que o cmdlet aguarde até que um recurso atinja um estado desejado. Um cmdlet com parâmetros waiter pode ser chamado de forma bloqueadora para aguardar até que um dos estados desejados seja atingido ou um timeout seja excedido. Os waiters resumem a lógica de sondagem que você teria de adicionar antes de tomar mais ações sobre um recurso ou uma solicitação de serviço.

Por exemplo, quando você chama LaunchInstance no serviço Compute, o cabeçalho de resposta contém work-request-id. Os Módulos do OCI para PowerShell usam esse ID quando você especifica o parâmetro -WaitForStatus, o que faz com que seu script aguarde até que a solicitação de serviço seja bem-sucedida antes de continuar.

Por exemplo:
#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

Parâmetros waiter

Esta seção descreve os parâmetros usados para chamadas assíncronas.

WaitForStatus

Especifique esse parâmetro para executar a ação e, em seguida, aguardar até que o recurso atinja o estado de ciclo de vida desejado. Vários estados podem ser especificados, retornando quando o recurso atinge um dos estados desejados.

WaitIntervalSeconds

Verifique cada WaitIntervalSeconds para ver se o recurso atingiu um dos estados desejados. O valor padrão desse parâmetro é 30 segundos.

MaxWaitAttempts

Número máximo de tentativas a serem feitas até que o recurso atinja um dos estados desejados. O valor padrão desse parâmetro é 3 tentativas.

Observação

Atualmente, os Cmdlets do OCI não aceitam o tempo máximo de espera para cmdlets que suportam waiters. Você pode contornar essa limitação controlando os valores de MaxWaitAttempts e/ou WaitIntervalSeconds.

Após a conclusão bem-sucedida, o cmdlet retorna o objeto de resposta original recebido. No caso de um erro como o recurso não atingir o estado desejado dentro dos limites fornecidos, uma exceção contendo a mensagem de erro será gerada.

Entradas e Saídas de Stream

Alguns Cmdlets do OCI interagem com APIs que aceitam ou retornam objetos do tipo de stream (por exemplo, a operação InvokeFunctions no serviço Functions). Esses cmdlets do OCI aceitam parâmetros que podem tomar um caminho de arquivo e implicitamente converter arquivos em streams e reconvertê-los.
Observação

Você pode informar um parâmetro de stream ou o parâmetro de arquivo equivalente, mas não ambos.
O parâmetro de entrada de arquivo é nomeado após o parâmetro de entrada de stream correspondente e o parâmetro de saída de arquivo é nomeado como OutputFile.
Observação

Para obter um exemplo, consulte o texto de ajuda do cmdlet Invoke-OCIFunctionsInvokeFunction em OCI.PSModules.Functions.

Esta amostra no GitHub indica como trabalhar com streams.

Log

Para facilitar a solução de problemas, os Módulos do OCI para PowerShell suportam o registro em log de mensagens nos níveis debug- e verbose- na console, além de mensagens de erro. Esse recurso foi integrado aos parâmetros padrão Debug e Verbose do PowerShell.

Informe os parâmetros -Debug ou -Verbose na chamada do cmdlet para ver mensagens de log na console.

Por exemplo:

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

Autenticando com Principais da Instância

Controladores de instâncias é um recurso do serviço IAM que permite que as instâncias sejam atores (ou controladores) autorizados que possam executar ações em recursos de serviço. Cada instância de computação tem sua própria identidade e autentica usando os certificados que são adicionados a ela. Esses certificados são criados automaticamente, designados a instâncias e rotacionados, evitando que você distribua as credenciais para seus hosts e as rotacione.

Observação

Para obter mais informações sobre principais de instância, consulte Chamando Serviços de uma Instância.

Para ativar a autenticação do controlador de instâncias nos Cmdlets do OCI, chame autorizar a instância e defina o parâmetro AuthType. Por exemplo:

PS /> Get-OCIIdentityRegionsList -AuthType InstancePrincipal

Pontos Finais Dedicados

Pontos finais dedicados são os modelos de ponto final definidos pelo serviço para um realm específico no nível do cliente. Os Módulos do OCI para PowerShell permitem que você ative o uso desse recurso de modelos de ponto final específicos do realm no nível do aplicativo e no nível do cliente. Este recurso está desativado por padrão.
Observação

O valor definido no nível do cliente tem precedência sobre o valor definido no nível do aplicativo.

Ativando modelos de ponto final específicos do realm no nível do aplicativo:

Para ativar o recurso de modelos de ponto final específicos do realm no nível do aplicativo, defina a variável de ambiente OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED como true.
Observação

O valor booliano não faz distinção entre maiúsculas e minúsculas.

Ativando modelos de ponto final específicos do realm no nível do cliente:

Para ativar o recurso de modelos de ponto final específicos do realm no nível do cliente, defina o flag no código conforme mostrado abaixo:
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug

Para obter um exemplo completo, consulte o exemplo CreateBucketUsingRealmSpecificEndpoint_ObjectStorage no GitHub.