Microsoft Graph Explorer でテナントを切り替える

Microsoft Graph API のちょっとしたテストができる Microsoft Graph Explorer というツール(Webサイト)があります。

REST APIを扱うクライアントコードを書かなくても実行できるので、とても便利なツールですが、実行ユーザーが複数のテナントに所属している場合、意図したテナントで実行できない場合があります。

何もサインインせずにGraph Explorerにアクセスするとサンプルデータなサンドボックス環境なので(それはそれで影響を与えずにテストできるから便利なのですけど)、自テナントのデータを見たいとかになるとサインインするわけですが、サインイン時やサインイン後にGraph Explorer上でテナントを切り替えることができません。既定のテナントが操作したいテナントでない場合、大変困ってしまいます。

が、実はUI上はまだ無いみたいですがURL直指定だとテナント指定できます。

上記のURLのようにテナントID(IDでないとダメ)を指定してからサインインするとそのテナントになります。

image

面倒くさいという人はソースがPublicリポジトリにあるので、Cloneして自前で展開して設定したりするといいですよ。

おまけ

永遠のPreviewっぽいAzure Resource Explorer も、もしテナント切り替えがうまくいかない場合とかあればURLで以下のようにテナントIDを指定すると切り替えられます。

Readmeだと一覧が見れたりするっぽいんですけどね。(というかもともとテナント一覧表示されて切り替えられてたんですけど、動かなくなってるので)

Microsoft.Azure.WebJobs.Extensions.Http でエラーになってFunctionsが起動しない

Azure Functions v4の .NET なプロジェクトでNuGetパッケージ更新したりしたら以下のエラーがでて実行できない場合があります。

A host error has occurred during startup operation 'xxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxx'.
Microsoft.Azure.WebJobs.Extensions.Http: Could not load file or assembly 'System.Net.Http.Formatting, Version=5.2.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 指定されたファイルが見つかりません。.
Value cannot be null. (Parameter 'provider')

特定バージョンだけな気がしますが、該当しそうなのは以下のIssueです。

なんだか釈然としませんが、対処方法としては以下のようにします。

  1. Microsoft .NET SDK を再インストールする。
  2. Azure Functions Core Tools の最新をインストール(再インストール)する。

一時的な問題だと思いますが、、(たまにこの手の問題に遭遇する)

Azure AD テナントを削除するときにエンタープライズアプリケーションが削除できない

Azure ADテナント(Azure AD B2Cを含む)を削除するときにはいろいろ手順を踏まないといけませんが、その中でも面倒なのが Microsoftのファーストパーティーアプリケーション(Microsoft First Party Application) とかいうやつです。
テナント削除時は登録したユーザーやアプリケーションなど関連リソースは全部消してからでないとテナント削除できませんが、このファーストパーティーアプリケーションは削除が無効化されてたりします。

ちゃんと(?)削除する場合は松村さんが書いてるPowerShellとかで削除するといいですが、もう削除しようとしているテナントの為にAzure PowerShell環境用意したり、Cloud Shellがんばったりするの面倒ですよね。

Microsoft ファーストパーティー以外のアプリは削除しておかないといけませんが、Microsoftファーストパーティーのアプリはサインインさえできなくなっていれば実は問題ない感じです。

というわけで「ユーザーのサインインが有効になっていますか?」を「いいえ」にして保存すれば無理に削除しなくてもテナント削除できる可能性があります。

という感じで削除したい場合に試してみてください。

続きを読む →

Microsoft Edge のページ内検索で関連する結果を含めないようにする

Microsoft Edgeでページ内検索にて関連する結果も含める機能(Office製品みたいな)が増えました。(正式版は来年予定らしい。Devチャンネルなどではもう実装されている)

image

入力文字に一致していなくても関連しているならマッチするという感じです。

便利そうですが今のところ個人的には超絶使いにくい(Ctrl+Fでキーワード入力、Enterでバシバシ次を探すみたいなのがもっさりorちゃんと動作しない)のでオフにしてしまいました。

