이 빠른 시작에서는 Azure Python SDK를 사용하여 Azure Database for PostgreSQL 유연한 서버 인스턴스와 상호 작용하는 방법을 알아봅니다.
Azure Database for PostgreSQL 유연한 서버는 클라우드에서 고가용성 PostgreSQL 데이터베이스를 실행, 관리 및 확장하기 위한 관리되는 서비스입니다. Python SDK를 사용하여 Azure Database for PostgreSQL 유연한 서버 인스턴스, 여러 서버 또는 서버의 여러 데이터베이스를 프로비전할 수 있습니다.
이 라이브러리로 다음 작업을 수행할 수 있습니다.
- PostgreSQL 유연한 서버 만들기
- 데이터베이스 관리
- 방화벽 규칙 구성
- 크기 조정 작업
- 백업 및 복원
이 가이드에서는 유연한 서버 인스턴스 만들기, 만든 서버 검토, 데이터베이스 만들기 및 인스턴스 삭제를 포함하여 이 SDK의 기본 기능을 탐색하는 데 도움이 됩니다.
필수 조건
활성 구독이 있는 계정
활성 구독이 있는 Azure 계정이 필요합니다. 무료로 하나 만들 수 있습니다.
라이브러리 설치
다음 Azure Python 라이브러리를 설치합니다.
pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers
로그인 명령 실행
azurecli
를 사용하여 계정을 인증하고 로그인하세요.
az login
이 명령이 실행되면 로그인할 유효한 계정을 선택하고 나중에 로그인할 목록에서 구독 ID를 선택합니다.
서버 만들기
create_postgres_flexible_server.py
파일을 만들고 다음 코드를 포함합니다.
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id="<subscription-id>",
)
response = client.servers.begin_create(
resource_group_name="<resource-group-name>",
server_name="<server-name>",
parameters={
"location": "<region>",
"properties": {
"administratorLogin": "<admin-username>",
"administratorLoginPassword": "<password>",
"availabilityZone": "1",
"backup": {"backupRetentionDays": 7, "geoRedundantBackup": "Disabled"},
"createMode": "Create",
"highAvailability": {"mode": "ZoneRedundant"},
"network": {
"delegatedSubnetResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
"privateDnsZoneArmResourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Network/privateDnsZones/<private-DNS-zone-name>.postgres.database.azure.com",
},
"version": "<pg-version>",
},
"sku": {"name": "<sku-name>", "tier": "<tier-type>"},
"tags": {"ElasticServer": "1"},
},
).result()
print(response)
if __name__ == "__main__":
main()
다음 매개 변수를 데이터로 바꿉니다.
- subscription-id: 사용자 고유의 구독 ID입니다.
- resource-group: 사용하려는 리소스 그룹의 이름을 지정합니다. 존재하지 않는 경우 스크립트는 새 스크립트를 만듭니다.
- server-name: Azure Database for PostgreSQL 유연한 서버 인스턴스를 식별하는 고유한 이름입니다. 도메인 이름은
postgres.database.azure.com
사용자가 제공한 서버 이름에 추가됩니다. 서버 이름은 3자 이상, 최대 63자여야 하며 소문자, 숫자 및 하이픈만 포함할 수 있습니다. - 위치: Azure Database for PostgreSQL 유연한 서버 인스턴스를 만들려는 Azure 지역입니다. 서버와 해당 데이터가 상주하는 지리적 위치를 정의합니다. 대기 시간을 줄이기 위해 사용자와 가까운 지역을 선택합니다. 위치는 Azure 지역 짧은 이름 형식(예:
westus2
,eastus
또는northeurope
.)으로 지정해야 합니다. - admin-username: 서버의 기본 관리자 사용자 이름입니다. 서버를 만든 후에는 추가 사용자를 만들 수 있습니다.
- 암호: 서버의 기본 관리자에 대한 암호입니다. 8~128자 사이여야 합니다. 암호에는 영어 대문자, 영어 소문자, 숫자(0~9) 및 숫자가 아닌 문자(!, $, #, %등)의 세 가지 범주의 문자가 포함되어야 합니다.
vnet-name, 서브넷 이름, private-DNS 영역과 같은 다른 매개 변수에 대한 값을 추가하고 스토리지 크기, 엔진 버전 등과 같은 다른 매개 변수를 사용자 지정할 수도 있습니다.
참고
DefaultAzureCredential 클래스는 환경 변수, 관리 ID 또는 Azure CLI와 같은 다양한 메서드를 사용하여 인증을 시도합니다.
이러한 방법 중 하나가 설정되어 있는지 확인합니다. Azure SDK 설명서에서 인증에 대한 자세한 내용을 확인할 수 있습니다.
이 코드를 실행하면 인스턴스 만들기 프로세스가 시작되며 완료하는 데 몇 분 정도 걸릴 수 있습니다.
배포된 리소스 검토
Python SDK, Azure Portal, Azure CLI, Azure PowerShell 및 기타 다양한 도구를 사용하여 배포의 유효성을 검사하고 배포된 리소스를 검토할 수 있습니다. 아래에는 몇 가지 예가 나와 있습니다.
Python SDK를 사용하여 배포 유효성 검사
check_server_created
함수를 기존 스크립트에 추가하여 PostgreSQLManagementClient 인스턴스의 서버 특성을 사용하여 Azure Database for PostgreSQL 유연한 서버 인스턴스가 만들어졌는지 확인합니다.
def check_server_created(subscription_id, resource_group, server_name):
# Authenticate with your Azure account
credential = DefaultAzureCredential()
# Create PostgreSQL management client
postgres_client = PostgreSQLManagementClient(credential, subscription_id)
try:
server = postgres_client.servers.get(resource_group, server_name)
if server:
print(f"Server '{server_name}' exists in resource group '{resource_group}'.")
print(f"Server state: {server.state}")
else:
print(f"Server '{server_name}' not found in resource group '{resource_group}'.")
except Exception as e:
print(f"Error occurred: {e}")
print(f"Server '{server_name}' not found in resource group '{resource_group}'.")
적절한 매개 변수를 사용하여 호출합니다.
check_server_created(subscription_id, resource_group, server_name)
참고
이 함수는 check_server_created
서버가 프로비전되는 즉시 서버 상태를 반환합니다. 그러나 서버를 완전히 사용할 수 있게 되는 데 몇 분 정도 걸릴 수 있습니다. 서버에 연결하기 전에 서버가 준비될 때까지 기다려야 합니다. postgres_client.servers.get 메서드에 대한 응답으로 상태, ID, 이름, 위치 및 기타 매개 변수를 반환합니다.
Python을 사용하여 데이터베이스 만들기
이 샘플 코드를 사용하여 유연한 서버에 데이터베이스 만들기
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id=<subscription-id>,
)
# Create database
response = client.databases.begin_create(
resource_group_name="<resource-group-name>",
server_name="<server-name>",
database_name="<database-name>",
parameters={"properties": {"charset": "utf8", "collation": "en_US.utf8"}},
).result()
print(response)
if __name__ == "__main__":
main()
다음 매개 변수를 데이터로 바꾸기
- subscription-id: 사용자 고유 의 구독 ID입니다.
- resource-group-name: 사용하려는 리소스 그룹의 이름을 지정합니다. 새 리소스 그룹이 없으면 스크립트는 새 리소스 그룹을 만듭니다.
- sever-name: 이전에 만든 Azure 데이터베이스 유연한 서버 인스턴스의 이름
- database-name: 만들려는 데이터베이스의 이름입니다.
리소스 정리
Azure Database for PostgreSQL 유연한 서버 인스턴스가 더 이상 필요하지 않은 경우 포털, Python SDK 또는 Azure CLI를 사용하여 해당 인스턴스 및 관련 리소스 그룹을 삭제할 수 있습니다.
Python SDK를 사용하여 인스턴스 삭제
만든 Azure Databases for PostgreSQL 서버 인스턴스를 삭제하는 'delete_server.py' 파일을 만듭니다.
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id=<subscription-id>,)
client.servers.begin_delete(
resource_group_name=<rg-name>,
server_name=<server-name>,
).result()
if __name__ == "__main__":
main()