Azure Budgets でのコストの管理Manage costs with Azure Budgets

コスト管理は、クラウドへの投資の価値を最大化するために不可欠な要素の 1 つです。Cost control is a critical component to maximizing the value of your investment in the cloud. さまざまなシナリオにおいて、コストの可視性、レポート、およびコスト ベースのオーケストレーションが、継続的な事業運営に不可欠となります。There are several scenarios where cost visibility, reporting, and cost-based orchestration are critical to continued business operations. Azure Cost Management API の一連の API は、このようなシナリオのそれぞれをサポートします。Azure Cost Management APIs provide a set of APIs to support each of these scenarios. これらの API から使用状況の詳細がわかるので、インスタンス レベルのコストを細分化して調べることができます。The APIs provide usage details, allowing you to view granular instance level costs.

予算はコスト管理の一部として一般的に使用されます。Budgets are commonly used as part of cost control. Azure では、範囲を限定して予算を管理することができます。Budgets can be scoped in Azure. たとえば、予算のビューをサブスクリプション、リソース グループ、またはリソースのコレクションに基づいて絞り込むことができます。For instance, you could narrow your budget view based on subscription, resource groups, or a collection of resources. 予算 API を使用して、予算のしきい値に達したときに電子メールで通知を受け取ることに加えて、Azure Monitor のアクション グループを使用して、予算に関するイベントの発生時に一連のアクションをトリガーし、オーケストレーションの下で実行することもできます。In addition to using the budgets API to notify you via email when a budget threshold is reached, you can use Azure Monitor action groups to trigger an orchestrated set of actions as a result of a budget event.

予算に関する一般的なシナリオの例を考えてみます。この企業は重要度の低いワークロードを実行しており、所定の予算を超えないように管理することと、毎月受け取る請求書の金額を予測可能な範囲で維持することを必要としています。A common budgets scenario for a customer running a non-critical workload could occur when they want to manage against a budget and also get to a predictable cost when looking at the monthly invoice. このシナリオでは、Azure 環境の一部であるリソースを、コストに基づいてオーケストレーションすることが必要になります。This scenario requires some cost-based orchestration of resources that are part of the Azure environment. このシナリオでは、サブスクリプションの毎月の予算を 1,000 ドルと設定します。In this scenario, a monthly budget of $1000 for the subscription is set. また、いくつかのオーケストレーションをトリガーするように通知のしきい値を設定します。Also, notification thresholds are set to trigger a few orchestrations. まず、コストしきい値を 80% に設定し、これに達したときにリソース グループ Optional ("必須ではない") 内のすべての VM を停止します。This scenario starts with an 80% cost threshold, which will stop all VMs in the resource group Optional. 次に、コストしきい値 100% に達したときに、すべての VM インスタンスを停止します。Then, at the 100% cost threshold, all VM instances will be stopped. このシナリオのとおりに構成するには、次に示すアクションを実行します。これらの手順を、このチュートリアルの各セクションで説明します。To configure this scenario, you will complete the following actions by following the steps provided in each section of this tutorial.

このチュートリアルで説明するアクションでは、次のことを行います。These actions included in this tutorial allow you to:

  • Azure Automation Runbook を作成します。この Runbook で、Webhook を使用して VM を停止します。Create an Azure Automation Runbook to stop VMs by using webhooks.
  • Azure ロジック アプリを作成します。このアプリは予算のしきい値に基づいてトリガーされ、適切なパラメーター付きで Runbook を呼び出します。Create an Azure Logic App to be triggered based on the budget threshold value and call the runbook with the right parameters.
  • Azure Monitor アクション グループを作成します。このグループは、予算のしきい値に達したときに Azure ロジック アプリをトリガーするように構成されます。Create an Azure Monitor Action Group that will be configured to trigger the Azure Logic App when the budget threshold is met.
  • Azure 予算を作成し、希望のしきい値を指定して、アクション グループに関連付けます。Create the Azure budget with the desired thresholds and wire it to the action group.

Azure Automation Runbook を作成するCreate an Azure Automation Runbook

Azure Automation は、リソース管理タスクのほとんどをスクリプトで処理できるサービスです。このタスクはスケジュールに従って実行することも、オンデマンドで実行することもできます。Azure Automation is a service that enables you to script most of your resource management tasks and run those tasks as either scheduled or on-demand. このシナリオでは、Azure Automation Runbook を作成し、これを使用して VM を停止します。As part of this scenario, you will create an Azure Automation runbook that will be used to stop VMs. このシナリオの構築には、ギャラリーにある Stop Azure V2 VMs というグラフィカル Runbook を使用します。You will use the Stop Azure V2 VMs graphical runbook from the gallery to build this scenario. この Runbook を Azure アカウントにインポートして発行すると、予算のしきい値に達したときに VM を停止できるようになります。By importing this runbook into your Azure account and publishing it, you will be able to stop VMs when a budget threshold is reached.

