이 예제에서는 Python 스크립트에서 Azure SDK 관리 라이브러리를 사용하여 두 가지 작업을 수행하는 방법을 보여 줍니다.
- Azure 구독의 모든 리소스 그룹을 나열합니다.
- 특정 리소스 그룹 내의 리소스를 나열합니다.
이 문서의 모든 명령은 명시되지 않은 한 Linux/macOS bash 및 Windows 명령 셸에서 동일하게 작동합니다.
해당하는 Azure CLI 명령은 이 문서의 뒷부분에 나와 있습니다.
1: 로컬 개발 환경 설정
아직 실행하지 않은 경우 이 코드를 실행할 수 있는 환경을 설정합니다. 몇 가지 옵션은 다음과 같습니다.
- 선택한 도구를 사용하거나
venv
, Python 가상 환경을 구성합니다. 가상 환경 사용을 시작하려면 가상 환경을 활성화해야 합니다. Python을 설치하려면 Python 설치를 참조하세요.
#!/bin/bash
# Create a virtual environment
python -m venv .venv
# Activate the virtual environment
source .venv/Scripts/activate # only required for Windows (Git Bash)
conda 환경을 사용합니다. Conda를 설치하려면 Miniconda 설치를 참조하세요.
Visual Studio Code 또는 GitHub Codespaces에서 개발 컨테이너를 사용합니다.
2: Azure 라이브러리 패키지 설치
다음 내용이 포함된 requirements.txt 파일을 만듭니다.
azure-mgmt-resource
azure-identity
가상 환경이 활성화된 터미널 또는 명령 프롬프트에서 요구 사항을 설치합니다.
pip install -r requirements.txt
3: 리소스 그룹 작업을 위한 코드 작성
3a. 구독의 리소스 그룹 나열
다음 코드를 사용하여 list_groups.py 이라는 Python 파일을 만듭니다. 주석은 세부 정보를 설명합니다.
# Import the needed credential and management objects from the libraries.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
import os
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Retrieve the list of resource groups
group_list = resource_client.resource_groups.list()
# Show the groups in formatted output
column_width = 40
print("Resource Group".ljust(column_width) + "Location")
print("-" * (column_width * 2))
for group in list(group_list):
print(f"{group.name:<{column_width}}{group.___location}")
3b. 특정 리소스 그룹 내의 리소스 나열
다음 코드를 사용하여 list_resources.py 이라는 Python 파일을 만듭니다. 주석은 세부 정보를 설명합니다.
기본적으로 코드는 "myResourceGroup"의 리소스를 나열합니다. 다른 리소스 그룹을 사용하려면 환경 변수를 RESOURCE_GROUP_NAME
원하는 그룹 이름으로 설정합니다.
# Import the needed credential and management objects from the libraries.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
import os
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Retrieve the resource group to use, defaulting to "myResourceGroup".
resource_group = os.getenv("RESOURCE_GROUP_NAME", "myResourceGroup")
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Retrieve the list of resources in "myResourceGroup" (change to any name desired).
# The expand argument includes additional properties in the output.
resource_list = resource_client.resources.list_by_resource_group(
resource_group, expand = "createdTime,changedTime")
# Show the groups in formatted output
column_width = 36
print("Resource".ljust(column_width) + "Type".ljust(column_width)
+ "Create date".ljust(column_width) + "Change date".ljust(column_width))
print("-" * (column_width * 4))
for resource in list(resource_list):
print(f"{resource.name:<{column_width}}{resource.type:<{column_width}}"
f"{str(resource.created_time):<{column_width}}{str(resource.changed_time):<{column_width}}")
코드의 인증
이 문서의 뒷부분에서 Azure CLI를 사용하여 Azure에 로그인하여 샘플 코드를 실행합니다. 계정에 Azure 구독에서 리소스 그룹을 만들고 나열할 수 있는 권한이 있는 경우 코드가 성공적으로 실행됩니다.
프로덕션 스크립트에서 이러한 코드를 사용하려면 인증에 서비스 주체 기반 방법을 사용하도록 환경 변수를 설정할 수 있습니다. 자세한 내용은 Azure 서비스를 사용하여 Python 앱을 인증하는 방법을 참조하세요. 서비스 주체가 구독에서 리소스 그룹을 만들고 나열할 수 있는 충분한 권한이 있는지 확인하기 위해 적절한 Azure 역할을 할당해야 합니다. 예를 들어, 구독에 대한 기여자 역할을 할당하는 것입니다.
코드에 사용되는 클래스에 대한 참조 링크
4: 스크립트 실행
아직 로그인하지 않은 경우 Azure CLI를 사용하여 Azure에 로그인합니다.
az login
환경 변수를
AZURE_SUBSCRIPTION_ID
구독 ID로 설정합니다. ( az account show 명령을 실행하고 출력의 속성에서 구독 ID를id
가져올 수 있습니다.)export AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
구독의 모든 리소스 그룹을 나열합니다.
python list_groups.py
리소스 그룹의 모든 리소스를 나열합니다.
python list_resources.py
기본적으로 코드는 "myResourceGroup"의 리소스를 나열합니다. 다른 리소스 그룹을 사용하려면 환경 변수를
RESOURCE_GROUP_NAME
원하는 그룹 이름으로 설정합니다.
참조: 동등한 Azure CLI 명령
다음 Azure CLI 명령은 구독의 리소스 그룹을 나열합니다.
az group list
다음 명령은 중앙 지역의 "myResourceGroup" 내의 리소스를 나열합니다( ___location
인수는 특정 데이터 센터를 식별하는 데 필요합니다.)
az resource list --resource-group myResourceGroup --___location centralus