Gerenciar pacotes do Python 3 na Automação do Azure
Este artigo descreve como importar, gerenciar e usar pacotes Python 3 na Automação do Azure em execução no ambiente de área restrita do Azure e em Hybrid Runbook Workers. Os pacotes do Python devem ser baixados em Hybrid Runbook Workers para execução bem-sucedida do trabalho. Como uma ajuda para simplificar os runbooks, você pode usar pacotes Python para importar os módulos necessários.
Para obter informações de como gerenciar pacotes Python 2, confira Gerenciar pacotes Python 2.
Pacotes padrão do Python
Para dar suporte a runbooks do Python 3.8 no serviço de Automação, alguns pacotes Python são instalados por padrão e uma lista desses pacotes está aqui. A versão padrão pode ser substituída importando pacotes Python na sua conta de Automação.
A preferência é dada à versão importada em sua conta de Automação. Para importar um único pacote, confira Importar um pacote. Para importar um pacote com vários pacotes, confira Importar um pacote com dependências.
Observação
Não há pacotes padrão instalados para Python 3.10 (versão prévia).
Pacotes como arquivos de origem
A Automação do Azure dá suporte apenas a um pacote do Python que contém apenas o código Python e não inclui outras extensões de linguagem ou código em outras linguagens. No entanto, o ambiente de área restrita do Azure pode não ter os compiladores necessários para binários C/C++, portanto, é recomendável usar arquivos de roda em vez disso.
Observação
Atualmente, o Python 3.10 (versão prévia) só dá suporte a arquivos de roda.
O Índice de pacote Python (PyPI) é um repositório de software para a linguagem de programação Python. Ao selecionar um pacote Python 3 para importar para sua conta de Automação a partir do PyPI, observe as seguintes partes de nome de arquivo:
Selecione uma versão do Python:
Parte de nome de arquivo | Descrição |
---|---|
cp38 | A Automação dá suporte a Python 3.8 para trabalhos na nuvem. |
amd64 | Os processos da área restrita do Azure são da arquitetura Windows 64 bits. |
Por exemplo:
- Para importar pandas - selecione um arquivo de rodas com um nome similar a
pandas-1.2.3-cp38-win_amd64.whl
.
Alguns pacotes do Python disponíveis no PyPI não fornecem um arquivo de roda. Nesse caso, baixe a fonte (arquivo .zip ou. tar.gz) e gere o arquivo de roda usando pip
.
Execute as etapas a seguir usando uma máquina Windows de 64 bits com Python 3.8.x e o pacote de roda instalados:
- Fazer o download do arquivo de origem
pandas-1.2.4.tar.gz
. - Execute pip para obter o arquivo de roda com o seguinte comando:
pip wheel --no-deps pandas-1.2.4.tar.gz
Importar um pacote
Na sua conta de Automação, selecione Pacotes do Python em Recursos Compartilhados. Selecione + Adicionar pacote do Python.
Na página Adicionar um pacote Python, selecione um pacote local a ser carregado. O pacote pode ser um arquivo .whl ou .tar.gz para Python 3.8 e um arquivo .whl para Python 3.10 (versão prévia).
Insira um nome e selecione a Versão do Runtime como Python 3.8 ou Python 3.10 (versão prévia).
Observação
Atualmente, a versão do runtime do Python 3.10 (versão prévia) tem suporte para trabalhos de Nuvem e Híbrido em todas as regiões Públicas, exceto Austrália Central2, Sul da Coreia, Sul da Suécia, Jio Índia Central, Sudeste do Brasil, Índia Central, Oeste da Índia, EAU Central e Nuvens Gov.
Selecione Importar.
Depois que um pacote for importado, ele será listado na página Pacotes Python em sua conta de Automação. Para remover um pacote, selecione-o e selecione Excluir.
Importar um pacote com dependências
Para importar um pacote do Python 3.8 e as dependências, importe o seguinte script Python em um runbook do Python 3.8. Verifique se a Identidade gerenciada está habilitada para sua conta de Automação e tem acesso de Colaborador de Automação para importação bem-sucedida do pacote.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Importar o script em um runbook
Para obter informações sobre como importar o runbook, confira Importar um runbook do portal do Azure. Copie o arquivo de GitHub para o armazenamento que o portal pode acessar antes de executar a importação.
Observação
Atualmente, não há suporte para a importação de um runbook do Portal do Azure para o Python 3.10 (versão prévia).
A página Importar um runbook usa como padrão o nome do runbook para corresponder ao nome do script. Se você tiver acesso ao campo, poderá alterar o nome. O Tipo do runbook pode usar como padrão o Python 2.7. Se isso acontecer, mude-o para Python 3.8.
Executar o runbook para importar o pacote e as dependências
Depois de criar e publicar o runbook, execute-o para importar o pacote. Confira Iniciar um runbook na Automação do Azure para obter detalhes sobre como executar o runbook.
O script (import_py3package_from_pypi.py
) exige os seguintes parâmetros.
Parâmetro | Descrição |
---|---|
subscription_id | ID da assinatura da conta da Automação |
resource_group | Nome do grupo de recursos em que a conta da Automação está definida |
automation_account | Nome da conta da Automação |
module_name | Nome do módulo a ser importado de pypi.org |
module_version | A versão do módulo |
O valor do parâmetro deve ser fornecido como uma única cadeia de caracteres no formato abaixo:
-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>
Para obter mais informações sobre como usar parâmetros com runbooks, confira Trabalhar com parâmetros de runbook.
Use um pacote em um runbook
Com o pacote importado, você pode usá-lo em um runbook. Adicione o código a seguir para listar todos os grupos de recursos em uma assinatura do Azure.
#!/usr/bin/env python3
import os
import requests
# printing environment variables
endPoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/"
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER': identityHeader,
'Metadata': 'True'
}
response = requests.request("GET", endPoint, headers=headers, data=payload)
print(response.text)
Observação
O pacote automationassets
do Python não está disponível em pypi.org, portanto, ele não está disponível para importação em um trabalho de runbook híbrido do Windows.
Identificar pacotes disponíveis na área restrita
Use o seguinte código para listar os módulos padrão instalados:
#!/usr/bin/env python3
import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
for i in installed_packages])
for package in installed_packages_list:
print(package)
Cmdlets do PowerShell do Python 3.8
Adicionar novo pacote do Python 3.8
New-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl
Response
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : requires.io
IsGlobal : False
Version :
SizeInBytes : 0
ActivityCount : 0
CreationTime : 9/26/2022 1:37:13 PM +05:30
LastModifiedTime : 9/26/2022 1:37:13 PM +05:30
ProvisioningState : Creating
Listar todos os pacotes do Python 3.8
Get-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja
Response :
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : cryptography
IsGlobal : False
Version :
SizeInBytes : 0
ActivityCount : 0
CreationTime : 9/26/2022 11:52:28 AM +05:30
LastModifiedTime : 9/26/2022 12:11:00 PM +05:30
ProvisioningState : Failed
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : requires.io
IsGlobal : False
Version :
SizeInBytes : 0
ActivityCount : 0
CreationTime : 9/26/2022 1:37:13 PM +05:30
LastModifiedTime : 9/26/2022 1:39:04 PM +05:30
ProvisioningState : ContentValidated
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : sockets
IsGlobal : False
Version : 1.0.0
SizeInBytes : 4495
ActivityCount : 0
CreationTime : 9/20/2022 12:46:28 PM +05:30
LastModifiedTime : 9/22/2022 5:03:42 PM +05:30
ProvisioningState : Succeeded
Obter detalhes sobre o pacote específico
Get-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Response
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : sockets
IsGlobal : False
Version : 1.0.0
SizeInBytes : 4495
ActivityCount : 0
CreationTime : 9/20/2022 12:46:28 PM +05:30
LastModifiedTime : 9/22/2022 5:03:42 PM +05:30
ProvisioningState : Succeeded
Remover o pacote do Python 3.8
Remove-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Atualizar o pacote do Python 3.8
Set-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : requires.io
IsGlobal : False
Version : 0.2.6
SizeInBytes : 10109
ActivityCount : 0
CreationTime : 9/26/2022 1:37:13 PM +05:30
LastModifiedTime : 9/26/2022 1:43:12 PM +05:30
ProvisioningState : Creating
Próximas etapas
Para preparar um runbook do Python, confira Criar um runbook do Python.