Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Observação
O Python 2.7 e o Python 3.8 não são mais compatíveis com a plataforma pai Python. Recomendamos que você crie runbooks somente no Python 3.10.
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.
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 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 |
|---|---|
| cp310 | A automação dá suporte ao Python 3.10 para trabalhos de nuvem. |
| manylinux_x86_64 | Os processos de sandbox do Azure são baseados em uma arquitetura Linux de 64 bits para runbooks do Python 3.10. |
Por exemplo:
- Para importar o pandas - selecione um arquivo de rodas com um nome similar a
pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.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 Linux de 64 bits com Python 3.10.x e o pacote de roda instalados:
- Fazer o download do arquivo de origem
pandas-1.2.4.tar.gz. - Execute o pip para obter o arquivo de roda com o seguinte comando:
pip wheel --no-deps pandas-1.2.4.tar.gz
Importar um pacote
Para importar um pacote, siga estas etapas:
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 .whl ou .tar.gz arquivo para Python 3.8 e arquivo .whl para Python 3.10.
Insira um nome e selecione a Versão do Runtime como Python 3.8 ou Python 3.10.
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.
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.
Execute 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.