Azure Automation アカウントを作成するCreate an Azure Automation account

  1. Azure アカウントの資格情報で Azure Portal にサインインします。Sign in to the Azure portal with your Azure account credentials.
  2. Azure の左上にある [リソースの作成] ボタンをクリックします。Click the Create a resource button found on the upper left corner of Azure.
  3. [管理ツール] > [オートメーション] を選択します。Select Management Tools > Automation.

    注意

    Azure アカウントがない場合は、無料のアカウントを作成できます。If you don’t have an Azure account, you can create a free account.

  4. アカウント情報を入力します。Enter your account information. [Azure 実行アカウントの作成][はい] を選択します。これで、Azure に対する認証を単純化するための設定が自動的に有効になります。For Create Azure Run As account, choose Yes to automatically enable the settings needed to simplify authentication to Azure.
  5. 完了したら、 [作成] をクリックして、Automation アカウントの展開を開始します。When complete, click Create, to start the Automation account deployment.

Stop Azure V2 VMs Runbook をインポートするImport the Stop Azure V2 VMs runbook

Azure Automation Runbook を使用して、Stop Azure V2 VMs グラフィカル Runbook をギャラリーからインポートします。Using an Azure Automation runbook, import the Stop Azure V2 VMs graphical runbook from the gallery.

  1. Azure アカウントの資格情報で Azure Portal にサインインします。Sign in to the Azure portal with your Azure account credentials.

  2. Automation アカウントを開くために、 [すべてのサービス] > [Automation アカウント] を選択します。Open your Automation account by selecting All services > Automation Accounts. Automation アカウントを選択します。Then, select your Automation Account.

  3. [プロセス オートメーション] セクションの [Runbook ギャラリー] をクリックします。Click Runbooks gallery from the Process Automation section.

  4. [ギャラリーのソース][スクリプト センター] に設定し、 [OK] を選択します。Set the Gallery Source to Script Center and select OK.

  5. Azure portal 内で Stop Azure V2 VMs ギャラリー アイテムを見つけて選択します。Locate and select the Stop Azure V2 VMs gallery item within the Azure portal.

  6. [インポート] ボタンをクリックして [インポート] ブレードを表示し、 [OK] を選択します。Click the Import button to display the Import blade and select OK. Runbook の概要ブレードが表示されます。The runbook overview blade will be displayed.

  7. Runbook のインポート処理が完了したら、 [編集] を選択します。グラフィカル Runbook エディターと発行オプションが表示されます。Once the runbook has completed the import process, select Edit to display the graphical runbook editor and publishing option.

    Azure - グラフィカル Runbook の編集

  8. [発行] ボタンをクリックして Runbook を発行し、確認を要求されたら [はい] をクリックします。Click the Publish button to publish the runbook and then select Yes when prompted. Runbook を発行すると、既存の発行済みバージョンよりもドラフト バージョンがオーバーライドされるようになります。When you publish a runbook, you override any existing published version with the draft version. この例では、Runbook を作成したばかりであるため、発行済みバージョンはまだありません。In this case, you have no published version because you have created the runbook.

    Runbook の発行の詳細については、グラフィカル Runbook の作成に関するページを参照してください。For more information about publishing a runbook, see Create a graphical runbook.

Runbook に対する Webhook を作成するCreate webhooks for the runbook

Stop Azure V2 VMs グラフィカル Runbook を使用して、2 つの Webhook を作成し、この Runbook を 1 つの HTTP 要求だけで Azure Automation の中で起動できるように設定します。Using the Stop Azure V2 VMs graphical runbook, you will create two Webhooks to start the runbook in Azure Automation through a single HTTP request. 最初の Webhook は、80% の予算しきい値に達したときに Runbook を起動します。このときに、リソース グループ名をパラメーターとして指定します。これで、必須ではない VM を停止することができます。The first webhook will invoke the runbook at an 80% budget threshold with the resource group name as a parameter, allowing the optional VMs to be stopped. 2 つ目の Webhook は、Runbook をパラメーターなしで (100% のときに) 起動します。これで、残りの VM インスタンスをすべて停止します。Then, second webhook will invoke the runbook with no parameters (at 100%), which will stop all remaining VM instances.

  1. Azure portal[Runbooks] ページで、StopAzureV2Vm Runbook をクリックします。この Runbook の概要ブレードが表示されます。From the Runbooks page in the Azure portal, click the StopAzureV2Vm runbook that displays the runbook’s overview blade.
  2. ページの最上部にある [Webhook] をクリックして [Webhook の追加] ブレードを開きます。Click Webhook at the top of the page to open the Add Webhook blade.
  3. [新しい Webhook の作成] をクリックして [新しい Webhook の作成] ブレードを開きます。Click Create new webhook to open the Create a new webhook blade.
  4. Webhook の [名前] を「Optional」に設定します。Set the Name of the Webhook to Optional. [有効] プロパティは [はい] に設定する必要があります。The Enabled property must be Yes. [有効期限] の値は変更する必要はありません。The Expires value does not need to be changed. Webhook のプロパティの詳細については、「Webhook の詳細」を参照してください。For more information about Webhook properties, see Details of a webhook.
  5. URL の値の横にあるコピー アイコンをクリックして Webhook の URL をコピーします。Next to the URL value, click the copy icon to copy the URL of the webhook.

    重要

    Optional という名前の Webhook の URL を、安全な場所に保存します。Save the URL of the webhook named Optional in a safe place. この URL は、このチュートリアルで後ほど使用します。You will use the URL later in this tutorial. セキュリティ上の理由から、Webhook の作成後にその URL をもう一度表示または取得することはできないようになっています。For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

  6. [OK] をクリックして新しい Webhook を作成します。Click OK to create the new webhook.
  7. [パラメータと実行設定を構成する] をクリックします。Runbook のパラメーター値が表示されます。Click Configure parameters and run settings to view parameter values for the runbook.

    注意

    Runbook に必須のパラメーターがある場合、値を指定しない限り webhook を作成できません。If the runbook has mandatory parameters, then you are not able to create the webhook unless values are provided.

  8. Webhook パラメーターの値はそのままにして [OK] をクリックします。Click OK to accept the webhook parameter values.
  9. [作成] をクリックして Webhook を作成します。Click Create to create the webhook.
  10. 次に、これまでと同じ手順に従って 2 つ目の Webhook を Complete という名前で作成します。Next, follow the steps above to create a second webhook named Complete.

    重要

    必ず、両方の Webhook URL を保存してください。これらは、このチュートリアルで後ほど使用します。Be sure to save both webhook URLs to use later in this tutorial. セキュリティ上の理由から、Webhook の作成後にその URL をもう一度表示または取得することはできないようになっています。For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

