しばやん雑記

ASP.NET Core とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure

Azure AD B2C のユーザーを Graph API を使って管理する

Azure AD B2C は後ろが Azure AD なのでユーザー情報は Graph API を使って色々弄れます。Microsoft Graph を使ってユーザー情報を取得したりできますが、B2C に必要なプロパティが Microsoft Graph だとまだサポートされていないので、Azure AD Graph を使…

Azure App Service / Azure Pipelines で .NET Core 3.0 が利用可能になっています

.NET Core 3.0 が GA してから 3 週間近く経ちましたが、ぼちぼち App Service と Azure Pipelines で .NET Core 3.0 が利用可能になってきました。App Service は今のところ Windows のみ対応しています。*1両方のサービスに SDK がインストールされて終わ…

Terraform と Azure Pipelines を使って App Service / Azure Functions をコード化して管理する

ぼちぼち ARM Template を JSON で書くのが限界と思い始めてきたので、Terraform を使って Azure リソースの管理をやっていこうという気持ちになりました。Terraform で使われている HCL は JSON で書く ARM Template よりも読み書きがしやすいのと、CI/CD …

Azure AD B2C の知識が古かったのでキャッチアップし直した

ちゃんと触ったのが 2 年前と古く、ASP.NET Core も 2.0 の時だったので最新の情報でもろもろキャッチアップし直しました。基本的に Azure AD が嫌いなので B2C も Azure AD ベースでなければという気持ちが強いのですが、価格的に競合よりも使いやすいので…

.NET Core 3.0 をインストール後に Azure Functions のデプロイが失敗するケースがある

タイトルの通りですが、.NET Core 2.2 では問題なくデプロイ出来ていた Azure Functions のプロジェクトが、.NET Core 3.0 のインストール後に失敗するケースが一部で発生するようです。先に解決策を書いておきますが、Microsoft.NET.Sdk.Functions を最新版…

Azure Functions でも appsettings.json と User Secrets を使った設定とシークレットの管理を行う

前に設定周りを全て App Configuration と Key Vault に一元化する方法を紹介しましたが、ローカル環境ではデバッグの度に Access Token と値の取り直しが必要になるので、そこそこオーバーヘッドが大きいです。ちなみにデプロイすると起動のタイミングで 1 …

ASP.NET Core / Azure Functions で App Configuration と Key Vault を使って設定を一元化する

アプリケーションが 1 つとかの場合は App Service の App Settings や Connection Strings を使って設定すれば良いのですが、数が多くなったり環境が増えてくると大体管理しきれなくなって破綻する傾向にあります。Infrastructure as a Code の考えで ARM T…

Managed Identity と RBAC を使って Azure Storage をアクセスキー無しで扱ってみる

Azure Storage への Managed Identity と RBAC を使ったアクセスが前に GA しましたが、試してなかったので使い方を確認しました。あとは App Service と User assigned managed identity の組み合わせもちゃんと試してなかったので、折角なので同時に使って…

Azure CLI を使って Managed Identity に割り当て済みのロールを確認する

Managed Identity が非常に便利なのでいろいろと使ってしまうわけですが、Azure Portal 上だとリソースに対して割り当てたロールは見れるのに、特定の Managed Identity やユーザーに割り当てたロールが見れないので不便です。権限管理という点では望ましく…

Durable Functions v2 を使った非同期 HTTP API の実装と利用

Durable Functions v2 beta 2 で Durable HTTP という機能が追加されました。クリス氏が Tweet で説明しているように、アクティビティ関数無しでよい感じに 202 Accepted のポーリングを行ってくれる便利機能です。非同期処理の開始を 202 Accepted で通知し…

Azure Pipelines を使った Azure Web Apps / Azure Functions (Linux) へのデプロイを試した

Run From Package に関するドキュメントを眺めていたら、Linux の Premium Plan に対して Run From Package が使えそうな記述があったので試しました。暫く Linux の App Service を触っていなかったので、知識のアップデートを兼ねてます。まずは Linux の …

ARM Template を使ってリソースへのアクセス権限を付ける

Template Deployment を使って Azure リソースをデプロイする際に、同時に RBAC 周りの設定を行いたいケースがあったので、世界のぶちぞう RD に聞いたら教えてくれました。結局は後述する制約によって上手くいかなかったのですが、折角なのでメモとして残し…

ASP.NET Core と Azure Functions でのローカライズについて一通り試した

Twitter で ASP.NET Core / Azure Functions のローカライズに関する話になった時に、そういえば試してなかったなと思ったので一通り触って理解を深めておきました。考えられる部分、全て触ってみたので非常に長くなりました。概要を先にまとめます。 規約ベ…

Task ベースの初期化が必要なクラスを .NET Core の DI で利用する

.NET Core / ASP.NET Core で追加された Dependency Injection は Task ベースの Factory は用意されておらず、ドキュメントではサービスの解決は同期的に行うよう推奨されています。とはいえ、Task ベースでの初期化が必要な場面がちょいちょいあるので、何…

Azure Functions から送信される Application Insights テレメトリにバージョンを付ける

勝手に付いてるだろうと思っていましたが、Azure Functions の場合は Application Insights の各テレメトリにバージョンが付いていなかったので、ITelemetryInitializer を使ってカスタマイズすることにしました。ASP.NET Core の場合はデフォルトで付いてい…

