이 빠른 시작에서는 사용자 지정 리소스 공급자를 만들고 해당 리소스 공급자에 대한 사용자 지정 리소스를 배포합니다. 사용자 지정 리소스 공급자에 대한 자세한 내용은 Azure 사용자 지정 리소스 공급자 개요를 참조하세요.
필수 조건
- Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
- 이 빠른 시작 가이드의 단계를 완료하려면
REST작업을 호출해야 합니다. REST 요청을 보내는 방법에는 여러 가지가 있습니다.
Azure CLI에 대한 환경을 준비합니다.
Bash 환경을 Azure Cloud Shell에서 사용합니다. 자세한 내용은 Azure Cloud Shell 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치하십시오. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 Azure에 인증을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI로 확장 사용 및 관리를 참조하세요.
az version을 실행하여 설치된 버전과 관련 종속 라이브러리를 확인합니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
Azure CLI 예제는 az rest를 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"
}
]
}
사용자 지정 리소스 공급자 명령
사용자 지정 공급자 명령을 사용하여 사용자 지정 리소스 공급자와 작업합니다.
사용자 지정 리소스 공급자 나열
이 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 명령은 사용자에게 메시지를 표시하고 사용자 지정 리소스 공급자만 삭제합니다. 스토리지 계정, 앱 서비스 및 App Service 계획은 삭제되지 않습니다. 공급자가 삭제되면 명령 프롬프트로 돌아갑니다.
az custom-providers resource-provider delete --resource-group $rgName --name $funcName
자원을 정리하세요
이 문서에서 만든 리소스를 완료한 경우 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹의 모든 리소스가 삭제됩니다.
az group delete --resource-group $rgName
다음 단계
사용자 지정 리소스 공급자에 대한 소개는 다음 문서를 참조하세요.