これで、2 つの Webhook が構成済みとなり、保存した URL を使用してそれぞれを使用できるようになりました。You should now have two configured webhooks that are each available using the URLs that you saved.

Webhook - Optional と Complete

Azure Automation のセットアップが完了しました。You’re now done with the Azure Automation setup. 単純な Postman テストを使用して、Webhook が機能することを検証できます。You can test the webhooks with a simple Postman test to validate that the webhook works. 次に、オーケストレーションのためのロジック アプリを作成する必要があります。Next, you must create the Logic App for orchestration.

オーケストレーションのための Azure ロジック アプリを作成するCreate an Azure Logic App for orchestration

ロジック アプリは、プロセスをワークフローとして構築、スケジューリング、自動化するのに役立ちます。これを利用すると、複数の企業または組織にわたってアプリ、データ、システム、サービスを統合することができます。Logic Apps help you build, schedule, and automate processes as workflows so you can integrate apps, data, systems, and services across enterprises or organizations. このシナリオで作成するロジック アプリは、作成したオートメーション Webhook を呼び出すだけでなく、その他の処理も行います。In this scenario, the Logic App you create will do a little more than just call the automation webhook you created.

指定したしきい値に達したときに通知をトリガーするように、予算を設定することができます。Budgets can be set up to trigger a notification when a specified threshold is met. 複数のしきい値を指定して、それぞれに達したときに通知を受け取るようにしたい場合に、ロジック アプリを利用すると、到達したしきい値に基づいて異なるアクションを実行することができます。You can provide multiple thresholds to be notified at and the Logic App will demonstrate the ability for you to perform different actions based on the threshold met. この例でのシナリオでは、複数の種類の通知を受け取ります。最初の通知は予算の 80% に達したとき、2 つ目の通知は予算の 100% に達したときに受け取ります。In this example, you will set up a scenario where you get a couple of notifications, the first notification is for when 80% of the budget has been reached and the second notification is when 100% of the budget has been reached. ロジック アプリを使用して、リソース グループ内のすべての VM をシャットダウンします。The logic app will be used to shut down all VMs in the resource group. まず、Optional しきい値である 80% に達します。その後で、2 つ目のしきい値に達すると、サブスクリプション内のすべての VM がシャットダウンされます。First, the Optional threshold will be reached at 80%, then the second threshold will be reached where all VMs in the subscription will be shut down.

ロジック アプリでは、HTTP トリガーのためのサンプル スキーマを指定できますが、Content-Type ヘッダーを設定する必要があります。Logic apps allow you to provide a sample schema for the HTTP trigger, but require you to set the Content-Type header. アクション グループには Webhook のためのカスタム ヘッダーがないため、ペイロードの解析を別のステップで行う必要があります。Because the action group does not have custom headers for the webhook, you must parse out the payload in a separate step. 解析アクションを使用し、サンプル ペイロードを渡します。You will use the Parse action and provide it with a sample payload.

ロジック アプリの作成Create the logic app

このロジック アプリは、さまざまなアクションを実行します。The logic app will perform several actions. 次のリストは、このロジック アプリが実行するアクションの概要です。The following list provides a high-level set of actions that the logic app will perform:

  • HTTP 要求を受信したことを認識します。Recognizes when an HTTP request is received
  • 渡された JSON データを解析し、到達したしきい値を特定します。Parse the passed in JSON data to determine the threshold value that has been reached
  • 条件付きステートメントを使用して、しきい値と比較する値が予算の範囲の 80% 以上に到達し、かつ 100% 未満かどうかを調べます。Use a conditional statement to check whether the threshold amount has reached 80% or more of the budget range, but not greater than or equal to 100%.
    • このしきい値に達している場合は、Optional という名前の Webhook を使用して HTTP POST を送信します。If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. このアクションは、"Optional" グループの VM をシャットダウンします。This action will shut down the VMs in the "Optional" group.
  • 条件付きステートメントを使用して、しきい値と比較する値が予算値の 100% 以上に達しているかどうかを調べます。Use a conditional statement to check whether the threshold amount has reached or exceeded 100% of the budget value.
    • このしきい値に達している場合は、Complete という名前の Webhook を使用して HTTP POST を送信します。If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. このアクションは残りのすべての VM をシャットダウンします。This action will shut down all remaining VMs.

