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.
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:
- O valor especificado no parâmetro cmdlet.
- O valor especificado nas preferências da sessão.
- O valor especificado no perfil selecionado pelo usuário do arquivo de configuração do OCI localizado em
~/.oci/config
.
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
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
.
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.
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.
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.
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.
#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.
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
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. Você pode informar um parâmetro de stream ou o parâmetro de arquivo equivalente, mas não ambos.
OutputFile
. 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.
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
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:
OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED
como true
. 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:
$NamespaceName = Get-OCIObjectStorageNamespace -CompartmentId $CompartmentId -UseRealmSpecificEndpoint -Debug
Para obter um exemplo completo, consulte o exemplo CreateBucketUsingRealmSpecificEndpoint_ObjectStorage no GitHub.