빠른 시작: Azure 사용자 지정 리소스 공급자 만들기 및 사용자 지정 리소스 배포
이 빠른 시작에서는 사용자 지정 리소스 공급자를 만들고 해당 리소스 공급자를 위한 사용자 지정 리소스를 배포합니다. 사용자 지정 리소스 공급자에 대한 자세한 내용은 Azure 사용자 지정 리소스 공급자 개요를 참조하세요.
필수 조건
- Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- 이 빠른 시작의 단계를 완료하려면
REST
작업을 호출해야 합니다. REST 요청을 전송하는 여러 가지 방법이 있습니다.
Azure CLI에 대한 환경을 준비합니다.
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를 실행합니다.
Azure CLI 예제에서는 REST
요청에 대해 az rest
를 사용합니다. 자세한 내용은 az rest를 참조하세요.
사용자 지정 리소스 공급자 배포
사용자 지정 공급자를 설정하려면 예제 템플릿을 사용자의 Azure 구독에 배포합니다.
이 템플릿은 구독에 다음 리소스를 배포합니다.
- 리소스 및 동작에 대한 작업을 사용하는 함수 앱
- 사용자 지정 공급자를 통해 생성된 사용자를 저장하기 위한 스토리지 계정
- 사용자 지정 리소스 형식 및 동작을 정의하는 사용자 지정 공급자 요청을 보내기 위한 함수 앱 엔드포인트를 사용합니다.
- 사용자 지정 리소스 공급자의 사용자 지정 리소스
사용자 지정 리소스 공급자를 배포하려면 Azure CLI, PowerShell 또는 Azure Portal을 사용합니다.
이 예제에서는 리소스 그룹, 위치 및 공급자의 함수 앱 이름을 입력하라는 메시지를 표시합니다. 이름은 다른 명령에 사용되는 변수에 저장됩니다. az group create 및 az deployment group create 명령을 통해 리소스를 배포합니다.
read -p "Enter a resource group name:" rgName &&
read -p "Enter the location (i.e. eastus):" location &&
read -p "Enter the provider's function app name:" funcName &&
templateUri="https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/custom-providers/customprovider.json" &&
az group create --name $rgName --location "$location" &&
az deployment group create --resource-group $rgName --template-uri $templateUri --parameters funcName=$funcName &&
echo "Press [ENTER] to continue ..." &&
read
Azure Portal에서 템플릿을 배포하려면 Azure에 배포 단추를 선택합니다.
사용자 지정 공급자 및 리소스 보기
포털에서 사용자 지정 공급자는 숨겨진 리소스 형식입니다. 리소스 공급자가 배포되었는지 확인하려면 리소스 그룹으로 이동하여 숨겨진 유형 표시를 선택합니다.
배포한 사용자 지정 리소스를 확인하려면 리소스 유형에 대해 GET
작업을 사용합니다. JSON 응답에 표시된 리소스 유형 Microsoft.CustomProviders/resourceProviders/users
에는 템플릿에서 만든 리소스가 포함됩니다.
GET https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users?api-version=2018-09-01-preview
subID=$(az account show --query id --output tsv)
requestURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users?api-version=2018-09-01-preview"
az rest --method get --uri $requestURI
다음과 같은 응답이 수신됩니다.
{
"value": [
{
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
"name": "ana",
"properties": {
"FullName": "Ana Bowman",
"Location": "Moon",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
}
]
}
호출 동작
사용자 지정 공급자에는 ping
이라는 동작도 있습니다. 요청을 처리하는 코드는 함수 앱에서 구현됩니다. ping
동작은 인사말을 사용하여 회신합니다.
ping
요청을 보내려면 동작에 대해 POST
작업을 사용합니다.
POST https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/ping?api-version=2018-09-01-preview
pingURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/ping?api-version=2018-09-01-preview"
az rest --method post --uri $pingURI
다음과 같은 응답이 수신됩니다.
{
"message": "hello <function-name>.azurewebsites.net",
"pingcontent": {
"source": "<function-name>.azurewebsites.net"
}
}
PUT을 사용하여 리소스 만들기
이 빠른 시작에서 템플릿은 리소스 유형 Microsoft.CustomProviders/resourceProviders/users
를 사용하여 리소스를 배포했습니다. PUT
작업을 사용하여 리소스를 만들 수도 있습니다. 예를 들어 리소스가 템플릿과 함께 배포되지 않은 경우 PUT
작업은 리소스를 만듭니다.
이 예제에서는 템플릿이 이미 리소스를 배포했기 때문에 PUT
작업은 새 리소스를 만듭니다.
PUT https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/<resource-name>?api-version=2018-09-01-preview
{"properties":{"FullName": "Test User", "Location": "Earth"}}
addURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users/testuser?api-version=2018-09-01-preview"
az rest --method put --uri $addURI --body "{'properties':{'FullName': 'Test User', 'Location': 'Earth'}}"
다음과 같은 응답이 수신됩니다.
{
"id": "/subscriptions/<sub-ID>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
"name": "testuser",
"properties": {
"FullName": "Test User",
"Location": "Earth",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
}
사용자 지정 리소스 공급자 및 리소스 보기 섹션에서 GET
작업을 다시 실행하여 생성된 두 리소스를 표시할 수 있습니다. 이 예제에서는 Azure CLI 명령의 출력을 보여 줍니다.
{
"value": [
{
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
"name": "ana",
"properties": {
"FullName": "Ana Bowman",
"Location": "Moon",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
},
{
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
"name": "testuser",
"properties": {
"FullName": "Test User",
"Location": "Earth",
"provisioningState": "Succeeded"
},
"type": "Microsoft.CustomProviders/resourceProviders/users"
}
]
}
사용자 지정 리소스 공급자 명령
custom-providers 명령을 사용하여 사용자 지정 리소스 공급자를 사용할 수 있습니다.
사용자 지정 리소스 공급자 나열
list
명령을 사용하여 구독에 있는 모든 사용자 지정 리소스 공급자를 표시합니다. 기본값은 현재 구독의 사용자 지정 리소스 공급자를 나열하거나 --subscription
매개 변수를 지정할 수 있습니다. 리소스 그룹을 나열하려면 --resource-group
매개 변수를 사용합니다.
az custom-providers resource-provider list --subscription $subID
[
{
"actions": [
{
"endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
"name": "ping",
"routingType": "Proxy"
}
],
"id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceproviders/<provider-name>",
"location": "eastus",
"name": "<provider-name>",
"provisioningState": "Succeeded",
"resourceGroup": "<rg-name>",
"resourceTypes": [
{
"endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
"name": "users",
"routingType": "Proxy, Cache"
}
],
"tags": {},
"type": "Microsoft.CustomProviders/resourceproviders",
"validations": null
}
]
속성 표시
show
명령을 사용하여 사용자 지정 리소스 공급자의 속성을 표시합니다. 출력 형식은 list
출력과 비슷합니다.
az custom-providers resource-provider show --resource-group $rgName --name $funcName
새 리소스 만들기
create
명령을 사용하여 사용자 지정 리소스 공급자를 만들거나 업데이트합니다. 이 예제에서는 actions
및 resourceTypes
를 업데이트합니다.
az custom-providers resource-provider create --resource-group $rgName --name $funcName \
--action name=ping endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type=Proxy \
--resource-type name=users endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type="Proxy, Cache"
"actions": [
{
"endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
"name": "ping",
"routingType": "Proxy"
}
],
"resourceTypes": [
{
"endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
"name": "users",
"routingType": "Proxy, Cache"
}
],
공급자의 태그를 업데이트합니다.
update
명령은 사용자 지정 리소스 공급자에 대한 태그만 업데이트합니다. Azure Portal에서 사용자 지정 리소스 공급자의 앱 서비스는 태그를 표시합니다.
az custom-providers resource-provider update --resource-group $rgName --name $funcName --tags new=tag
"tags": {
"new": "tag"
},
사용자 지정 리소스 공급자 삭제
delete
명령은 사용자 지정 리소스 공급자만 표시하고 삭제합니다. 스토리지 계정, 앱 서비스 및 앱 서비스 계획은 삭제되지 않습니다. 공급자를 삭제한 후 명령 프롬프트로 돌아갑니다.
az custom-providers resource-provider delete --resource-group $rgName --name $funcName
리소스 정리
이 문서에서 만든 리소스를 다 사용한 경우 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹의 모든 리소스가 삭제됩니다.
az group delete --resource-group $rgName
다음 단계
사용자 지정 리소스 공급자에 대한 소개는 다음 문서를 참조하세요.