上記の手順を実行するロジック アプリを作成するには、次の手順が必要です。The following steps are needed to create the logic app that will perform the above steps:

  1. Azure portal で、 [リソースの作成] > [統合] > [Logic App] を選択します。In the Azure portal, select Create a resource > Integration > Logic App.

    Azure - ロジック アプリ リソースを選択する

  2. [ロジック アプリの作成] ブレードで、ロジック アプリを作成するための詳細情報を入力し、 [ダッシュ ボードにピン留めする] をクリックし、 [作成] をクリックします。In the Create logic app blade, provide the details need to create your logic app, select Pin to dashboard, and click Create.

    Azure - ロジック アプリを作成する

ロジック アプリがデプロイされると、Logic Apps デザイナーが開き、紹介ビデオやよく使用されるトリガーがブレードに表示されます。After Azure deploys your logic app, the Logic Apps Designer opens and shows a blade with an introduction video and commonly used triggers.

トリガーの追加Add a trigger

すべてのロジック アプリは必ずトリガーから起動され、トリガーは、特定のイベントが発生するか特定の条件が満たされたときに起動されます。Every logic app must start with a trigger, which fires when a specific event happens or when a specific condition is met. トリガーが起動するたびに、Logic Apps エンジンによって、ワークフローを開始および実行するロジック アプリ インスタンスが作成されます。Each time the trigger fires, the Logic Apps engine creates a logic app instance that starts and runs your workflow. アクションとは、トリガーの後に発生するステップすべてを指します。Actions are all the steps that happen after the trigger.

  1. [Logic Apps デザイナー] ブレードの [テンプレート] で、 [空のロジック アプリ] を選択します。Under Templates of the Logic Apps Designer blade, choose Blank Logic App.

  2. トリガーを追加するために、Logic Apps デザイナーの検索ボックスに「http 要求」と入力して、 [要求 - HTTP 要求の受信時] という名前のトリガーを見つけて選択します。Add a trigger by entering "http request" in the Logic Apps Designer search box to find and select the trigger named Request – When an HTTP request is received.

    Azure - ロジック アプリ - Http トリガー

  3. [新しいステップ] > [アクションの追加] の順に選択します。Select New step > Add an action.

    Azure - 新しいステップ - アクションの追加

  4. Logic Apps デザイナーの検索ボックスに「JSON の解析」と入力して検索し、 [データ操作] - [JSON の解析] アクションを見つけて選択します。Search for "parse JSON" in the Logic Apps Designer search box to find and select the Data Operations - Parse JSON action.

    Azure - ロジック アプリ -JSON の解析アクションの追加

  5. 「JSON の解析」ペイロードのコンテンツ名として「Payload」と入力とするか、動的なコンテンツから "Body" タグを使用します。Enter "Payload" as the Content name for the Parse JSON payload or use the "Body" tag from dynamic content.

  6. [JSON の解析] ボックスで [サンプルのペイロードを使用してスキーマを生成する] オプションを選択します。Select the Use sample payload to generate schema option in the Parse JSON box.

    Azure - ロジック アプリ - サンプル JSON データを使用してスキーマを生成する

  7. 次の JSON サンプル ペイロードをテキスト ボックスに貼り付けます。{"schemaId":"AIP Budget Notification","data":{"SubscriptionName":"CCM - Microsoft Azure Enterprise - 1","SubscriptionId":"<GUID>","SpendingAmount":"100","BudgetStartDate":"6/1/2018","Budget":"50","Unit":"USD","BudgetCreator":"email@contoso.com","BudgetName":"BudgetName","BudgetType":"Cost","ResourceGroup":"","NotificationThresholdAmount":"0.8"}}Paste the following JSON sample payload into the textbox: {"schemaId":"AIP Budget Notification","data":{"SubscriptionName":"CCM - Microsoft Azure Enterprise - 1","SubscriptionId":"<GUID>","SpendingAmount":"100","BudgetStartDate":"6/1/2018","Budget":"50","Unit":"USD","BudgetCreator":"email@contoso.com","BudgetName":"BudgetName","BudgetType":"Cost","ResourceGroup":"","NotificationThresholdAmount":"0.8"}}

    テキスト ボックスは次のようになります。The textbox will appear as the following:

    Azure - ロジック アプリ - JSON ペイロードのサンプル

  8. [Done] をクリックします。Click Done.

最初の条件付きアクションを追加するAdd the first conditional action