edge://flags/#edge-related-matches-for-find-on-page

image

でDisableにするだけで以前の動作にもどります。
※「結果を含める」設定をページ検索のダイアログ内でオフにしたら状態をずっと維持してくれたらいいんですけどね。毎回オンになるので。。

Azure Active Directory breaking change impacting Azure CLI and Azure PowerShell の件

Azure ToolsのBlogで以下のタイトルの記事があがっています。

10月15日以降、記載されているバージョンより古いAzure CLI/Azure PowerShellでAzure ADにService Principalを作ろうとするとエラーになるようです。
エラーの原因ですが、こちらのAzure ADの更新に対応していないためです。

続きを読む →

Azure Functions の Event Hubs Trigger とオフセット

Azure FunctionsでEvent Hubsトリガー使ってデータ処理したりするケースはよくあると思いますが、すでに稼働しててバンバンデータが流れるEvent Hubsに新しくFunctionsで処理を追加したい、とかのケースでそのままだと初回起動時にえらいことになります(よね?)。※ パーティション内に保持されてるデータを最初から読み出そうとするので

だいたいそういうケースだとこれまでのデータを処理する必要はないのでパーティション内の最後のデータから処理を開始したりしたいわけですが、トリガー単位ではこの辺りを制御できません。代わりにFunctions全体で挙動を指定できるようにはなってるのでそちらで行います。(トリガーとしては無理だけどイベントプロセッサホストとしては指定可能ということです)

続きを読む →

Azure Functions でログレベルを設定する

Azure Functionsで標準的に出力されるログのレベルはhost.jsonファイルで構成できます。

まぁいいんですがローカルでの開発時やCI/CD考えるとhost.jsonそのまま編集したりソース管理したりすると環境によって変えたい時とか不便ですよね。
特にRun From Packageとかでデプロイしてるとhost.jsonは読み取り専用になるし。

続きを読む →

App Service の CI/CDでビルドエラー

ちょっとはまったのでメモ。(そのうち改善されると思われる)

はまった環境: Visual Studio 2017 で .NET Framework 4.6.2 なクラスライブラリでNuGetなパッケージを使用しているC#プロジェクト(NuGetはPackageReferenceを参照する)と、それを参照するASP.NETなアプリ(1つのソリューションにASP.NETとクラスライブラリなプロジェクトがある状態)
はまった理由:  App Service上(Kudu上)で msbuild 15.x がないから(たぶん)

普通にApp Service上でCI/CDを使って(今回はLocal Git)上記なプロジェクトをデプロイ(git push)すると以下のようにNuGetで取得するパッケージに含まれるアセンブリが見つからない旨のエラーがでてビルドに失敗します。(nuget restoreやdonet restoreしてるにも関わらず)

省略
:
remote: D:\Program Files (x86)\dotnet\sdk\2.0.0-preview1-005977\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [D:\home\site\repository\web1\Shared\Shared.csproj]
:
以下略

カスタムデプロイスクリプトを使用するようにして、dotnet build や dotnet msbuild を使ってもダメです。
※Kudu上に現状Previewなmsbuildがありますがそちらを使ってもダメ
※ちなみにプロジェクトがPackage.configを参照するようになってたら問題なくビルドできます。PackageReferenceの場合のみおかしい。

回避策: クラスライブラリなプロジェクトファイル(.csproj)を新しい形式に変換する

変換は以下のURLを参考に。

最低限Project要素の属性を新しくして TargetFrameworkVersion を TargetFrameworkにしてv.4.6.2 とかを net462 とかにします。あとは不要な要素はバスバスけして、AssemblyInfo.csも消したりしました。
修正後、Visual Studio 2017上でちゃんとプロジェクトがロードできてビルドできればひとまず大丈夫かと思います。(Minなcsprojにしてから後でNuGetパッケージ追加したりもろもろいじってもよいかと思います。

変換後は dotnet build や dotnet publish で問題なくビルドできます。(つら)

過渡期な問題だと思いますが、もし嵌った人がいれば参考にしてもらえると。