Azure CLI에서 Azure REST API 사용
REST(표현 상태 전송) API 는 다양한 HTTP 작업(또는 메서드) 집합을 지원하는 서비스 엔드포인트입니다. 이러한 HTTP 메서드를 사용하면 서비스의 리소스에 대해 다른 작업을 수행할 수 있습니다. 이 az rest
명령은 기존 Azure CLI 명령을 사용할 수 없는 경우에만 사용해야 합니다.
이 문서에서는 Azure Container Registry 리소스를 관리하기 위한 PUT, PATCH, GET, POST 및 DELETE HTTP 요청을 보여 줍니다. Azure Container Registry는 컨테이너 이미지 및 관련 아티팩트를 저장하는 Azure 컨테이너 레지스트리를 만들고 유지 관리할 수 있는 관리되는 레지스트리 서비스입니다.
필수 조건
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
사용 팁 az rest
다음은 az rest로 작업할 때 유용한 정보입니다.
- 이
az rest
명령은 로그인한 자격 증명을 사용하여 자동으로 인증합니다. - 권한 부여 헤더가 설정되지 않은 경우 Microsoft Entra ID에서 검색되는 헤더
Authorization: Bearer <token>
<token>
를 연결합니다. - 명령의 출력에서
--url
엔드포인트로 매개 변수가--url
시작될 때 토큰의az cloud show --query endpoints
대상 리소스가 매개 변수에서 파생됩니다. 필요한 매개 변수입니다--url
. - 사용자 지정 리소스에
--resource
대한 매개 변수를 사용합니다. - Content-Type 헤더가 설정
--body
되지 않고 유효한 JSON 문자열인 경우 Content-Type 헤더는 기본적으로 "application/json"으로 설정됩니다. - OData 형식의 요청에 사용할
--uri-parameters
경우 다른 환경에서 이스케$
이프해야 합니다. in ,$
escapeBash
as\$
and inPowerShell
, escape$
as`$
.
PUT을 사용하여 Azure Container Registry 만들기
PUT HTTP 메서드를 사용하여 새 Azure Container Registry를 만듭니다.
# Command format example
az rest --method put \
--url https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>?api-version=2023-01-01-preview \
--body "{'location': '<locationName>', 'sku': {'name': '<skuName>'}, 'properties': {'adminUserEnabled': '<propertyValue>'}}"
다음은 완료된 매개 변수를 사용하는 예제입니다.
# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
subscriptionId="00000000-0000-0000-0000-000000000000"
resourceGroup="msdocs-app-rg$randomIdentifier"
containerRegistryName="msdocscr$randomIdentifier"
locationName="westus"
skuName="Standard"
propertyValue="true"
# Create resource group
az group create --name $resourceGroup --location $locationName --output json
# Invoke request
az rest --method put \
--url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview \
--body "{'location': '$locationName', 'sku': {'name': '$skuName'}, 'properties': {'adminUserEnabled': '$propertyValue'}}"
Bash 및 Powershell 모두에 대한 JSON 출력:
{
"id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>",
"location": "<location>",
"name": "<containerRegistryName>",
"properties": {
"adminUserEnabled": true,
"anonymousPullEnabled": false,
"creationDate": "2024-01-03T18:38:36.7089583Z",
"dataEndpointEnabled": false,
"dataEndpointHostNames": [],
"encryption": {
"status": "disabled"
},
"loginServer": "<containerRegistryName>.azurecr.io",
"networkRuleBypassOptions": "AzureServices",
"policies": {
"azureADAuthenticationAsArmPolicy": {
"status": "enabled"
},
"exportPolicy": {
"status": "enabled"
},
"quarantinePolicy": {
"status": "disabled"
},
"retentionPolicy": {
"days": 7,
"lastUpdatedTime": "2024-01-03T19:44:53.9770581+00:00",
"status": "disabled"
},
"softDeletePolicy": {
"lastUpdatedTime": "2024-01-03T19:44:53.9771117+00:00",
"retentionDays": 7,
"status": "disabled"
},
"trustPolicy": {
"status": "disabled",
"type": "Notary"
}
},
"privateEndpointConnections": [],
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"zoneRedundancy": "Disabled"
},
"sku": {
"name": "Standard",
"tier": "Standard"
},
"systemData": {
"createdAt": "2024-01-03T18:38:36.7089583+00:00",
"createdBy": "<username>@microsoft.com",
"createdByType": "User",
"lastModifiedAt": "2024-01-03T19:44:53.684342+00:00",
"lastModifiedBy": "<username>@microsoft.com",
"lastModifiedByType": "User"
},
"tags":{},
"type": "Microsoft.ContainerRegistry/registries"
}
PATCH를 사용하여 Azure Container Registry 업데이트
PATCH HTTP 요청을 사용하여 Azure Container Registry를 업데이트합니다. --body
업데이트하려는 속성을 사용하여 매개 변수를 편집합니다. 이 예제에서는 이전 섹션에 설정된 변수를 사용하고 Azure Container Registry의 SKU 이름($skuName="프리미엄")을 업데이트합니다.
#Variable Block
$skuName="Premium"
az rest --method patch \
--url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview \
--body "{'location': '$locationName', 'sku': {'name': '$skuName'}, 'properties': {'adminUserEnabled': '$propertyValue'}}"
다음 JSON 사전 출력에는 간결성을 위해 생략된 필드가 있습니다.
{
"id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>",
"location": "westus",
"name": "<containerRegistryName>",
"properties": {...},
"sku": {
"name": "Premium",
"tier": "Premium"
},
"systemData": {...},
"type": "Microsoft.ContainerRegistry/registries"
}
GET을 사용하여 Azure Container Registry 검색
GET HTTP 요청을 사용하여 PATCH 요청의 업데이트 결과를 확인합니다. 이 예제에서는 이전 섹션에서 설정한 변수를 사용합니다.
az rest --method get \
--url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview
GET 메서드의 출력은 PUT에 표시된 출력과 동일합니다.
POST를 사용하여 Azure Container Registry 자격 증명 다시 생성
POST HTTP 요청을 사용하여 이 문서에서 만든 Azure Container Registry에 대한 로그인 자격 증명 중 하나를 다시 생성합니다.
# Variable block
$passwordValue="password"
az rest --method post \
--url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName/regenerateCredential?api-version=2023-01-01-preview \
--body "{'name': '$passwordValue'}"
다음 JSON 사전 출력에는 간결성을 위해 생략된 필드가 있습니다.
{
"passwords": [
{
"name": "password",
"value": "<passwordValue>"
},
{
"name": "password2",
"value": "<passwordValue2>"
}
],
"username": "<containerRegistryName>"
}
요청이 완료되면 지정된 Azure Container Registry 자격 증명이 기존 암호(암호2)와 함께 새 암호로 다시 생성됩니다.
DELETE를 사용하여 Azure Container Registry 삭제
DELETE HTTP 요청을 사용하여 기존 Azure Container Registry를 삭제합니다.
az rest --method delete \
--url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview
Microsoft Graph에 대한 추가 az rest
예제
경우에 따라 다른 시나리오에 대한 예제를 확인하는 데 도움이 되므로 Microsoft Graph API를 사용하는 예제는 다음과 같습니다. 애플리케이션에 대한 리디렉션 URI를 업데이트하려면 다음 코드와 같이 애플리케이션 업데이트 REST API를 호출합니다.
# Get the application
az rest --method GET \
--uri 'https://graph.microsoft.com/v1.0/applications/b4e4d2ab-e2cb-45d5-a31a-98eb3f364001'
# Update `redirectUris` for `web` property
az rest --method PATCH \
--uri 'https://graph.microsoft.com/v1.0/applications/b4e4d2ab-e2cb-45d5-a31a-98eb3f364001' \
--body '{"web":{"redirectUris":["https://myapp.com"]}}'
리소스 정리
이 문서에서 만든 리소스를 완료하면 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹의 모든 리소스가 삭제됩니다.
az group delete --resource-group <resourceGroupName>
참고 항목
- Azure REST API 참조
- az resource command
Azure CLI