御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します

Visual Studio から Azure App Service へ公開した際にUnauthorizedエラーが出る件について

Visual Studio の発行機能を利用してアプリケーションを公開しようとした際に下記のようなエラーに出くわしました。今回は当該のエラーの解決方法と経緯を紹介します。

Visual Studio から Azure App Service へ公開した際のエラーについて

Visual Studio で公開したら下記のようなエラーウィンドウが出てきました。

公開でエラーが発生しました。 ビルドに失敗しました。詳細については、出力ウィンドウを確認してください。

診断ログは次の場所に書き込まれました: "C:\Users\username\AppData\Local\Temp\tmpD2D3.tmp"

tmpファイルの中身は下記のようなエラーがでていました。

2024/04/09 17:35:15
System.AggregateException: 1 つ以上のエラーが発生しました。 ---> Microsoft.WebTools.Shared.Exceptions.WebToolsException: ビルドに失敗しました。詳細については、出力ウィンドウを確認してください。
   --- 内部例外スタック トレースの終わり ---
---> (内部例外 #0) Microsoft.WebTools.Shared.Exceptions.WebToolsException: ビルドに失敗しました。詳細については、出力ウィンドウを確認してください。<---

Microsoft.WebTools.Shared.Exceptions.WebToolsException: ビルドに失敗しました。詳細については、出力ウィンドウを確認してください。

===================

詳細については出力ウィンドウを確認するようにとのことなので確認。

'https://<自分のサイトのURL>.scm.azurewebsites.net/api/zipdeploy' 経由で ZIP ファイルを公開しようとしましたが、HTTP 状態コード 'Unauthorized' で失敗しました。

認証エラーだと?ということでデプロイユーザーの Azure App Service や Azure App Service Plan のロールを確認しましたが、共同作成者ロールは付与されており、所有者ロールを付与してもエラーは変わりませんでした。

エラーの解決方法

というわけでUnauthorizedが出たということで下記のような内容を確認しましたが解決せず。

  • Visual Studio にログインしているユーザーが当該リソースにアクセス可能か?
  • Visual Studio にログインしているユーザーがデプロイするのに必要な権限を持っているか?

というわけで困りました。そういえばデプロイするのに必要な発行プロファイルってどうなってたかな?とみてみます。
Azure App Service の Web Apps (Webアプリ) の「概要」から「発行プロファイルのダウンロード」がエラーになりました。

下記のようなエラーメッセージです。

Basic authentication is disabled.

これでふとデプロイが制限されてる?と気づきました。
Azure App Service Web アプリの「構成」→ 「SCM 基本認証の発行資格情報(SCM Basic Auth Publishing Credentials)」という項目が新しく追加されていました。「FTP 基本認証の発行資格情報」の設定は前からありましたが、気づきませんでした。

結論、新しく作成されたApp Service はこの「SCM 基本認証の発行資格情報」の設定がOFFになっているというのが原因でした。

ONにしてあげて「発行」し直したら無事発行することができました。

Azure App Service の新しい自動スケーリング(トラフィックベースの自動スケール)を試してみた

Azure App Service といえば WebApps を簡単にホストできるPaaSサービスです。特徴としてインスタンスの自動スケールがありますが、今回 Azure App Service の自動スケール方法に新しい方法(トラフィックベースの自動スケール)がGAされたので紹介します。

2024年3月25日リリースのApp Service の新自動スケーリングについて

2024年3月25日にMS公式のAzure更新通知から下記のようなアナウンスがありました。

Azure App Service is pleased to announce general availability of the "Automatic Scaling" feature. We received important feedback about the Automatic Scaling feature during the preview phase and have made following enhancements to the Automatic Scaling feature.
(省略)
The App Service platform will automatically scale out the number of running instances of your application to keep up with the flow of incoming HTTP requests, and automatically scale in your application by reducing the number of running instances when incoming request traffic slows down.

以下、日本語訳。
Azure App Service では、"自動スケーリング" 機能の一般提供が開始されました。プレビュー段階で自動スケーリング機能に関する重要なフィードバックを受け取り、自動スケーリング機能に次の機能強化を行いました。
(省略)
App Service プラットフォームは、受信 HTTP 要求のフローに対応するためにアプリケーションの実行中のインスタンスの数を自動的にスケールアウトし、受信要求トラフィックの速度が低下すると実行中のインスタンスの数を減らすことでアプリケーションを自動的にスケールインします。

General Availability: Automatic Scaling for App Service Web Apps | Azure の更新情報 | Microsoft Azure より引用。

新しいAzure App Service に新しい自動スケールの方法が追加されたようですね。今回はそんな新しい自動スケールを紹介していこうと思います。

Azure App Service のスケーリング方法比較

Azure App Serviceには前からある「マニュアル(手動のスケーリング)」、「スケジュールとメトリックを用いたルールベースの自動スケーリング」と新機能の「トラフィック量に基づいた自動スケーリング(新機能)」があります。それではスケーリング方法を比較していきましょう。

マニュアル(手動のスケーリング)

こちらは自動スケールは設定せず、手動でインスタンス数を変更します。

スケジュールとメトリックを用いたルールベースの自動スケーリング

こちらはApp Service 旧来のオートスケールであるルールベースのオートスケール設定です。
自動スケーリングの画面は見慣れた画面ではないでしょうか?
CPU使用率などのメトリックの値やスケジュールによるスケールアウト/スケールインのルールを作成しておくことでルールに則った自動スケーリングが行われます。

トラフィック量に基づいた自動スケーリング(新機能)

2つ目のルールベースの自動スケーリングの名前が似ていてややこしいので新しい方は「トラフィック量ベース自動スケーリング」と呼びます。
特徴はトラフィック量に応じて、自動的に判断してWebアプリごとにスケールアウト/インが可能な点です。また今まではApp Service Plan ごとインスタンスう数がスケールアウトしていましたが、今回の新オートマチックスケールにより負荷が高いWebアプリのみのインスタンス数のスケールアウトが可能になりました。
そしてこちらが今回新しく追加した自動スケーリングの設定画面です。

「トラフィック量ベース自動スケーリング」に設定すると、下記のような設定項目が現れます。ここの設定項目により自動スケールの設定が可能です。

項目名 単位 説明
Maximum burst(最大バースト) プランで共通 Number of instances this plan can scale out under load. Value should be greater than or equal to current instances for this plan. (このプランが負荷下でスケールアウトできるインスタンスの数。このプランの現在のインスタンス数以上である必要があります。)
Always ready instances(常に準備されたインスタンス) Web Apps ごと Number of instances that are always ready and warm for this web app.(このWebアプリケーションの常に準備され、ウォームな状態にあるインスタンスの数。)
Enforce scale out limit(スケールアウト制限の強制) Web Apps ごと Limit the number of instances this web app can scale out to.(このWebアプリケーションがスケールアウトできるインスタンスの数を制限します。)
Maximum scale limit(最大スケール制限) Web Apps ごと The maximum number of instances this web app can scale out to.(このWebアプリケーションがスケールアウトできる最大のインスタンス数。)

少し設定値がわかりづらかったのでまとめてみました。

  • 「最大バースト」がApp Service Plan 内での最大インスタンス数。
  • 「常に準備されたインスタンス」がWebアプリごとの最小インスタンス数。
  • 「スケールアウト制限の強制」によってこのWebアプリがスケールアウトできる最大インスタンス数を設定するかどうか選択。
  • 「最大スケール」は「スケールアウト制限の強制」がONの場合のみ指定可能なこのWebアプリがスケールアウトできる最大インスタンス数を設定できます。

つまりWebアプリごとにスケールアウト/インできるようになったトラフィック量ベースの自動スケール設定ができるようになったようですね。

新しいトラフィック量ベースのオートスケールを試してみた

それでは実際に試してみます。
1つのApp Service Plan 上にWeb Apps1とWeb Apps2 を乗せて作ります。
Web Apps1の設定。

Web Apps2の設定。

何も負荷をかけていないこの状態でまずはWebApps1とWebApps2の現在のインスタンス数を確認してみようと思います。
新しいオートスケールによるインスタンス数はWebApps機能一覧の「監視-メトリック」のメトリック「Automatic Scaling Instance Count」から確認できます。↓の画像のように最初のインスタンス数は1のままでした。

この状態でWebApps1にのみ負荷をかけてみましょう。負荷はロードテストが簡単にできるAzure Load Testing でHTTPリクエストを投げてみました。

Azure Load Testing はこちらの記事で紹介してますのでこちらもご参照ください。
onarimon.jp

WebApps1に負荷をかけてみたところ、トラフィックによる負荷を検知して自動的にスケールアウトしていることがわかります。また、ドキュメントにも書かれていましたが、負荷テストが終了するとスケールインに向けてレビューが行われるようで5分ほどして自動的にスケールインされていました。

WebApps2のほうですが、こちらには負荷をかけていないため、こちらのアプリはインスタンス数は1のままキープされていますね。

これが今回のトラフィック量ベースの自動スケールの動きです。

新しいトラフィック量ベースの自動スケールの仕組み

新しい自動スケールは正常性チェックメカニズムに加えて、エンドポイントに向けての正常性プローブを投げることによりスケールの判定をしているようですね。

定期的に投げられている「GET /admin/host/ping」、「GET /」の通信がそれにあたるようです。

新しいトラフィック量ベースの自動スケールの制限事項について

とても便利な新しいトラフィック量ベースの自動スケールですが、下記のような制限事項があるのでご注意ください。

  • 価格レベルはPremium V2 (P1V2、P2V2、P3V2) と Premium V3 (P0V3、P1V3、P2V3、P3V3、P1MV3、P2MV3、P3MV3、P4MV3、P5MV3) のみ。
  • 最小インスタンス数は1~
  • Azure Functions は未対応。Azure Functions が載ったApp Service Plan は新しいトラフィック量ベースの自動スケールは選択不可

App Service Planの価格レベル(SKU)はプレミアムプランのV2,V3でないと利用できないのでご注意ください。Azure Functions が使えないのも注意。

トラフィック量ベースの自動スケールの課金形態について

課金形態はApp Serivce Plan のSKUベースの料金で自動スケーリングされたインスタンス数分が秒単位で課金されるみたいです。

課金に対しては今まで以上に必要なときにのみの課金とできるのでコスト最適化にもつながる気がします。

利用シーン

今回の新しい自動スケールですが、利用シーンを考えてみました。

  • Web Apps ごとのトラフィックに応じたスケーリングが可能
  • 開発環境などのWeb Apps はそのWebApps のMAXサイズを制限する
  • ルールを分析して設定する必要はなく、すべてが自動で行われるスケーリング

メトリックを分析して、閾値を考えての手間が意外と時間がかかって大変なのと、そこまで悩んだメトリックのスケーリングルールが本当にうまく動かない例もたくさんあると思うので今回のオートマチックな自動スケーリングによって、管理工数の削減が期待できますね。

参考情報

learn.microsoft.com

techcommunity.microsoft.com

自身が使用するリソースの提供停止予定の一覧を表示するAzure Advisor「サービスの廃止ブック」が便利です

クラウドサービスを使う上で、意識しないといけない使用サービスや機能の提供停止。
もちろん各クラウドサービス事業者はメールでの通知などで告知を行っていますが、見逃してしまうこともあると思います。
Microsoft Azure において今後のサービス廃止の影響を受ける自身の環境のリソースをリストアップしてくれる Azure Advisor の機能「サービスの停止ブック」が便利です。

Azure Advisor サービスの廃止ブックとは

説明はMicrosoft 公式に書かれているのでこちらで確認できます。
learn.microsoft.com

サービスの廃止ブックは、サービスの廃止についてのただ一つの一元化されたリソース レベル ビューを提供します。 これは、影響を評価し、選択肢を評価し、提供が終了されるサービスと機能からの移行を計画するのに役立ちます。

サービス廃止予定一覧から自身の環境に影響のあるリソースを一元管理できるワークブックですね。

実際に Azure Advisor サービス廃止ブックを見てみる。

サービス廃止ブックを確認するには「Azure Advisor」のページから「Workbooks」→「サービスの廃止(プレビュー)」を選択します。

こちら↓がサービスの廃止ブックです。

ビューの選択で「Impacted Services」を選択すると自分の環境に影響のあるサービスを羅列することができます。「All Services」を選ぶと自分の環境とは関係ないすべてのAzureサービス廃止の一覧を確認することができます。今回の記事の用途ですと「Impacted Services」を使用します。「Impacted Services」を選択している場合は絞り込み条件としてサブスクリプション、リソースグループ、リージョンごとに絞り込むことができます。

「Azureサービスの廃止」の欄では廃止予定のAzureサービスや機能が日付順で表示されていて、自身の環境で影響のあるリソースがいくつあるかが表示されています。こちらの画像の例ですと Application Insight の Single URL Ping Test の機能が 2026年9月30日に廃止予定ですが、この環境では1つ影響の受けるリソースがあるようですね。各行のリンクをクリックすると、MS公式からの廃止案内のページに飛ぶようです。

リージョン別に影響の受けるリソース数の確認も可能。

一番下に一番見たかった自身のサービスで影響の受けるリソースが表示されます。
影響の受けるリソースの廃止機能、廃止日、リソースグループ、リソース名が表示されるので、どのリソースをいつまでにどんな対応を行わなれければ行けないかが一目でわかります。

「Azureサービスの廃止の欄」にあったチェックボックスを付ければ特定の廃止サービスのみに絞って表示できるなど廃止サービスの一覧化する上で必要な機能はほぼそろっていると言えると思います。

最後に

クラウドサービスのサービス廃止、機能廃止の対応はクラウドサービスを使うものとしては義務のようなものです。一方で様々なサービスを組み合わせて使う現状で環境全体の影響把握、対応は大変なものだと思います。この「Azure Advisor サービス廃止ブック」を利用することで、管理が楽になると思いますので是非自分としても活用していこうと思います。

Azure Load Testing で JMeterスクリプトなしで Azure Portal からHTTP要求テストができるようになったので試してみた

自作のサービスに対して不可テストを実行できるフルマネージドサービス「Azure Load Testing」。今まで「Azure Load Testing」を使うには JMeter スクリプトを用いて実行する必要があったため、JMeter の知識がない方には少しハードルがありました。今回、新機能として JMeter スクリプトを使わず、Azure Portal からHTTPリクエストの負荷テストが実行できるようになったので紹介したいと思います。

Azure Load Testing で Azure Portal から HTTP要求テストを直接、そして簡易に作れるようになりました

2024年1月11日の Azure 更新情報で下記のような情報が公開されました。

Azure Load Testing has introduced a new feature that simplifies the process of creating load tests, you can now directly input your HTTP requests in the Auzure portal without the need for a JMeter script. This eliminates the need for prior knowledge of testing tools, making it more accessible for users to run tests.
Entering requests is straightforward – just specify the endpoint, HTTP method, headers, query parameters, and request body. If you prefer, you can even use a cURL command for the request.

Create tests by adding HTTP requests in Azure Load Testing | Azure の更新情報 | Microsoft Azureより引用。
以下、機械翻訳です。

Azure Load Testing では、ロード テストの作成プロセスを簡略化する新機能が導入され、JMeter スクリプトを必要とせずに Azure ポータルで HTTP 要求を直接入力できるようになりました。これにより、テストツールに関する予備知識が不要になり、ユーザーがテストを実行しやすくなります。
リクエストの入力は簡単で、エンドポイント、HTTPメソッド、ヘッダー、クエリパラメータ、リクエスト本文を指定するだけです。必要に応じて、リクエストにcURLコマンドを使用することもできます。

Create tests by adding HTTP requests in Azure Load Testing | Azure の更新情報 | Microsoft Azureより引用

今まで Azure Load Testing でテストを作成するには JMeter のスクリプトを使って定義する必要がありましたが、Azure Portal のGUIからポチポチするだけでHTTP要求の負荷テストを作成、実行できるようになったようですね。案内文にも書かれていますが、テストツールに関する事前知識がなくなったのは大きいと思います。かく言う私もそれを理由に少し避けてきてしまっていたので今回のアップデートでかなり参入障壁が下がったと思います。

HTTP要求テストを Azure Portal から作成、実行するのをやってみた

Azure Load Testing にHTTP要求のテストを追加する方法は下記のMS公式ドキュメントのクイックスタートで紹介されていますね。
learn.microsoft.com

この記事でも軽く作成方法を紹介します。
Azure Portal 上の Azure Load Testing のテストの画面で「+作成」を押すと「URL ベースのテストを作成する」という選択肢ができています。  

こんな感じでテストURLと負荷想定の設定を行うことができます。今回は基本設定だけで済ましてみます。
適当に作ったApp Service 上のAPIをターゲットにしてます。

こんな感じでテストができましたね。
テストの詳細に飛ぶと「実行ボタン」があるので実行。
テストの実行状態が「Provisioning」から「Executing」となり負荷テストが実行されています。

状態が「Done」となったら完了です。
実行結果をみるとこのような感じで大量の要求を発生させることで負荷を与え、負荷テストを実行することができました。
要求数、応答時間、エラーの発生数などなどの分析情報が標準で確認できますね。

予想通り、実装はかなり簡単になった印象なので試しやすくなりました。
詳細設定を有効にすればメソッドやパラメーターの指定を行ったり、さらに細かい負荷の設定やエラー条件の定義、対象リソースのメトリック監視なども合わせて行うことができる用です。自由度も結構ありますね。
もちろん Load Test を行う際は実行する環境などに注意してお試しください。

【Azure Communication Services メール送信】1つのメールアドレスを別々のACSにそれぞれ紐づけて運用可能か?【可能です】

メール送信の機能を持つ Azure Communication Services ですが、ふと同じメールアドレスを別々の Azure Communication Services で使えるのか気になったので調べてみました。

Azure Communication Services メール送信で送信元のメールアドレスにカスタムドメインを設定する方法

これはMS Learn のクイックスタートのドキュメントにやり方が載っているので省略します。
learn.microsoft.com

簡単に言うとドメイン名を指定して、TXTレコード追加してドメイン所有者確認して、SPF、DKIM、DKIM2レコードなどなどを追加して送信者認証を構成するだけです。

ここでふと、別々のAzure Communication Services から同じメールアドレスを使って運用できるのか気になったので調べてみました。

Microsoft サポートに質問してみた → 問題なく設定できそう

振り返ってみるとかなり雑な質問内容でしたが、下記のような内容でサポートに質問を投げました。

現在、Azure Communication Services のメール機能を使用して自作のアプリケーションからメールを通知する機能を持ったアプリケーションを提供しています。その際、自社で購入しているドメインを設定しています。 今回、弊社で提供している別のサービスでも同じドメインを使用して別の Azure Communication Services を立てて運用できるかという話が出てきて疑問に思ったのですが、1つのドメイン(メールアドレス)で別々の Azure Communication Services から使用することは可能でしょうか?ドメイン認証や設定の内容でかぶってしまうことで使えないということがあるのでしょうか?

結論から言うと独自に所持しているカスタムドメインであろうと、Azure Communication Services で発行したドメインであろうと同じドメインを共有することが可能であるという回答を頂きました。良かったです。こんな雑な質問に回答して頂いたサポート担当の方に感謝。

実際にできるか試してみた

一応、自分でもできるかためしてみました。
別々のサブスクリプション、リージョンにある Azure Email Communication Services に対して同じドメインが設定可能なことがわかります。

この画像だけだとわからないのですが、下記のように別々のACSから同じ送信者メールアドレスを用いてもちゃんと届くことが確認できました。

ということでAzure Communication Services メール送信機能では、1つのメールアドレスを別々のACSに紐づけて運用可能であることがわかりました。

Azure Communication Services の関連記事

onarimon.jp

onarimon.jp

2024年4月からのMicrosoft Azure の日本円価格改定について調べてみた

2024年4月の Microsoft Azure の価格改定について、調べたことをまとめておこうと思います。
(2024年2月29日)Microsoft からの発信された。価格改定情報の内容を反映しました。

2024年4月に価格改定!? クラウドサービス価格が20%の料金引き上げ!?

2023年12月6日、下記のようなニュースがマイクロソフトから公開されました。

日本マイクロソフト株式会社は、2024 年 4 月 1 日から、法人向けソフトウエアおよびクラウドサービスの価格を改定します。新価格は、日本円の為替変動に伴い、いずれも 20% の引き上げとなり、2024 年 4 月以降に適用されます。

マイクロソフトは、ソフトウエアおよびクラウドサービスについて、現地価格の影響を定期的に評価し、地域間の合理的な整合性を確保しています。今回の変更はその評価の結果により、価格を米ドル水準に近づけて調整した結果です。今後も、米ドルに対する為替変動を考慮し、年 2 回の定期的な価格評価の一環として、現地通貨建ての価格を調整する場合があります。

このアナウンスメントは、ハードウェア (Surface 等) またはコンシューマ向けに提供している Windows, Office および Microsoft 365 サービス等は対象としておりません。マイクロソフトの製品がリセラーを通じて販売される間接販売の場合、最終価格と販売通貨は引き続きリセラーによって決定されます。

法人向けソフトウエアおよびクラウドサービスの価格改定について - News Center Japanより引用。

まとめると、2023年4月1日より、日本円の為替変動に合わせた価格調整により一部を除くMicrosoft 製品 全体に20%の値上げが発生するということになります。つまり円安による影響ですね。実は2023年4月にも同じように価格改定が行われていて、Azure の日本円価格は15%値上げしたばかりだったのも記憶に新しいかなと思います。2023年4月の値上げについては下記の記事で紹介していますそちらをご参照ください。
onarimon.jp

マイナス調整が入っている国もあるので純粋な値上げではなく為替レートの調整

今回、他の国の調整率を見たところしっかり下がっている国も一つだけですがありました。ブラジルレアル(BRL)だけは7%安くなっています。そのことから、Azure全体の価格の値上げではなく、あくまで為替レートによる調整ということがわかるのでまだ今後も価格が下がる可能性もなくはないと思うので少し安心。

Consistent global pricing for the Microsoft Cloud - Storiesより引用。

(2024年2月29日更新)Azure の値上げ額は17.1%の値上げとアナウンスあり

2024年2月29日の早朝に Microsoft Azure を利用していてかつ、今回の日本円で請求されるアカウントをお持ちの方向けにAzure価格調整についてのメールが届きました。

2024年4月1日より、日本円(JPY)のAzureサービス価格は、米ドル(USD)水準により近づけて調整するため、17.1% の値上げを行います。この調整後も、日本円で購入されるお客様は Azureの提供価格に高い競争力があることを引き続きご承知頂けるかと存じます。
 
マイクロソフトは、マイクロソフトのクラウド価格を米ドル水準にグローバルに合わせる既存プロセスについて、明確かつ透明性のある手順を定めています。これにより、異なる地域や通貨をご利用のお客様が、現地通貨の米ドル(USD)に対する為替レートを反映した一貫性のある価格を受けられるようになります。

ということで2024年4月からのMicrosoft Azure の価格改定は17.1%の値上げとなったようです。
合わせて、契約ごとの影響範囲についてもメールには記載されていましたので、次の章で紹介していますのでそちらもご参照ください。

(2024年2月29日更新)2024年4月からのサービス価格改定の影響範囲について

ここからはMicrosoftから説明があったAzureサービス価格の値上げについての影響範囲を契約ごとに紹介します。

エンタープライズ契約(EA)またはエンタープライズサブスクリプション契約(EAS)、MPSA、サーバーおよびクラウド登録(SCE)

これらの契約で Azure を利用しているユーザーは、契約開始時点でのAzure価格でベースラインが決められていて、契約期間(1年または3年ごと)はベースラインを上回らない価格保護が適用されています。そのため、これらの契約では今回の値上げではベースラインまでの値上げとなります。 learn.microsoft.com
ただし、契約更新のタイミングでベースラインが見直されるため、今回の17.1%の値上げした価格でベースラインが見直されることになると思います。

但し、契約が満了して"延長期間"となっている場合は価格保護は効かないので、価格引き上げは2024年4月から適用されるようなのでご注意ください。

従量課金制のサブスクリプション(MOSP/Web-Direct)

従量課金サブスクリプションの場合、EA契約などと違って最低購入金額の要件がない代わりにベースラインの保護はないため、2024年4月より価格が改訂されます。日本円で購入している場合は価格がAzure.comに掲載されている米ドルの価格と同等になるとのことです。
そもそも米ドル建てだよって方は気にする必要はないですね。
azure.microsoft.com

Azure の クラウドソリューションプロバイダープログラム(CSP)

CSP の場合は 販売代理店のパートナーによって価格がどうなるか決定されるため、価格の変更はパートナーごとに変わります。従量課金と同じで為替ベース価格調整が毎月行われているかで影響が変わりそうです。詳しくは担当するパートナーにお問合せください。
azure.microsoft.com

Azure の新しいコマース (Microsoft 顧客契約)

Azure の新しいコマース価格は米ドル建てであり、今回の変更には影響ありません。

とのことです。こちらの契約については詳しくないので解説できないです。申し訳ございません。
詳しくはお問い合わせしてみてください。

こんなときだからこそ Azure コストの節約を考えよう

値段が上がってしまったときこそ、輝くAzureの節約術もあります。
本ブログでは、そんなAzureの節約サービスについていくつか紹介している記事もありますので是非、そちらをご参照ください。

onarimon.jp

onarimon.jp

onarimon.jp

onarimon.jp

最後に

円安の影響で、日本の Azure ユーザーに対してはなかなかつらい価格改定となってしまいましたね。コスト管理者にとっては頭を悩ませる内容だと思います。こういうときだからこそ、無駄づかいしている部分や節約できる部分はないかを見直すいい機会として動いていく必要がありそうですね。

【Microsoft Cost Management】リソースグループに設定したタグでコスト発生部門を振り分ける運用について考える

Microsoft Azureを使用していて一つのサブスクリプション内でもコスト発生部門がバラバラで集計がなかなかうまく取れないという方もいるかと思います。実際私がそうなのですが...
今回はそういったケースで使える機能と運用方法をご紹介しようと思います。今回紹介する方法は基本的にエンタープライズの契約(EA契約など)を行っている方向けの方法となります。契約の種類によって使えない機能などもございますのでご注意ください。

「Azure Policy」でリソースグループで部門集計用タグの追加を強制するポリシーを作成する

Microsoft 公式ページにある「リソース グループでタグを必須にする」ポリシーを使用すればある特定のタグをリソースグループで必須にすることができます。
learn.microsoft.com

公式ページのリンクからAzureポータルの当該ポリシーを定義するページに遷移しますので「割り当て」を押して、スコープや割り当て名、実際に強制するタグ名となるパラメーターの設定をするだけでポリシーを適用できます。

このポリシーを適用しても既存リソースグループには影響せず、新規でリソースグループを作る際にタグを設定していないと作成できないようになります。

これでリソースグループに部門集計タグが強制される状態にはなりましたが、Microsoft Cost Management のコスト分析では「リソースグループではなくリソース」にタグが付与されれている必要があります。そのため、次の機能を使用してタグの値を継承します。

「タグの継承」でリソースグループに設定したタグをリソースに継承する

「タグの継承」機能を使用してリソースグループに設定したタグと値をリソースグループに属する各リソースに継承します。なお、タグの継承に関しては下記の契約形態のみ可能です。

  • Enterprise Agreement (EA)
  • Microsoft 顧客契約 (MCA)
  • Azure プラン サブスクリプションを使用した Microsoft Partner Agreement (MPA)

タグの継承については別記事で紹介していますのでそちらをご参照ください。
onarimon.jp

「コスト割り当て」を利用して共有リソースを案分したり、コストを別の部門に付け替える

また、部門別に経費集計したい場合などに気になるのが、共有リソースなどの費用を案分したい場合などが想定されますね。その場合はコストの割り当て機能を利用することで「サブスクリプション」、「リソースグループ」、「タグ」の単位でコストを他の「サブスクリプション」、「リソースグループ」、「タグ」に配分設定することができます。こちらも使用できるユーザーが限られているのでご注意ください。

  • MCAエンタープライズ契約
  • MCA 個別契約
  • Enterprise Agreement (EA)

案分するコストは手動でも設定できますが、均等に配分したり、配分先の総コストの比率で配分したり、コンピューティングコスト、ストレージコスト、ネットワークコストなどの使用量に応じて案分したり設定することもできます。
詳しくは別記事で紹介しているのでそちらをご参照ください。
onarimon.jp

「コスト分析画面」でコストをタグごとにグループ化して表示する

あとはコスト分析画面でどのように表示されるか確認してみましょう。
EA契約ですと、「コスト管理と請求」→「課金スコープ」→課金スコープを選択→「コスト分析」コストのグラフが表示されると思います。


グループ化で「タグ」→「<ポリシーで設定したタグ名>」を選択します。このときタグの継承ができていないとおそらく候補にタグ名が出てこないです。

ボリュームによっては集計に少し時間がかかりますが、下記のような形式でタグごとのコスト分析ができるようになります。あとはCost Management の機能で好きにカスタマイズして利用しましよう。
グループ化:経費集計タグ、細分性:累積、領域形式

グループ化:経費集計タグ、細分性:月単位、テーブル形式

これ以上に細かい分析が必要な場合は、EA契約であれば「使用量 + 請求金額」から使用状況詳細のCSVをダウンロードして使用したり、Microsoft Cost Management REST API を使用してデータを取得して独自でアプリケーションなどを構築することもできますが、少し作りこみが必要です。
用途に合わせて使い分けてみてみましょう。

Azure SQL Database 無料枠がプレビューしたので早速使ってみた

Microsoft Azure では検証、開発用に無料プランや無料枠が用意されることがありますが、今までDBの無料枠と言うと、Azure Cosmos DB しかありませんでした。しかし Cosmos DB ですと、RDB用途には使いづらくDBリソースの無料枠の登場が期待されていました。
そんな中、Azure SQL Database Free Offer がパブリックプレビューとなったため早速ですが、試してみた紹介記事を書いてみました。

待望の Azure SQL Database Free Offer が パブリックプレビューに

2023年9月28日のAzure更新情報の下記ページに該当の情報が掲載されていましたので引用します。
Public Preview: Azure SQL Database free offer | Azure の更新情報 | Microsoft Azure

Try Azure SQL Database free of charge for the life of your subscription. Power the application you want to build with just a couple of clicks. With this new offer you can get a a 32 GB General Purpose, serverless Azure SQL database with 100,000 vCore seconds of compute free every month. This is a great starter option for many scenarios, whether you are learning SQL, developing a web app that needs a database, or you simply need an additional database for proof of concept on an application such as PowerBI reporting. This new offer is available to any Azure subscription type. Every month your free amount will renew, for the life of the subscription. If you want to scale up your database, it's just a few clicks to continue usage for additional charges.

以下、日本語訳です。

サブスクリプションの有効期間中、Azure SQL Databaseを無料でお試しいただけます。数回のクリックで、構築したいアプリケーションをパワーアップできます。この新しいオファーでは、32 GBの汎用サーバーレスAzure SQLデータベースと100,000 vCore秒のコンピューティングを毎月無料でご利用いただけます。これは、SQLを学習している場合、データベースを必要とするWebアプリケーションを開発している場合、またはPowerBIレポートなどのアプリケーションの概念実証のために追加のデータベースが必要な場合など、多くのシナリオに最適なスターターオプションです。この新しいオファーは、どのAzureサブスクリプションタイプでも利用可能です。サブスクリプションの有効期間中は、毎月無料期間が更新されます。データベースをスケールアップしたい場合は、数回クリックするだけで、追加料金で利用を継続できます。

Azure SQL Database のサーバレス版が無料枠の制限の中で使えるようですね。
無料枠の制限は下記3つです。

  • サブスクリプションごとに1つのデータベース制限。
  • 100,000仮想コア秒
  • 32GBデータ容量

なかなか無料枠も大きいので試用用途やスモールスタートな開発用途だったら充分そうです。

というわけで公式のページの説明を見ながら実際に構築してみようと思います。

Azure SQL Database free offer - Azure SQL Database | Microsoft Learn

Azure SQL Database 無料枠を早速試してみた

無料枠を使用するには SQL Database のリソース作成画面から作ることができます。

作成画面に何やらそれらしい案内文があります。「Apply offer (Preview)」をクリックしておきます。

通常のSQL Database 作成の流れと同じく データベース名やサーバーの設定をして「コンピューティングとストレージ」の部分で変化が出てきます。
↓設定前。「データベースの構成」を選択。

無料枠のApply offer を選択した状態でデータベースの構成の画面を開くと何やら今までなかった項目がでてきます。

設定項目はシンプルに2つです。

項目名 説明
Free database offer (Preview) Free Offer を適用するかどうか
Behavior when free offer limit reached 空き容量制限に達したときの動作※

※空き容量制限に達したときの動作は「翌月まで自動一時停止する」か「追加料金でデータベースを継続する」が選べるようです。

その他の項目は最大仮想コア数以外は変更不可です。

2023年9月28日現在ではSQL Database の使用できるリージョンは米国東部、米国中西部、英国南部です。

そのほかの設定は今までと変わりなく、あとは作成ボタンを押すだけで無料枠のSQL Database の作成は完了です。

リソース作成後もFree オファーの適用/適用解除や空き容量制限に達したときの動作

Azure SQL Database 無料枠を使ってみた感想・使用感について

取り急ぎ作成してみたので、使用感などは追記の予定です。

参考ページ

azure.microsoft.com

learn.microsoft.com

Azure Communication Services メール送信機能の送信制限引き上げ方法についてのメモ【問い合わせ方法、内容】

Azure Communication Services のメール送信機能に設けられている時間あたりの送信数などの制限ですが、制限の引き上げ方法を残しておこうと思います。

Azure Communication Services メール送信機能のレート制限事項について

2023年8月28日現在、Azure Communication Services メール送信機能には下記のような制限があります。
こちらの制限を超える場合は、メッセージは送信キューに登録されずメール送信が行えません。

  • 電子メール送信数の制限
    • 1分30メール送信まで
    • 60分100メール送信まで
  • 電子メール状態の取得
    • 1分60回取得まで
    • 60分200回取得まで
  • サイズの制限
    • 電子メールの受信者の数は1回50人まで
    • 電子メール要求の合計サイズ(添付ファイル含む)は1回10MB まで

最新の制限値に関しては公式ページをご参照ください。
learn.microsoft.com

制限の閾値を見てみると結構簡単に達してしまうような値ですよね。おそらくスパムメールなどの不正使用に使われないようにするために設けられた制限ですが、このままでは本番運用できませんのでレート制限を引き上げる必要があります。

メール送信機能のレート制限を引き上げる方法

メール送信機能のレート制限を引き上げる方法ですが、Azureサポートリクエストから送信ボリュームの増加を要求可能とのことです。
問題の説明ではサポートリクエストで下記のような感じで情報を入力しましょう。

上限の引き上げで詳細情報として必要な情報があるのですが、サポートの方に聞いたところ下記のような情報を説明に追加してほしいとのことでした。

  1. メール送信数制限を引き上げたい対象のサブスクリプションID、テナント名、Azure Communication Serviceリソース名、Email Serviceリソース名  
  2. 希望の上限(項目ごと、n件/1分、m件/1時間など具体的な値)
  3. 送信に利用するドメインはカスタムドメインか
    はい/いいえ
  4. 送信に利用するドメイン(noreply@example.com など)
  5. メール機能を利用する目的
  6. 送信を利用するユーザーの会社名 (英語表記)
  7. 送信を利用するユーザーの会社のウェブサイト URL
  8. 送信を利用するユーザーの会社の事業内容について簡潔にご説明ください (一言程度)
  9. 他のアプリケーションから本サービスを呼び出して Email を送信するか。
  10. 9で呼び出す場合、呼び出し元のアプリケーション種別 (お客様独自アプリケーション or Azure リソースの場合製品名(App Service, Logic App, Azure Functions, など))
  11. 送信元となるメールアドレス (複数ある場合は全て記入)
  12. 送信先となるユーザーが配信解除を希望、もしくは送信不達となった場合、対象ユーザーをどのように送信先から除外するか

これらの情報やメール配信の失敗率、ドメインの評判、スパムや不正利用のレポートなどで判断され、制限の引き上げが承認されるとのことです。そのため、制限に引き上げを考えている方はここら辺の情報を用意しておくといいでしょう。私の場合はその後、Azureサポートから設定した値に関して1回やり取りがありその後、制限引き上げの対応が行われました。
サポートの緊急度にもよると思いますが、注意するところとしては、申請してから短い期間ですぐに審査が終わって承認されないと思うので、本番運用開始前から計画的にサポートに依頼しておく必要がありそうですね。

(参考)Azure Communication Services メール送信機能 の初回設定方法の記事

Azure Communication Services のメール送信機能の設定方法の紹介は下記の記事で紹介しておりますのでそちらをご参照ください。
onarimon.jp

参考情報

learn.microsoft.com

Azure Advisor のコスト最適化ブック(プレビュー)を使ってリソースの整理を行い、コストを最適化する

2023年7月31日のAzure Update で公開された「Azure Advisor の Azure コスト最適化ブック」について紹介してみます。

Azure 更新情報「パブリック プレビュー: Azure Advisor の新しいブック テンプレートを使用してコスト最適化の機会を評価する」

2023年7月31日のアップデートで発表された Azure Advisort の新しいブックテンプレートとして Azure コスト最適化ブック(プレビュー)が公表されました。
azure.microsoft.com

以下、Azure更新情報ページの引用です。

The Azure Cost Optimization workbook serves as a centralized hub for some of the most used tools that can help you drive utilization and efficiency goals. It offers a range of recommendations, including Azure Advisor cost recommendations, identification of idle resources, and management of improperly deallocated Virtual Machines. Additionally, it provides insights into leveraging Azure Hybrid benefit options for Windows, Linux, and SQL databases.

Public preview: Assess cost optimization opportunities using new workbook template in Azure Advisor | Azure の更新情報 | Microsoft Azure より引用。

以下、日本語翻訳です。

Azure コスト最適化ブックは、使用率と効率の目標を推進するのに役立つ、最もよく使用されるツールの一元化されたハブとして機能します。Azure Advisor のコストに関する推奨事項、アイドル状態のリソースの特定、不適切に割り当て解除された仮想マシンの管理など、さまざまな推奨事項が提供されます。さらに、Windows、Linux、および SQL データベースに対する Azure ハイブリッド特典オプションの活用に関する分析情報も提供します。

まとめると、新しい Azure Cost 最適化ブックは現在のリソースの使用状況を一元化管理することで、さまざまな コストに関するAzure Adovisor の推奨事項を適用したり、リソースの整理をするもののようですね。

Azure コスト最適化ブックを実際に試してみた

Azure 更新情報ページのリンクは切れていましたが、Microsoft Learn の公式ページも用意されておりました。
learn.microsoft.com

この手順に従えば簡単に Azure コスト最適化ブックを使用することができそうです。

Azure Advisor のページより Webbooks をクリック。

「コストの最適化(プレビュー)」のテンプレートを選択。

コスト最適化ブックが開きます。

タブから「コンピューティング」、「Azure ハイブリッド特典」、「ストレージ」、「ネットワーク」を選択できます。その後、画像のように「コンピューティングリソース」を選択すると「仮想マシン/VMSS」、「AKS」、「App Service」、「Advisor のレコメンデーション」が選択肢で選べます。

Azure App Service を選択すると、App Service Plan ごとに紐づいたApp Service の一覧が確認でき、それぞれのアプリの稼働状況などが確認できます。それぞれの・リソースの整理や棚卸しに効果を発揮しそうですね。EXCEL出力もできるようです。

「Advisor のレコメンデーション(Advisor の推奨事項)」を選択することでそのまま Azure Advisor のコストに関する推奨事項を参照することもできるようです。今までも Azure のリソース単位でリストアップすることは問題なくできていたと思いますが、コスト目線でAzureリソースを見直すことができる今回のブックはとても便利なものだと思います。

Azure Cost 最適化ブックの対象リソースとできることについて

Azure Cost 最適化ブックの対象リソースと確認できることとしては下記のような内容が現在のところ対象のようです(一部抜粋)。

  • 割り当て停止が適切に行われていないVMの一覧
  • ハイブリッド特典を使用していないWindows VM、SQL Server VM
  • 30日より前の古いディスクのスナップショットのストレージ
  • 空のバックエンドプールのある Load Balancer
  • アタッチされていないパブリックIP

こちらに関しては、公式ページでまとめられているのでそちらを参照していただければと思います。まだプレビューですので対象リソースや確認できることもふえてくるでしょう。 learn.microsoft.com

参考ページ

azure.microsoft.com

learn.microsoft.com