Share via


カスタム リソース プロバイダーを作成して使用する

カスタム リソース プロバイダーは、Azure とエンドポイントの間のコントラクトです。 カスタム リソース プロバイダーを使って、Azure 上のワークフローを変更できます。 このチュートリアルでは、カスタム リソース プロバイダーを作成する手順について説明します。 Azure カスタム リソース プロバイダーについてなじみがない場合は、Azure カスタム リソース プロバイダーの概要に関するページを参照してください。

カスタム リソース プロバイダーの作成

Note

このチュートリアルでは、エンドポイントの作成方法については取り上げません。 RESTFUL エンドポイントがない場合は、このチュートリアルの土台となっている、RESTful エンドポイントの作成に関するチュートリアルに従ってください。

エンドポイントを作成した後は、カスタム リソース プロバイダーを作成して、プロバイダーとエンドポイントの間のコントラクトを生成できます。 カスタム リソース プロバイダーで、エンドポイント定義のリストを指定できます。

{
  "name": "myEndpointDefinition",
  "routingType": "Proxy",
  "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
}
プロパティ 必須 説明
name はい エンドポイント定義の名前。 この名前は、次の場所の対応する API を通じて公開されます: /subscriptions/<サブスクリプション ID>/resourceGroups/<リソース グループ名>/providers/Microsoft.CustomProviders
/resourceProviders/<リソース プロバイダー名>/<エンドポイント定義名>
routingType いいえ エンドポイントのコントラクトの種類。 この値が指定されなかった場合は、"Proxy" が既定値となります。
endpoint はい 要求をルーティングするエンドポイント。 このエンドポイントによって応答が処理され、また要求の副作用があればそれも処理されます。

Azure 関数アプリのトリガー URL が endpoint の値になります。 <yourapp><funcname><functionkey> の各プレースホルダーは、作成した関数アプリの値に置き換える必要があります。

カスタム アクションとリソースを定義する

カスタム リソース プロバイダーには、actions プロパティと resourceTypes プロパティでモデル化されるエンドポイント定義のリストが含まれます。 actions プロパティは、カスタム リソース プロバイダーによって公開されるカスタム アクションに対応し、resourceTypes プロパティはカスタム リソースを表します。 このチュートリアルのカスタム リソース プロバイダーには、myCustomAction という名前の actions プロパティと myCustomResources という名前の resourceTypes プロパティがあります。

{
  "properties": {
    "actions": [
      {
        "name": "myCustomAction",
        "routingType": "Proxy",
        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
      }
    ],
    "resourceTypes": [
      {
        "name": "myCustomResources",
        "routingType": "Proxy",
        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
      }
    ]
  },
  "location": "eastus"
}

カスタム リソース プロバイダーをデプロイする

Note

endpoint の値は、前のチュートリアルで作成した関数アプリのトリガー URL に置き換える必要があります。

前に示したカスタム リソース プロバイダーは、Azure Resource Manager テンプレートを使ってデプロイできます。

{
    "$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.CustomProviders/resourceProviders",
            "name": "myCustomProvider",
            "apiVersion": "2018-09-01-preview",
            "location": "eastus",
            "properties": {
                "actions": [
                    {
                        "name": "myCustomAction",
                        "routingType": "Proxy",
                        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
                    }
                ],
                "resourceTypes": [
                    {
                        "name": "myCustomResources",
                        "routingType": "Proxy",
                        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
                    }
                ]
            }
        }
    ]
}

カスタム アクションとカスタム リソースを使用する

カスタム リソース プロバイダーを作成したら、新しい Azure API を使用できます。 以下のセクションでは、カスタム リソース プロバイダーを呼び出して使用する方法を説明します。

カスタム アクション

Azure CLI

Note

{subscriptionId}{resourceGroupName} の各プレースホルダーは、カスタム リソース プロバイダーのデプロイ先のサブスクリプションとリソース グループに置き換える必要があります。

az resource invoke-action --action myCustomAction \
                          --ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider \
                          --request-body
                            '{
                                "hello": "world"
                            }'
パラメーター 必須 説明
action はい カスタム リソース プロバイダーで定義されているアクションの名前。
ids はい カスタム リソース プロバイダーのリソース ID。
request-body いいえ エンドポイントに送信される要求本文。

カスタム リソース

Note

{subscriptionId}{resourceGroupName} の各プレースホルダーは、カスタム リソース プロバイダーのデプロイ先のサブスクリプションとリソース グループに置き換える必要があります。

カスタム リソースの作成

az resource create --is-full-object \
                   --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1 \
                   --properties
                    '{
                        "location": "eastus",
                        "properties": {
                            "hello" : "world"
                        }
                    }'
パラメーター 必須 説明
is-full-object はい properties オブジェクトに、場所、タグ、SKU、プランなどの他のオプションが含まれるかどうかを示します。
ID はい カスタム リソースのリソース ID。 この ID は、カスタム リソース プロバイダーのリソース ID の拡張情報です。
properties はい エンドポイントに送信される要求本文。

カスタム リソースを削除する

az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1
パラメーター 必須 説明
ID はい カスタム リソースのリソース ID。 この ID は、カスタム リソース プロバイダーのリソース ID の拡張情報です。

カスタム リソースの取得

az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1
パラメーター 必須 説明
ID はい カスタム リソースのリソース ID。 この ID は、カスタム リソース プロバイダーのリソース ID の拡張情報です。

Note

カスタム リソース プロバイダーのデプロイと使用が済んだら、Azure 関数アプリも含めて、作成したリソースをすべてクリーンアップしてください。

次のステップ

この記事では、カスタム リソース プロバイダーについて学習しました。 詳細については、次を参照してください。