빠른 시작: Azure 사용자 지정 리소스 공급자 만들기 및 사용자 지정 리소스 배포

이 빠른 시작에서는 사용자 지정 리소스 공급자를 만들고 해당 리소스 공급자를 위한 사용자 지정 리소스를 배포합니다. 사용자 지정 리소스 공급자에 대한 자세한 내용은 Azure 사용자 지정 리소스 공급자 개요를 참조하세요.

필수 조건

Azure CLI에 대한 환경을 준비합니다.

Azure CLI 예제에서는 REST 요청에 대해 az rest를 사용합니다. 자세한 내용은 az rest를 참조하세요.

사용자 지정 리소스 공급자 배포

사용자 지정 공급자를 설정하려면 예제 템플릿을 사용자의 Azure 구독에 배포합니다.

이 템플릿은 구독에 다음 리소스를 배포합니다.

  • 리소스 및 동작에 대한 작업을 사용하는 함수 앱
  • 사용자 지정 공급자를 통해 생성된 사용자를 저장하기 위한 스토리지 계정
  • 사용자 지정 리소스 형식 및 동작을 정의하는 사용자 지정 공급자 요청을 보내기 위한 함수 앱 엔드포인트를 사용합니다.
  • 사용자 지정 리소스 공급자의 사용자 지정 리소스

사용자 지정 리소스 공급자를 배포하려면 Azure CLI, PowerShell 또는 Azure Portal을 사용합니다.

이 예제에서는 리소스 그룹, 위치 및 공급자의 함수 앱 이름을 입력하라는 메시지를 표시합니다. 이름은 다른 명령에 사용되는 변수에 저장됩니다. az group createaz 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에 배포 단추를 선택합니다.

Button to deploy the Resource Manager template to Azure.

사용자 지정 공급자 및 리소스 보기

포털에서 사용자 지정 공급자는 숨겨진 리소스 형식입니다. 리소스 공급자가 배포되었는지 확인하려면 리소스 그룹으로 이동하여 숨겨진 유형 표시를 선택합니다.

Screenshot of Azure portal displaying hidden resource types and resources deployed in a resource group.

배포한 사용자 지정 리소스를 확인하려면 리소스 유형에 대해 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 명령을 사용하여 사용자 지정 리소스 공급자를 만들거나 업데이트합니다. 이 예제에서는 actionsresourceTypes를 업데이트합니다.

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

다음 단계

사용자 지정 리소스 공급자에 대한 소개는 다음 문서를 참조하세요.