Templates を使って Azure Pipelines から複数 App Service へのデプロイを効率化する

現実問題として 1 つのリポジトリに 1 つだけアプリケーションが存在するというケースはあまりなく、大体は複数のアプリケーションをそれぞれデプロイする必要があります。アプリケーションが 1 つだけであっても、別のリージョンに DR としてデプロイしてお…

Azure Pipelines の Hosted Agent を使うと C# 7.1 以降のコードがビルド出来ないのを直す

Azure Functions なプロジェクトのビルドで Azure Pipelines を使っていたところ、手元ではビルド出来ていたコードが Azure Pipelines だとビルドエラーになってしまったので、最適な解決策を調べていました。具体的には C# 7.1 以降のコードが Azure Pipeli…

Azure Pipelines の Multi-stage pipelines でデプロイの承認機能を利用する

Azure Pipelines の YAML だと使えない機能だったデプロイの承認が、ちょっと前に使えるようになっていたらしいです。Pipeline Caching ばかり見てたので気が付きませんでした。承認を使いたいケースが地味にあるので、手元のプロジェクトで試してみました。…

Azure Pipelines でよく使う YAML のチートシートを作った

Azure Pipelines は YAML を使ってスクリプトを書くだけではなく、予め用意されたタスクを使って面倒な処理をシンプルに書くことが出来ますが、地味にはまるポイントも多いのでよく使う定義をメモしておきます。YAML Schema 読めば大体は理解できるはずです…

Node.js アプリを Azure App Service へ最適な形でデプロイする

何となく package.json を眺めていて、これまでは devDependencies も含めた形でデプロイしていたことがあったと思ったので、最適なパッケージをビルドしてデプロイする方法を確認しました。実際は Docker Image を Multi-stage build で作成するのと考え方…

Azure Pipelines のディレクトリを指す変数はどれを使うべきなのか調べた

Azure Pipelines を使っていて地味に悩むのがディレクトリの扱いです。一般的な CI SaaS だとソースがチェックアウトされたディレクトリを基準に、ビルドなり発行を行っていきますが、Azure Pipelines はディレクトリが複数用意されています。Predefined var…

AppVeyor を捨てて Azure Pipelines に全て移行した話

4 年ほど使ってきた AppVeyor にあった 30 近いプロジェクトを今日、隅田川花火大会という外に出たくないタイミングで断捨離しつつ全て Azure Pipelines に移行しました。最近は Azure Pipelines をガッツリ弄っていたので、すんなりと移行出来ました。*1全…

Azure Artifacts で Public Feed を作れるようになっていた(おまけで Credential Provider も試した)

久し振りに Azure Artifacts を開いたら、いつの間にかに New public feed というボタンが追加されていたので試すことにしました。MyGet のように独自の公開リポジトリを利用出来るので、Azure Pipelines と組み合わせて Nightly Build の公開などに向いてい…

Azure Pipelines の Logging Commands が扱いにくいので CLI を作った

Azure Pipelines は Job から標準出力に特殊なテキストを書き出すと、それをコマンドとして扱う機能があります。Logging Commands と呼ばれているみたいですが、ログ以外にも機能があります。この形式がとにかく分かりにくいし、毎回 echo や Write-Host を…

Azure Pipelines の Pipeline Caching (Preview) を試してみた

Azure Pipelines の弱点としてキャッシュが使えないことがちょいちょい言われているみたいですが、最近になってキャッシュ用のタスクがプレビューとして公開されたようです。2 月ぐらいに開発が始まったようですが、まあまあ時間がかかりましたね。ドキュメ…

Azure Pipelines での Multi-stage pipelines の利用と既存パイプラインの移行

Azure Pipelines のドキュメントを読んでいると Release Pipeline に Classic と付けられていたので、先行きが少し怪しいです。Microsoft 的には YAML + Multi-stage pipelines を推奨して行くということのようです。Build 2019 で発表されていたらしいです…

Azure Storage と Azure Pipelines で静的サイトのホスティングとデプロイ自動化を行う

静的サイトのホスティングを App Service で行うことが多いのですが、まあ高確率で Azure Storage の Static website について言及されます。Static website は便利なんですが、フロントに Azure CDN がほぼ必須かつデプロイが行いにくいので避けてきました…

Azure Cosmos DB .NET SDK v3 GA 記念チートシート

5 月の Build で月末 GA が発表されていた Azure Cosmos DB の .NET SDK v3 ですが、昨日ついに正式版がリリースされました。特に Public Preview の時からは API が大きく変わっているので注意です。元は JavaScript SDK に近い API でしたが、途中で大幅に…

Azure Resource の Tags を使って Service Discovery を実現するライブラリを作った

こないだ Azure App Service / Functions 向けに App Configuration を使ったシンプルな Service Discovery を作ってみたのですが、 Azure Resource は全て Azure Resource Manager の API を使えば探せます。そして各 Resource にはタグを設定できるので、…

Azure Resources に対して Kusto を使ってクエリが書ける Resource Graph で遊んだ

Azure にデプロイ済みのリソースをいい感じにクエリしたかったので、その辺りについてぶちぞう RD に聞いたら Resource Graph を使えと言われたので色々触って遊んでみました。割と前からあるサービスでした。ドキュメントを読む限りでは、Azure Resource Ma…