条件付きステートメントを使用して、しきい値と比較する値が予算の範囲の 80% 以上に到達し、かつ 100% 未満かどうかを調べます。Use a conditional statement to check whether the threshold amount has reached 80% or more of the budget range, but not greater than or equal to 100%. このしきい値に達している場合は、Optional という名前の Webhook を使用して HTTP POST を送信します。If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. このアクションは、Optional グループの VM をシャットダウンします。This action will shut down the VMs in the Optional group.

  1. [新しいステップ] > [アクションの追加] の順に選択します。Select New step > Add a condition.

    Azure - ロジック アプリ - 条件を追加する

  2. [条件] ボックスの中の、「値の選択」と表示されているテキスト ボックスをクリックします。選択できる値の一覧が表示されます。In the Condition box, click the textbox containing Choose a value to display a list of available values.

    Azure - ロジック アプリ - [条件] ボックス

  3. 一覧の最上部にある [式] をクリックし、式エディターに float() という式を入力します。Click Expression at the top of the list and enter the following expression in the expression editor: float()

    Azure - ロジック アプリ - 浮動小数点式

  4. [動的なコンテンツ] を選択し、カーソルをかっこ () 内に置いて、一覧から [NotificationThresholdAmount] を選択して式全体を入力します。Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression.

    式は、次のようになります。The expression will be the following:
    float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])

  5. [OK] を選択して式を設定します。Select OK to set the expression.

  6. [条件] のドロップダウン ボックスで [次の値より大きいか等しい] を選択します。Select is greater than or equal to in the dropdown box of the Condition.

  7. 条件の [値の選択] ボックスに .8 と入力します。In the Choose a value box of the condition enter .8.

    Azure - ロジック アプリ - 浮動小数点式と値

  8. [条件] ボックスの [追加] > [行の追加] をクリックし、追加の追加部分を追加します。Click Add > Add row within the Condition box to add an additional part of the condition.

  9. [条件] ボックスで、 [次の値を含む] が含まれるテキスト ボックスをクリックします。In the Condition box, click the textbox containing Choose a value.

  10. 一覧の最上部にある [式] をクリックし、式エディターに float() という式を入力します。Click Expression at the top of the list and enter the following expression in the expression editor: float()

  11. [動的なコンテンツ] を選択し、カーソルをかっこ () 内に置いて、一覧から [NotificationThresholdAmount] を選択して式全体を入力します。Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression.

  12. [OK] を選択して式を設定します。Select OK to set the expression.

  13. [条件] のドロップダウン ボックスで [次の値より小さい] を選択します。Select is less than in the dropdown box of the Condition.

  14. 条件の [値の選択] ボックスに 1 と入力します。In the Choose a value box of the condition enter 1.

    Azure - ロジック アプリ - 浮動小数点式と値

  15. [true の場合] ボックスで、 [アクションの追加] を選択します。In the If true box, select Add an action. ここで追加するのは、必須ではない VM をシャットダウンする HTTP POST アクションです。You will add an HTTP POST action that will shut down optional VMs.

    Azure - ロジック アプリ - アクションを追加する

  16. HTTP アクションを検索するために「HTTP」と入力し、 [HTTP - HTTP] アクションを選択します。Enter HTTP to search for the HTTP action and select the HTTP – HTTP action.

    Azure - ロジック アプリ - HTTP アクションを追加する

  17. [メソッド] の値として [Post] を選択します。Select Post as the for the Method value.

  18. このチュートリアルで作成した Optional という名前の Webhook の URL を [URI] の値として入力します。Enter the URL for the webhook named Optional that you created earlier in this tutorial as the Uri value.

    Azure - ロジック アプリ - HTTP アクションの URI

  19. [true の場合] ボックスで、 [アクションの追加] を選択します。Select Add an action in the If true box. ここで追加するのは、必須ではない VM がシャットダウンされたことを通知する電子メールを送信する電子メール アクションです。You will add an email action that will send an email notifying the recipient that the optional VMs have been shut down.

  20. 「メールの送信」と入力して検索し、使用している電子メール サービスに基づいて [電子メールの送信] アクションを選択します。Search for "send email" and select a send email action based on the email service you use.

    Azure - ロジック アプリ - メールの送信アクション

    個人用 Microsoft アカウントには、Outlook.com を選択します。For personal Microsoft accounts, select Outlook.com. Azure の職場または学校アカウントには、Office 365 Outlook を選択します。For Azure work or school accounts, select Office 365 Outlook. まだ接続していない場合、お使いのメール アカウントにサインインするように求められます。If you don't already have a connection, you're asked to sign in to your email account. Logic Apps によって電子メール アカウントへの接続が作成されます。Logic Apps creates a connection to your email account.

    ロジック アプリに電子メール情報へのアクセスを許可する必要があります。You will need to allow the Logic App to access your email information.

    Azure - ロジック アプリ - アクセスの注意事項

  21. 必須ではない VM がシャットダウンされたことを通知する電子メールの [宛先][件名] 、および [本文] を追加します。Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. 動的コンテンツ BudgetNameNotificationThresholdAmount を使用して件名と本文のフィールドの内容を入力します。Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields.

    Azure - ロジック アプリ - 電子メールの詳細

2 つ目の条件付きアクションを追加するAdd the second conditional action

