APIM のリトライポリシーでリトライ時に content-length mismatch 発生する時の原因と回避方法

API Management でバックエンドからエラーが応答された場合に備えてリトライポリシーを設定しています。しかし、リトライ動作時に Content length mismatch ProtocolViolation at forward-request のエラーが発生する場合があります。この原因と対処について教えてください。 回答指定されたバックエンド サービスに要求を転送する forward-request ポリシーは既定でリクエスト body をバッファしない動作となるため、リトライが発生した場合 body データを含めず再リクエストが発生いたします。この時、POST などの body を含むリクエストは Content-Length ヘッダで指定されたデータ長と実際の body データサイズに差異が生じるため Content length mismatch がバックエンドから応...

Read more

Azure Policyの評価結果のログがアクティビティログに出力されなくなった。

日次でのAzure Policy 評価結果が、アクティビティログに出力されていましたが、2020年6月下旬以降出力されなくなりました。なぜでしょうか。 回答2020年6月下旬以降日次でのAzure Policy 評価結果については、アクティビティログに出力されなくなりました。ただし、リソースをアップデートする際(新規作成も含む)に、その操作がポリシーに準拠しない操作の場合だけ、アクティビティログに出力されます。 変更以前と同等の結果を取得するためには代替策として、PowerShellなどのコマンドラインツールでAzure Plicyの評価結果を取得することが可能です。以下にGet-AzPolicyStateコマンドレットを使用し、対象のポリシー定義に対して非準拠のSubscriptionId、ResourceGroup、ResourceIdをCSVファイルに吐き出すサンプルコマンドを記載し...

Read more

Policy 作成のヒント集

Azure Policy のポリシーを作成しようと思うのですが、type などをどう入力していいのか分かりません。また、どういうったパラメーターが条件式に使えるかもわかりませんポリシー作成時のコツなどあれば教えてください。 回答今回はポリシー作成時の Tips について紹介します。 type や条件式に使えるプロパティの確認方法は下記のページに記載されています。チュートリアル:カスタム ポリシー定義の作成 - リソースのプロパティを判別する 筆者が良く利用する確認方法として下記の 3 つです。 公式ドキュメントによる ARM Templates の確認 利用しているリソースにおけるテンプレートのエクスポート CLI コマンドや PowerShell コマンドでエイリアスを見つける また、動作確認時のコツとして、ポリシーによる評価をすぐに実行する CLI コマンド等についてもご紹介します...

Read more

App service 証明書をエクスポートしてパスワードを設定し、他の Azure サービスにインポートする方法

2020 年 9 月に投稿された、本記事では、App Service 証明書をエクスポートし、Application Gateway で利用する手順を紹介しておりますが、Application Gateway SKU v2 をご利用いただくことで Key Vault に格納された App Service 証明書をエクスポートせずに Application Gateway に直接紐づけることが可能となっております。 Application Gateway と App Service 証明書を直接紐づけることにより、Application Gateway は Key Vault に格納された最新の App Service 証明書を定期的に取得することで、 Application Gateway において証明書の更新作業が不要となります。また、セキュリティの観点でも Application Ga...

Read more

AzureTools を使って Cloud Service のログを採取する方法

Cloud Service で発生したエラーの原因を調査する際、お客様にログの採取をお願いする場合があります。本記事では、AzureTools を使って Cloud Service のログを採取する方法について説明します。 Azure Tools では、Cloud Service 環境上の各種ログ、および構成情報を一括して採取することができます。採取できる情報は以下の通りです。 Azure クラウド サービスを動作させているエージェント プロセスのログ Azure 診断ログ IIS アクセス ログ Windows イベント ログ デプロイされているアプリケーション アセンブリ デプロイ構成情報 英文のみのご提供となりますが、AzureTools の詳細については以下のページがございますのでご参考ください。AzureTools - The Diagnostic Utility used ...

Read more

DeploymentQuotaExceeded のエラーについて

サービスをデプロイしようとしたときに以下のエラーに遭遇した。対処方法を教えてほしい。Creating the deployment 'cra3000_website-20190131-150417-7d5f' would exceed the quota of '800'. The current deployment count is '800', please delete some deployments before creating a new one. Please see https://aka.ms/arm-deploy for usage details. 原因各リソース グループには、そのデプロイ履歴が 800 までという上限があります。 このエラーメッセージは、デプロイを行うときに、デプロイ履歴が許可されている 800 ...

Read more

Notification Hubs の IP アドレスについて

アクセスを制限している環境にて、Notification Hubs へのアクセスを許可したい。許可が必要な IP アドレスを教えてほしい。 回答Notification Hubs の IP アドレスは、Service Bus 同様、nslookup コマンドでご確認ください。以下のように nslookup <YourNamespaceName>.servicebus.windows.net を実行し、「権限のない回答」で返却された IP アドレスをご利用いただけます。 上記手順で取得した IP アドレスは静的に構成されています。そのため、基本的には IP アドレスは変更は行われません。しかしながら、プラットフォームで重大な障害が発生し、対象のネームスペースを他のクラスタに復元する必要が発生した場合などには、変更されます。 なお、Azure では、仮想ネットワークでご利用いただ...

Read more

Azure Functions が使用するストレージアカウントに対するアクセス制限の方法

2022 年 5 月 20 日更新:プライベートエンドポイントを使用したストレージアカウントがサポートされるようになりました。最新の情報は [こちらの記事](/2022/05/20/protect-functions-storage.html) を参照してください。 「Azure Functions が使用するストレージアカウントの接続制限を行いたい」というご質問を多くのお客様より頂戴しております。Azure Functions は従量課金プランまたは Premium (Elastic Premium) プランでご利用頂く場合、アプリケーションコードはストレージアカウントに保存頂く必要がございます (App Service Plan 上でご利用頂く場合は不要)。 今回は、こちらについて、ご紹介します。 Azure Functions を従量課金プラン...

Read more

リソースグループごと各種リソースを削除してしまった場合について

誤って Azure リソースをリソースグループごと削除してしまいました。復旧することは可能ですか。 回答リソースに依存します。例えば、ストレージアカウントに関しては、削除後すぐにお問い合わせいただければ、復旧可能な場合があります。※1 しかしながら、ほとんどのリソースの場合、復旧することはできません。 例えば、ARM テンプレートで対象リソースの設定状況を管理していた場合、誤って削除した際に ARM テンプレートを使って同様の構成で再度リソースを作成することは可能ですが、あくまでも新規リソースの作成となりますので、リソースによってはパブリック IP アドレスなど、削除前と全く同じ構成を実現することは難しい場合があります。純粋に元々あったリソースを復旧させる、といったことはできない状況となります。 そのため、誤って削除してしまわないように対策することを推奨いたします。 対策Azure では、...

Read more

設定変更やメンテナンスで APIM にダウンタイムは発生するか

以下の通り、Developer レベル以外の場合は、基本的にダウンタイムは発生しません。Basic、Standard、Premium レベルの場合、1 ユニットあたり 2 台の仮想マシンで構成されています。また、Consumption レベルの場合は、内部的な実装が他のレベルとは異なり、App Service の仕組み上で稼働しています。これら価格レベルは、各種操作を実行する際、例えば仮想マシンを 1 台ずつ再起動を実施するといったように、APIM サービス全体が影響を受けないよう順次処理が実行され、ダウンタイムが発生しない状況となります。 ただし、何らかの一時的な問題でリクエストが失敗する可能性は考えられるかと思います。そのため、システムのご要件によっては、クライアント側でリトライの仕組みを導入することを推奨します。 Developer レベルでは、SLA が提供されていません。1 ユニ...

Read more