次の方法で共有


Azure カスタム リソース プロバイダーのリソースオンボーディング概要

Azure カスタム リソース プロバイダーのオンボーディングは、Azure リソース タイプの拡張性モデルです。 これにより、既存の Azure リソース全体に大規模な操作または管理を適用できます。 詳細については、「 Azure カスタム リソース プロバイダーで Azure を拡張する方法」を参照してください。 この記事では、以下について説明します。

  • リソースのオンボードでできること。
  • リソースオンボーディングの基本と使用方法。
  • 使用を開始するガイドとコード サンプルの場所。

Important

カスタム リソース プロバイダーは現在パブリック プレビュー段階です。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 一部の機能はサポートされていないか、機能が制限されている可能性があります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。

リソースオンボーディングでできること

Azure カスタム リソース プロバイダーのカスタム リソースと同様に、リソースオンボードでは、エンドポイントに "オンボード" 要求をプロキシするコントラクトが定義されます。 カスタム リソースとは異なり、リソースオンボードでは新しいリソースの種類は作成されません。 代わりに、既存のリソースの種類を拡張できます。 また、リソースのオンボードは Azure Policy で動作するため、リソースの管理と構成を大規模に行うことができます。 リソースオンボーディング ワークフローの例をいくつか次に示します。

  • 仮想マシン拡張機能をインストールして管理します。
  • Azure ストレージ アカウントの既定値をアップロードして構成します。
  • ベースライン診断設定を大規模に有効にします。

リソースオンボーディングの基本事項

Microsoft.CustomProviders/resourceProviders および Microsoft.CustomProviders/associations リソース タイプを使用して、Azure カスタム リソース プロバイダーによるリソースオンボードを構成します。 カスタム リソース プロバイダーのリソース オンボードを有効にするには、構成プロセス中に、"Extension" を含む resourceType を持つ "アソシエーション" という名前の routingType を作成します。 Microsoft.CustomProviders/associations と Microsoft.CustomProviders/resourceProviders は、同じリソース グループに属している必要はありません。

Azure カスタム リソース プロバイダーのサンプルを次に示します。

{
  "properties": {
    "resourceTypes": [
      {
        "name": "associations",
        "routingType": "Proxy,Cache,Extension",
        "endpoint": "https://microsoft.com/"
      }
    ]
  },
  "location": "eastus"
}
プロパティ 必須ですか? Description
名前 イエス エンドポイント定義の名前。 リソースのオンボーディングでは、名前は "アソシエーション" である必要があります。
routingType イエス エンドポイントとのコントラクトの種類を決定します。 リソースオンボードの場合、有効な routingTypes は "Proxy,Cache,Extension" と "Webhook,Cache,Extension" です。
エンドポイント イエス 要求をルーティングするエンドポイント。 これにより、応答と要求の副作用が処理されます。

関連付けリソースの種類を使用してカスタム リソース プロバイダーを作成したら、Microsoft.CustomProviders/associations を使用してターゲットにすることができます。 Microsoft.CustomProviders/associations は、他の Azure リソースを拡張できる拡張機能リソースです。 Microsoft.CustomProviders/associations のインスタンスが作成されると、プロパティ targetResourceId が取得されます。これは、有効な Microsoft.CustomProviders/resourceProviders または Microsoft.Solutions/applications リソース ID である必要があります。 このような場合、要求は、作成した Microsoft.CustomProviders/resourceProviders インスタンスの関連付けリソースの種類に転送されます。

TargetResourceId として Microsoft.Solutions/applications リソース ID が指定されている場合は、"public" という名前のマネージド リソース グループに Microsoft.CustomProviders/resourceProviders がデプロイされている必要があります。

Azure カスタム リソース プロバイダーの関連付けの例:

{
  "properties": {
    "targetResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
    ...
  }
}
プロパティ 必須ですか? Description
targetResourceId イエス Microsoft.CustomProviders/resourceProviders または Microsoft.Solutions/applications のリソース ID。

リソースのオンボーディングの利用方法

リソースのオンボードは、Microsoft.CustomProviders/associations 拡張機能リソースを使用して他のリソースを拡張することによって機能します。 次の例では、仮想マシンに対して要求が行われますが、任意のリソースを拡張できます。

まず、関連付けリソースの種類を持つカスタム リソース プロバイダー リソースを作成する必要があります。 これにより、カスタム リソース プロバイダーを対象とする対応する Microsoft.CustomProviders/associations リソースが作成されるときに使用されるコールバック URL が宣言されます。

サンプル Microsoft.CustomProviders/resourceProviders 作成要求:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

{
  "properties": {
    "resourceTypes": [
      {
        "name": "associations",
        "routingType": "Proxy,Cache,Extension",
        "endpoint": "https://{myCustomEndpoint}/"
      }
    ]
  },
  "location": "{location}"
}

カスタム リソース プロバイダーを作成したら、他のリソースをターゲットにして、カスタム リソース プロバイダーの副作用を適用できます。

サンプル Microsoft.CustomProviders/associations 作成リクエスト:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}/providers/Microsoft.CustomProviders/associations/{associationName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

{
  "properties": {
    "targetResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3" : "myPropertyValue3"
    }
  }
}

この要求は、作成したカスタム リソース プロバイダーで指定されたエンドポイントに転送されます。このエンドポイントは、次の形式で targetResourceId によって参照されます。

PUT https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/associations/{associationName}
X-MS-CustomProviders-ExtensionPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}/providers/Microsoft.CustomProviders/associations/{associationName}
X-MS-CustomProviders-ExtendedResource: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}

{
  "properties": {
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3" : "myPropertyValue3"
    }
  }
}

エンドポイントは、アプリケーション/json Content-Type と有効な JSON 応答本文で応答する必要があります。 JSON の properties オブジェクトの下に返されるフィールドは、関連付け戻り応答に追加されます。

ヘルプを受ける

Azure カスタム リソース プロバイダーの開発について質問がある場合は、 Stack Overflow で質問してみてください。 同様の質問が既に回答されている可能性があるため、投稿する前に最初に確認してください。 タグ azure-custom-providers を追加して、迅速な応答を得ます。

次のステップ

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