条件付きステートメントを使用して、しきい値と比較する値が予算値の 100% 以上に達しているかどうかを調べます。Use a conditional statement to check whether the threshold amount has reached or exceeded 100% of the budget value. このしきい値に達している場合は、Complete という名前の Webhook を使用して HTTP POST を送信します。If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. このアクションは残りのすべての VM をシャットダウンします。This action will shut down all remaining VMs.

  1. [新しいステップ] > [条件の追加] の順に選択します。Select New step > Add a Condition.

    Azure - ロジック アプリ - アクションを追加する

  2. [条件] ボックスの中の、「値の選択」と表示されているテキスト ボックスをクリックします。選択できる値の一覧が表示されます。In the Condition box, click the textbox containing Choose a value to display a list of available values.

  3. 一覧の最上部にある [式] をクリックし、式エディターに float() という式を入力します。Click Expression at the top of the list and enter the following expression in the expression editor: float()

  4. [動的なコンテンツ] を選択し、カーソルをかっこ () 内に置いて、一覧から [NotificationThresholdAmount] を選択して式全体を入力します。Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression.

    式は、次のようになります。The expression will be the following:
    float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])

  5. [OK] を選択して式を設定します。Select OK to set the expression.

  6. [条件] のドロップダウン ボックスで [次の値より大きいか等しい] を選択します。Select is greater than or equal to in the dropdown box of the Condition.

  7. 条件の [値の選択] ボックスに 1 と入力します。In the Choose a value box of the condition enter 1.

    Azure - ロジック アプリ - 条件の値の設定

  8. [true の場合] ボックスで、 [アクションの追加] を選択します。In the If true box, select Add an action. ここで追加するのは、残りのすべての VM をシャットダウンする HTTP POST アクションです。You will add an HTTP POST action that will shut down all the remaining VMs.

    Azure - ロジック アプリ - アクションを追加する

  9. HTTP アクションを検索するために「HTTP」と入力し、 [HTTP - HTTP] アクションを選択します。Enter HTTP to search for the HTTP action and select the HTTP – HTTP action.

  10. [メソッド] の値として [Post] を選択します。Select Post as the for the Method value.

  11. このチュートリアルで作成した Complete という名前の Webhook の URL を [URI] の値として入力します。Enter the URL for the webhook named Complete that you created earlier in this tutorial as the Uri value.

    Azure - ロジック アプリ - アクションを追加する

  12. [true の場合] ボックスで、 [アクションの追加] を選択します。Select Add an action in the If true box. ここで追加するのは、残りの VM がシャットダウンされたことを通知する電子メールを送信する電子メール アクションです。You will add an email action that will send an email notifying the recipient that the remaining VMs have been shut down.

  13. 「メールの送信」と入力して検索し、使用している電子メール サービスに基づいて [電子メールの送信] アクションを選択します。Search for "send email" and select a send email action based on the email service you use.

  14. 必須ではない VM がシャットダウンされたことを通知する電子メールの [宛先][件名] 、および [本文] を追加します。Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. 動的コンテンツ BudgetNameNotificationThresholdAmount を使用して件名と本文のフィールドの内容を入力します。Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields.

    Azure - ロジック アプリ - メールの送信の詳細

  15. Logic Apps デザイナー ブレードの最上部にある [保存] をクリックします。Click Save at the top of the Logic App Designer blade.

ロジック アプリ - まとめLogic App summary

完成したロジック アプリは次のようになります。Here’s what your Logic App looks like once you’re done. ごく基本的なシナリオで、しきい値に基づくオーケストレーションが不要な場合は、Monitor からオートメーション スクリプトを直接呼び出して、ロジック アプリのステップを省略することができます。In the most basic of scenarios where you don’t need any threshold-based orchestration, you could directly call the automation script from Monitor and skip the Logic App step.

Azure - ロジック アプリ - 完成した状態

ロジック アプリを保存したときに URL が生成されましたが、この URL を呼び出すことができます。When you saved your logic app, a URL was generated that you will be able to call. このチュートリアルの次のセクションで、この URL を使用します。You’ll use this URL in the next section of this tutorial.

Azure Monitor アクション グループを作成するCreate an Azure Monitor Action Group

アクション グループとは、自分で定義する通知設定の集合です。An action group is a collection of notification preferences that you define. アラートがトリガーされたときに、特定のアクション グループに通知してそのアラートを受信させることができます。When an alert is triggered, a specific action group can receive the alert by being notified. Azure のアラートは、先を見越して特定の条件に基づく通知を生成するので、これを利用するとアクションを実行する機会が得られます。An Azure alert proactively raises a notification based on specific conditions and provides the opportunity to take action. 1 つのアラートで複数のソースからのデータを使用でき、これにはメトリックやログも含まれます。An alert can use data from multiple sources, including metrics and logs.

アクション グループは、予算との統合が可能な唯一のエンドポイントです。Action groups are the only endpoint that you will integrate with your budget. さまざまなチャネルでの通知を設定できますが、このシナリオでは、このチュートリアルで先ほど作成したロジック アプリに重点を置きます。You can set up notifications in a number of channels, but for this scenario you will focus on the Logic App you created earlier in this tutorial.

Azure Monitor でアクション グループを作成するCreate an action group in Azure Monitor

