マネージド リソース

完了

デプロイ スタックによって管理される Azure リソースは "マネージド リソース" と呼ばれます。 これらのリソースは、スタックの作成に使用されるテンプレート ファイル内で定義されます。

預金アプリケーションの次のスプリントのための準備をする上で、デプロイ スタックがどのようにリソースを管理するかの詳細を知る必要があります。 開発中に機能がテストされる中で、アプリケーションに急速かつ頻繁な変更が加えられることが予測されます。 アプリケーションのリソースの追加、変更、削除を行うにあたって、これらのリソースがどのように管理されているかを把握しておく必要があります。

このユニットでは、マネージド リソースと action on unmanage パラメーターについて学習します。 このパラメーターは、デプロイ スタックが管理しなくなったリソースを Azure がどのように処理するかを決定します。

マネージド リソースを理解する

デプロイ スタックの更新に入る前に、スタックがどのようにリソースを管理しているかを確認しましょう。 デプロイ スタックを作成すると、スタックはテンプレート ファイル内に記述されているリソースを管理する役割を担うようになります。 これらのリソースはマネージド リソースと呼ばれます。 リソースがデプロイ スタックのテンプレート ファイル内に定義されている限り、それはマネージド リソースと見なされます。 デプロイ スタックは、アプリケーションのリソースをそれらがデプロイされている場所に関係なく、1 つの論理ユニットにグループ化する一連のポインターと考えてください。

デプロイ スタックは、リソース グループ、サブスクリプション、管理グループなど、さまざまなスコープで作成できます。 デプロイ スタックが管理できるリソースは、スタックが作成されるスコープによって決まります。 たとえば、スタックをサブスクリプションのスコープでデプロイすると、そのスタックはサブスクリプション内のリソース グループを管理できるだけでなく、その同じサブスクリプション内の任意のリソース グループ内のリソースを管理することもできます。

デプロイ スタックとマネージド リソースを表す図。

デプロイ スタックによって管理されなくなったリソースはどうなりますか? リソースがテンプレート ファイル内で定義されなくなりスタックが更新されると、リソースは "デタッチ状態" または "削除状態" のどちらかになります。 デタッチされたリソースはスタックによって管理されなくなったリソースですが、このリソースは引き続き Azure 内に存在し続けます。 削除されたリソースは Azure から削除されたリソースであり、そのデータはすべて失われます。

action on unmanage

Azure がデタッチされたリソース、リソース グループ、管理グループをどのように処理するかを、action on unmanage (非管理時のアクション) パラメーターというプロパティを使用して制御できます。 このパラメーターは、デプロイ スタックを作成、変更、または削除する時に設定できます。

3 つの操作はすべて、action on unmanage パラメーターの動作を設定する機能を持ちます。 最後に設定した値が優先されることに注意してください。

たとえば、このパラメーターを --action-on-unmanage detachAll に設定してデプロイ スタックが作成された場合、Azure はスタックによって管理されなくなったリソースすべてをデタッチします。 後続の更新操作が実行され、このパラメーターが --action-on-unmanage deleteAll として設定されている場合、動作の既定値は deleteAll となります。

--action-on-unmanage パラメーターには、以下の 3 つの値を設定できます。

  • deleteAll - リソース、リソース グループ、管理グループを削除します
  • deleteResources - リソースは削除しますが、リソース グループと管理グループはデタッチします
  • detachAll - リソース、リソース グループ、管理グループをすべてデタッチします

Note

このモジュールでは、リソース グループ スコープのデプロイ スタックを扱います。 この状況では、リソース グループ自体はスタックによって管理されません。 action on unmanage パラメーターの 'delete all' という値は、そのスタックが含まれるリソース グループは削除しません。 このリソース グループは、スタックとそのリソースが削除された後に削除する必要があります。

--action-on-unmanage パラメーターに値を設定して Azure CLI の az stack group show コマンドを使用したときの JSON 出力を確認してみましょう。 リソース、リソース グループ、管理グループの動作に注目してください。

  1. --action-on-unmanage deleteAll

    "actionOnUnmanage": {
        "managementGroups": "delete",
        "resourceGroups": "delete",
        "resources": "delete"
    },
    
  2. --action-on-unmanage deleteResources

    "actionOnUnmanage": {
        "managementGroups": "detach",
        "resourceGroups": "detach",
        "resources": "delete"
    },
    
  3. --action-on-unmanage detachAll

    "actionOnUnmanage": {
        "managementGroups": "detach",
        "resourceGroups": "detach",
        "resources": "detach"
    },
    

たとえば、このパラメーターを -ActionOnUnmanage DetachAll に設定してデプロイ スタックが作成された場合、Azure はスタックによって管理されなくなったリソースすべてをデタッチします。 後続の更新操作が実行され、このパラメーターが -ActionOnUnmanage DeleteAll として設定されている場合、動作の既定値は DeleteAll となります。

-ActionOnUnmanage パラメーターには、以下の 3 つの値を設定できます。

  • DeleteAll - リソース、リソース グループ、管理グループを削除します
  • DeleteResources - リソースは削除しますが、リソース グループと管理グループはデタッチします
  • DetachAll - リソース、リソース グループ、管理グループをすべてデタッチします

Note

このモジュールでは、リソース グループ スコープのデプロイ スタックを使用します。 この状況では、リソース グループはスタックによって管理されません。 > action on unmanage パラメーターの 'delete all' という値は、そのスタックが含まれるリソース グループは削除しません。 このリソース グループは、スタックとそのリソースが削除された後に削除する必要があります。

-ActionOnUnmanage パラメーターに値を設定して Azure PowerShell の Get-AzResourceGroupDeploymentStack コマンドを使用したときの JSON 出力を確認してみましょう。 リソース、リソース グループ、管理グループの動作に注目してください。

  1. -ActionOnUnmanage DeleteAll

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : delete
    managementGroupsCleanupAction : delete
    
  2. -ActionOnUnmanage DeleteResources

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : detach
    managementGroupsCleanupAction : detach
    
  3. -ActionOnUnmanage DetachAll

    resourcesCleanupAction        : detach
    resourceGroupsCleanupAction   : detach
    managementGroupsCleanupAction : detach