다음을 통해 공유


Azure Automation에서 Python 3 패키지 관리

이 문서에서는 Azure 샌드박스 환경 및 Hybrid Runbook Worker에서 실행되는 Azure Automation에서 Python 3 패키지를 가져오고 관리하고 사용하는 방법을 설명합니다. 성공적인 작업 실행을 위해 Python 패키지를 Hybrid Runbook 작업자에 다운로드해야 합니다. Runbook을 단순화하기 위해 Python 패키지를 사용하여 필요한 모듈을 가져올 수 있습니다.

Python 2 패키지 관리에 대한 자세한 내용은 Python 2 패키지 관리를 참조하세요.

기본 Python 패키지

자동화 서비스에서 Python 3.8 Runbook을 지원하기 위해 일부 Python 패키지가 기본적으로 설치되며 이러한 패키지 목록은 여기에 있습니다. Python 패키지를 Automation 계정으로 가져와서 기본 버전을 재정의할 수 있습니다.

Automation 계정에서 가져온 버전이 선호됩니다. 단일 패키지를 가져오려면 패키지 가져오기를 참조하세요. 여러 패키지가 포함된 패키지를 가져오려면 종속성이 있는 패키지 가져오기를 참조하세요.

참고 항목

Python 3.10(미리 보기)용으로 설치된 기본 패키지가 없습니다.

원본 파일 형태의 패키지

Azure Automation은 Python 코드만 있고 다른 언어 확장이나 다른 언어로 작성된 코드는 포함하지 않은 Python 패키지만 지원합니다. 그러나 Azure 샌드박스 환경에 C/C++ 바이너리에 필요한 컴파일러가 없을 수 있으므로 whl 파일을 대신 사용하는 것이 좋습니다.

참고 항목

현재 Python 3.10(미리 보기)은 휠 파일만 지원합니다.

PyPI(Python Package Index)는 Python 프로그래밍 언어용 소프트웨어의 리포지토리입니다. PyPI에서 Automation 계정으로 가져올 Python 3 패키지를 선택할 때는 다음 파일 이름 부분에 유의하세요.

Python 버전 선택:

파일 이름 부분 설명
cp38 Automation은 클라우드 작업에 Python 3.8을 지원합니다.
amd64 Azure 샌드박스 프로세스는 Windows 64비트 아키텍처입니다.

예시:

  • Pandas를 가져오려면 - pandas-1.2.3-cp38-win_amd64.whl과 유사한 이름을 가진 휠 파일을 선택합니다.

PyPI에서 사용할 수 있는 일부 Python 패키지는 whl 파일을 제공하지 않습니다. 이 경우 소스(.zip 또는 .tar.gz 파일)를 다운로드하고 pip를 사용하여 whl 파일을 생성합니다.

Python 3.8.x 및 휠 패키지가 설치된 64비트 Windows 컴퓨터를 사용하여 다음 단계를 수행합니다.

  1. 소스 파일 pandas-1.2.4.tar.gz를 다운로드합니다.
  2. pip wheel --no-deps pandas-1.2.4.tar.gz 명령으로 pip를 실행하여 whl 파일을 가져옵니다.

패키지 가져오기

  1. Automation 계정의 공유 리소스 아래에서 Python 패키지를 선택합니다. 그런 다음, + Python 패키지 추가를 선택합니다.

    왼쪽 메뉴에 Python 패키지가 표시되고 강조 표시된 Python 패키지 추가가 표시된 Python 패키지 페이지 스크린샷.

  2. Python 패키지 추가 페이지에서 업로드할 로컬 패키지를 선택합니다. 패키지는 Python 3.8의 경우 .whl 또는 .tar.gz 파일이고 Python 3.10(미리 보기)의 경우 .whl 파일일 수 있습니다.

  3. 이름을 입력하고 런타임 버전을 Python 3.8 또는 Python 3.10(미리 보기)으로 선택합니다.

    참고 항목

    현재 Python 3.10(미리 보기) 런타임 버전은 오스트레일리아 중부2, 한국 남부, 스웨덴 남부, Jio 인도 중부, 브라질 남동부, 인도 중부, 인도 서부, 아랍에미리트 중부 및 Gov 클라우드를 제외한 모든 공용 지역의 클라우드 및 하이브리드 작업에 대해 지원됩니다.

  4. 가져오기를 선택합니다.

    스크린샷은 업로드된 tar.gz 파일이 선택된 Python 3.8 패키지 추가 페이지 추가를 표시합니다.

패키지를 가져온 후에는 Automation 계정의 Python 패키지 페이지에 나열됩니다. 패키지를 제거하려면 패키지를 선택하고 삭제를 선택합니다.

스크린샷은 패키지를 가져온 후의 Python 3.8 패키지 페이지를 표시합니다.

종속성이 있는 패키지 가져오기

다음 Python 스크립트를 Python 3.8 Runbook으로 가져와서 Python 3.8 패키지 및 해당 종속성을 가져올 수 있습니다. Automation 계정에 대해 관리 ID가 활성화되어 있고 성공적인 패키지 가져오기를 위한 Automation 기여자 액세스 권한이 있는지 확인합니다.

https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py

Runbook에 스크립트 가져오기

Runbook 가져오기에 대한 정보는 Azure Portal에서 Runbook 가져오기를 참조하세요. 가져오기를 실행하기 전에, GitHub의 파일을 포털이 액세스할 수 있는 스토리지에 복사합니다.

참고 항목

현재 Azure Portal에서 Runbook 가져오기는 Python 3.10(미리 보기)에서 지원되지 않습니다.

Runbook 가져오기 페이지는 기본적으로 스크립트 이름과 일치하도록 Runbook 이름을 설정합니다. 필드에 대한 액세스 권한이 있는 경우 이름을 변경할 수 있습니다. Runbook 유형은 기본적으로 Python 2.7일 수 있습니다. 그렇다면 Python 3.8로 변경해야 합니다.

스크린샷은 Python 3 Runbook 가져오기 페이지를 표시합니다.

Runbook을 실행하여 패키지 및 종속성 가져오기

Runbook을 만들고 게시한 후에는 실행하여 패키지를 가져옵니다. Runbook 실행에 대한 세부 정보는 Azure Automation에서 Runbook 시작을 참조하세요.

스크립트(import_py3package_from_pypi.py)에는 다음 매개 변수가 필요합니다.

매개 변수 설명
subscription_id Automation 계정의 구독 ID
resource_group Automation 계정이 정의된 리소스 그룹의 이름
automation_account Automation 계정 이름
module_name pypi.org에서 가져올 모듈의 이름
모듈 버전 모듈의 버전

매개 변수 값은 아래 형식의 단일 문자열로 제공되어야 합니다.

-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>

Runbook에서의 매개 변수 사용에 대한 자세한 정보는 Runbook 매개 변수 작업을 참조하세요.

Runbook에서 패키지 사용

패키지를 가져오면 Runbook에서 사용할 수 있습니다. 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)

참고 항목

Python automationassets 패키지는 pypi.org에서 사용할 수 없으므로 Windows Hybrid Runbook Worker로 가져올 수 없습니다.

샌드박스에서 사용 가능한 패키지 식별

다음 코드를 사용하여 기본 설치된 모듈을 나열합니다.

#!/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)

Python 3.8 PowerShell cmdlet

새 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 

모든 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 

특정 패키지에 대한 세부 정보 가져오기

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 

Python 3.8 패키지 제거

Remove-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name sockets 

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 

다음 단계

Python Runbook을 준비하려면 Python Runbook 만들기를 참조하세요.