アクション グループを作成するときに、このチュートリアルで作成したロジック アプリを指定します。When you create the action group, you will point to the Logic App that you created earlier in this tutorial.

  1. Azure portal にまだサインインしていない場合はサインインして、 [すべてのサービス] > [Monitor] を選択します。If you are not already signed-in to the Azure portal, sign-in and select All services > Monitor.

  2. [アラート][アクションの管理] の順に選択します。Select Alerts then select Manage actions.

  3. [アクション グループ] ブレードの [アクション グループを追加する] を選択します。Select Add an action group from the Action groups blade.

  4. 次の項目を追加して確認します。Add and verify the following items:

    • アクション グループ名Action group name
    • 短い名前Short name
    • SubscriptionSubscription
    • Resource groupResource group

    Azure - ロジック アプリ - アクション グループを追加する

  5. [アクション グループの追加] ウィンドウで、ロジック アプリ アクションを追加します。Within the Add action group pane, add a LogicApp action. アクションに Budget-BudgetLA という名前を付けます。Name the action Budget-BudgetLA. [ロジック アプリ] ウィンドウで [サブスクリプション][リソース グループ] を選択します。In the Logic App pane, select the Subscription and the Resource group. 次に、このチュートリアルで作成したロジック アプリを選択します。Then, select the Logic app that you created earlier in this tutorial.

  6. [OK] をクリックしてロジック アプリを設定します。Click OK to set the Logic App. [アクション グループの追加] ウィンドウで [OK] を選択してアクション グループを作成します。Then, select OK in the Add action group pane to create the action group.

これで、予算を効果的にオーケストレーションするために必要なすべてのサポート コンポーネントがそろいました。You’re done with all the supporting components needed to effectively orchestrate your budget. 次に必要な作業は、予算を作成して、作成済みのアクション グループを使用するようにこの予算を構成することだけです。Now all you need to do is create the budget and configure it to use the action group you created.

Azure の予算を作成するCreate the Azure Budget

Cost Management の予算機能を使用して、Azure portal で予算を作成できます。You can create a budget in the Azure portal using the Budget feature in Cost Management. また、REST API シリーズ、PowerShell コマンドレット、または CLI を使用して予算を作成することもできます。Or, you can create a budget using REST APIs, Powershell cmdlets, or use the CLI. 次に説明する手順では、REST API を使用します。The following procedure uses the REST API. REST API を呼び出す前に、認証トークンが必要になります。Before calling the REST API, you will need an authorization token. 認証トークンを作成するには、ARMClient プロジェクトを使用できます。To create an authorization token, you can use the ARMClient project. ARMClient を使用して Azure Resource Manager に対する認証を行い、受け取ったトークンで API を呼び出します。The ARMClient allows you to authenticate yourself to the Azure Resource Manager and get a token to call the APIs.

認証トークンを作成するCreate an authentication token

  1. GitHub の ARMClient プロジェクトに移動します。Navigate to the ARMClient project on GitHub.

  2. リポジトリを複製してローカル コピーを作成します。Clone the repo to get a local copy.

  3. このプロジェクトを Visual Studio で開いてビルドします。Open the project in Visual Studio and build it.

  4. ビルドが成功すると、実行可能ファイルが \bin\debug フォルダーに出力されます。Once the build is successful, the executable should be in the \bin\debug folder.

  5. ARMClient を実行します。Run the ARMClient. コマンド プロンプトを開き、プロジェクトのルートから \bin\debug フォルダーに移動します。Open a command prompt and navigate to the \bin\debug folder from the project root.

  6. ログインして認証するために、次のコマンドをコマンド プロンプトで入力します。To login and authenticate, enter the following command at the command prompt:
    ARMClient login prod

  7. サブスクリプション GUID を出力からコピーします。Copy the subscription guid from the output.

  8. 認証トークンをクリップボードにコピーするには、次のコマンドをコマンド プロンプトで入力しますが、必ず前のステップでコピーしたサブスクリプション ID を使用してください。To copy an authorization token to your clipboard, enter the following command at the command prompt, but sure to use the copied subscription ID from the step above:
    ARMClient token <subscription GUID from previous step>

    このステップを完了すると、次のメッセージが表示されます。Once you have completed the step above, you will see the following:
    Token copied to clipboard successfully.Token copied to clipboard successfully.

  9. このチュートリアルの次のセクションの手順で使用するためにトークンを保存します。Save the token to be used for steps in the next section of this tutorial.

予算を作成するCreate the Budget

