次の方法で共有


クイック スタート: Azure カスタム リソース プロバイダーを作成し、カスタム リソースをデプロイする

このクイック スタートでは、カスタム リソース プロバイダーを作成し、そのリソース プロバイダーのカスタム リソースをデプロイします。 カスタム リソース プロバイダーの詳細については、「 Azure カスタム リソース プロバイダーの概要」を参照してください。

[前提条件]

Azure CLI の環境を準備します。

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「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 にデプロイ ] ボタンを選択します。

Resource Manager テンプレートを Azure に配置するボタン。

カスタム リソース プロバイダーとリソースを表示する

ポータルでは、カスタム リソース プロバイダーは非表示のリソースの種類です。 リソース プロバイダーがデプロイされたことを確認するには、リソース グループに移動し、[ 非表示の種類の表示] を選択します。

リソース グループにデプロイされた非表示のリソースの種類とリソースが表示されている Azure portal のスクリーンショット。

デプロイしたカスタム リソースを表示するには、リソースの種類に対して 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セクションから操作を再実行して、作成された 2 つのリソースを表示できます。 この例では、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 コマンドを使用して、カスタム リソース プロバイダーを作成または更新します。 この例では、 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コマンドは、ユーザーにプロンプトを表示し、カスタム リソース プロバイダーのみを削除します。 ストレージ アカウント、App Service、App Service プランは削除されません。 プロバイダーが削除されると、コマンド プロンプトに戻ります。

az custom-providers resource-provider delete --resource-group $rgName --name $funcName

リソースをクリーンアップする

この記事で作成したリソースが完了したら、リソース グループを削除できます。 リソース グループを削除すると、そのリソース グループ内のすべてのリソースが削除されます。

az group delete --resource-group $rgName

次のステップ

カスタム リソース プロバイダーの概要については、次の記事を参照してください。