次に、Azure Consumption REST API を呼び出して予算を作成するように Postman を構成します。Next, you will configure Postman to create a budget by calling the Azure Consumption REST APIs. Postman とは、API 開発環境の 1 つです。Postman is an API Development environment. 環境とコレクション ファイルを Postman にインポートします。You will import environment and collection files into Postman. このコレクションの内容は、Azure Consumption REST API を呼び出す HTTP 要求の定義をグループ化したものです。The collection contains grouped definitions of HTTP requests that call Azure Consumption REST APIs. 環境ファイルには、コレクションによって使用される変数が含まれています。The environment file contains variables that are used by the collection.

  1. REST API を実行するための Postman REST クライアントをダウンロードして開きます。Download and open the Postman REST client to execute the REST APIs.

  2. Postman で、新しい要求を作成します。In Postman, create a new request.

    Postman - 新しい要求を作成する

  3. 新しい要求はコレクションとして保存します。したがって、新しい要求には何も含まれていません。Save the new request as a collection, so that the new request has nothing on it.

    Postman - 新しい要求の保存

  4. 要求のアクションを Get から Put に変更します。Change the request from a Get to a Put action.

  5. 次の URL に変更を加えます。{subscriptionId} を、このチュートリアルの前のセクションで使用したサブスクリプション ID で置き換えてください。Modify the following URL by replacing {subscriptionId} with the Subscription ID that you used in the previous section of this tutorial. また、URL の {budgetName} の値として "SampleBudget" を追加してください。https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}?api-version=2018-03-31Also, modify the URL to include "SampleBudget" as the value for {budgetName}: https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}?api-version=2018-03-31

  6. Postman の [Headers] タブを選択します。Select the Headers tab within Postman.

  7. 新しい Key を "Authorization" という名前で追加します。Add a new Key named "Authorization".

  8. [Value] には、前のセクションの最後に ArmClient を使用して作成したトークンを指定します。Set the Value to the token that was created using the ArmClient at the end of the last section.

  9. Postman の [Body] タブを選択します。Select Body tab within Postman.

  10. [raw] オプション ボタンを選択します。Select the raw button option.

  11. テキスト ボックスに、下記のサンプル予算定義を貼り付けます。ただし、subscriptionidbudgetname、および actiongroupname の各パラメーターを、自分のサブスクリプション ID、予算の一意の名前、および作成したアクション グループ名で置き換えてください (URL と要求の本文の両方)。In the textbox, paste in the below sample budget definition, however you must replace the subscriptionid, budgetname, and actiongroupname parameters with your subscription ID, a unique name for your budget, and the action group name you created in both the URL and the request body:

        {
            "properties": {
                "category": "Cost",
                "amount": 100.00,
                "timeGrain": "Monthly",
                "timePeriod": {
                "startDate": "2018-06-01T00:00:00Z",
                "endDate": "2018-10-31T00:00:00Z"
                },
                "filters": {
                },
            "notifications": {
                "Actual_GreaterThan_80_Percent": {
                    "enabled": true,
                    "operator": "GreaterThan",
                    "threshold": 80,
                    "contactEmails": [
                    ],
                    "contactRoles": [
                    ],
                    "contactGroups": [
                    "/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/microsoft.insights/actionGroups/{actiongroupname}
                    ]
                },
            "Actual_EqualTo_100_Percent": {
                    "operator": "EqualTo",
                    "threshold": 100,
                    "contactGroups": [
                "/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/microsoft.insights/actionGroups/{actiongroupname}"
                    ]
                }
            }
        }
    
  12. [Send] をクリックして要求を送信します。Press Send to send the request.

これで、budgets API を呼び出すために必要なものはすべてそろいました。You now have all the pieces you need to call the budgets API. budgets API リファレンスには、特定の要求に関する次のような追加の詳細情報が記載されています。The budgets API reference has additional details on the specific requests, including the following: - budgetName - 複数の予算がサポートされています。budgetName - Multiple budgets are supported. 予算名は一意である必要があります。Budget names must be unique. - category - CostUsage のいずれかであることが必要です。category - Must be either Cost or Usage. API では、コストと使用の両方の予算がサポートされています。The API supports both cost and usage budgets. - timeGrain - 予算が月次か、四半期か、年次かを表します。timeGrain - A monthly, quarterly, or yearly budget. 金額は期間の最後にリセットされます。The amount resets at the end of the period. - filters - 選択したスコープ内の特定のリソース セットだけを対象とするように、予算を絞り込むことができます。filters - Filters allow you to narrow the budget to a specific set of resources within the selected scope. たとえば、サブスクリプション レベルの予算に対して、リソース グループのコレクションをフィルターとして指定します。For example, a filter could be a collection of resource groups for a subscription level budget. - notifications – 通知の詳細としきい値を指定します。notifications – Determines the notification details and thresholds. 複数のしきい値を設定し、通知を受信する電子メール アドレスまたはアクション グループを指定できます。You can set up multiple thresholds and provide an email address or an action group to receive a notification.

まとめSummary

このチュートリアルで学習した内容は次のとおりです。By following this tutorial, you learned:

  • VM を停止するための Azure Automation Runbook を作成する方法。How to create an Azure Automation Runbook to stop VMs.
  • 予算のしきい値に基づいてトリガーされ、適切なパラメーター付きで関連する Runbook を呼び出す Azure ロジック アプリを作成する方法。How to create an Azure Logic App that is triggered based on the budget threshold values and call the related runbook with the right parameters.
  • 予算のしきい値に到達したときに Azure ロジック アプリをトリガーするように構成された Azure Monitor アクション グループを作成する方法。How to create an Azure Monitor Action Group that will was configured to trigger the Azure Logic App when the budget threshold is met.
  • Azure 予算を作成して希望のしきい値を指定し、アクション グループに関連付ける方法。How to create the Azure budget with the desired thresholds and wire it to the action group.

これで、サブスクリプションの予算が完成し、構成した予算のしきい値に達したときに VM がシャットダウンされるようになりました。You now have a fully functional budget for your subscription that will shut down your VMs when you reach your configured budget thresholds.

次の手順Next steps