しばやん雑記

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

Azure

Durable Functions のエラーハンドリングと向き合う

Durable Functions は async / await で複雑なフローを簡単に書けるので便利ですが、エラーハンドリング周りに少し癖があるので基本的な処理方法をまとめておきます。ドキュメントはありますが、基本的すぎることしか書いてないです。以下の内容は Durable F…

Azure App Configuration を一通り試したのでメモ

今朝出てきた Azure の新しいアプリケーション向けサービスの Azure App Configuration が、今持ってる課題をいい感じに解決してくれそうなので、プレビューのうちに一通り触っておきました。普通は ASP.NET Core の Configuration Provider や ASP.NET の C…

Azure Service Bus のスループットとクォーターを確認した

久し振りに Service Bus について調べる機会があったので、適当にコードを書いてどのくらいのスループットが出るのかと、クォーターで引っかかった後にどうなるかなど、気になっていた挙動も調べました。Service Bus は Premium で試しています。Standard で…

そろそろ Azure Cloud Services の移行先についてひとこと言っておくか

最近はまあまあ Cloud Services (Web Role / Worker Role) からの移行という話を聞くようになってきましたが、大体のケースで Service Fabric への移行を勧められているようです。正直言ってこの提案は全くの見当外れであるケースが大半でしょう。何故なら現…

Web App for Containers と ACR Tasks が Windows Server 2019 にアップデートされていた

久し振りに Web App for Containers (Windows) を作成してみたら、ホスト OS が Windows Server 2019 にアップデートされてることに気が付きました。正式リリースではないですがアップデートはほぼ確実でしょう。これで大幅にサイズが削減された Docker Imag…

Azure CLI と Key Vault を使って自己署名証明書を作成する

たまに検証とかで必要になるので自己署名証明書を作ることがあるのですが、コマンドを毎回覚えていられないので最近は Azure Key Vault で作ってしまうことが多いです。Azure Portal から作るのは少し面倒なのと、内部で使われている API バージョンが古くて…

Durable Functions のオーケストレーターが失敗したことをキャッチしたい

Durable Functions ではアクティビティが失敗した場合にはオーケストレーターで例外が投げられるので、try ~ catch を使って簡単にハンドリングしたり、アクティビティの実行に CallActivityWithRetryAsync を使えばいい感じにリトライもしてくれます。以下…

Azure SignalR Service の Service Mode 設定による違い

Azure SignalR Service を仕事で少し使ったときに、設定が増えていることに気が付いたので調べたのですが、中の人に聞くまで情報がほぼ無かったのでメモとして残します。そして Serverless mode がかなり良かったので、それの紹介も簡単にですがします。チャ…

Azure Functions v2 でインスタンスメソッドも Function として利用可能に

先週リリースされた Azure Functions Runtime 2.0.12265 からは、インスタンスメソッドでも Function として扱われるようになりました。これまでは静的メソッドしか使えなかったので、モックしにくいとかいろいろ言われていたと記憶しています。リリースノー…

新しい Azure App Service の VNET Integration を試した

App Service の VNET Integration は Gateway が必要となる Point to Site VPN を使っていましたが、去年にプレビュー公開された新しい VNET Integration は Gateway 無しで VNET に参加できるようになってます。新しい VNET Integration については公式ブロ…

Azure Functions Proxies で実現出来ること

前にハッカソンを行った時に Azure Functions Proxies 周りの挙動が気になったので、一通り確認して気になったことを軽くメモとして残します。まずは公式ドキュメントと牛尾さんの Qiita を読めば大体は理解できるはずです。Azure Functions Proxies は名前…

Azure Functions でも HttpTrigger でモデルバインディングを使って楽をしたい

ASP.NET Core MVC だと普通に使っているモデルバインディングですが、Azure Functions の HttpTrigger でも近い形で使えるようになってます。テンプレートでは HttpRequest から自前でパースしてますが、ランタイムに任せることが出来ます。使い方は Core MV…

Azure App Service 上での ASP.NET Core 2.2 のパフォーマンス

ASP.NET Core 2.2 と同時にリリースされた ANCM v2 が +400% パフォーマンス改善したと書かれていたので、実際どのくらいまで頑張れるのか調べたくなりました。ブログにあった +400% という数値は恐らく物理マシンを使っているので、実際に Azure 上の一般的…

Azure App Service で ASP.NET Core 2.2 と ANCM v2 が使えるようになった

.NET Core 2.2 リリース時には 12 月末までの対応が宣言されていた Azure App Service での .NET Core 2.2 対応ですが、全リージョンへのデプロイが完了したようです。デプロイのタイミングによっては .NET Core 2.2 はインストールされていても、ASP.NET Co…

Azure Key Vault を使って App Service の証明書を管理する

今や必須となっている https 対応のために App Service に SSL 証明書をバインドする場合、ほとんどの場合は PFX を作成してアップロードしていると思いますが、割とこの辺りの手順は面倒ですよね。アップロードしたはずの証明書が思ったように出てこない場…

あえて Durable Functions でオーケストレーターの完了まで待つ Web API を作る

通常 HttpTrigger で起動する Durable Functions を作成すると CreateCheckStatusResponse を使って、インスタンス管理用のエンドポイントを含んだレスポンスを返すと思います。テンプレートから作成したコードも以下のようになっているはずです。 [Function…

ASP.NET Core 向けに Azure Table Storage を利用する Configuration Provider を書いた

タイトルの通りですが、ASP.NET Core と一緒に追加された Configuration 周りは Provider を実装すると簡単に拡張できるようになっているので、実際に Azure Table Storage 向けの実装を書いて試してみました。流れとしては以下の 2 つを継承したクラスを実…

Azure Artifacts を使って自前 NuGet サーバー運用を捨てる

最近 Azure DevOps 周りを弄ってますが、あまり話として Azure Artifacts について聞いた覚えがないので軽く確認しておきました。単なるプライベート NuGet リポジトリではないのは確かです。とりあえずドキュメントは参照しておきますが、思ったより機能は…

Azure Pipelines から Run From Package としてデプロイする

そろそろ Azure Functions だけじゃなくて Web Apps でも Run From Package を使ったデプロイを行っていきたいので、ひとまず標準で Run From Package でのデプロイに対応している Azure Pipelines を使ってパイプラインを組んでみました。Run From Package …

Azure Functions v1 から v2 への移行手順メモ

Azure Functions のランタイムは v1 がほぼ更新が無くなり、最近は v2 の更新ばかりなので、近いうちに v1 の実質 EOL のお知らせとかが出るのではないかなと思ってます。v2 ランタイムは安定したものになっているので、早めに移行しておいた方が良いでしょ…

Azure App Service が .NET Framework 4.7.2 に対応

予定では 10 月中旬にデプロイされる予定だった App Service の .NET Framework 4.7.2 対応ですが、今日にようやくデプロイが行われたようです。手元にある Japan East と Central US の Scale unit で確認していますが、全ての Scale unit にデプロイされた…

Azure Functions v2 は .NET Standard から .NET Core へ

ちょっと前に Azure Functions v2 で netcoreapp2.1 が使えるようになったと書きましたが、気が付いたらテンプレートもアップデートされ、デフォルトが netcoreapp2.1 になっていました。当時はデバッグに問題がありましたが、最新のツールへアップデートす…

Azure Functions v2 で netcoreapp2.1 が使えるようになった

.NET Standard 2.0 で書く必要があった Azure Functions v2 ですが、最新版の SDK を使うと .NET Core 2.1 向けにビルド出来るようになりました。正確には netcoreapp2.1 をターゲットに設定出来ます。先に SDK をリリースして、問題なければテンプレートも …

.NET Core における Activity と Application Insights による分散トレーシング

.NET Core 2.0 から追加された Activity というクラスがありますが、トレース用の ID を管理する重要な機能を持っています。特に Application Insights と組み合わせることで分散トレーシングが容易になります。.NET Framework 4.5 以降なら System.Diagnost…

Azure Functions の各 Trigger の動作が不安定な時にやること

最近、新しくデプロイした Azure Functions の TimerTrigger が何故か発火してくれない現象に悩んでいました。実際に Monitor で実行ログを確認すると、時間がめちゃくちゃになっています。Consumption の場合は App Service Plan とは違う仕組みで動いてい…

Azure SignalR Service の GA と ASP.NET SignalR への対応がプレビューになったので試した

これも Ignite 2018 で発表されましたが、予定通り Azure SignalR Service が GA となりました。分かりやすい変更点としては SLA 99.9% が付いたり、Standard Tier での 100 units までのスケールアウトがサポートされて、仕様上は 10 万コネクションまで扱…

Azure Key Vault を使って Let's Encrypt 周りを自動化する Function を作った話

Twitter で世界のやまさが Azure Front Door を試していて、Key Vault 向けにも Let's Encrypt の証明書を自動でいい感じに出来れば良いみたいなオーラを感じ取ったので、前に作った App Service 向けのものからコピペで新しく Key Vault 向けを作ってみまし…

Azure DNS の Alias Records を使って Zone Apex で Traffic Manager + App Service な環境を作る

Ignite 2018 の前から Azure DNS を弄ってたら気づいた Alias Record Set が GA しました。*1Traffic Manager か Public IP Address の場合のみ利用可能という制約がありますが、長らく Zone Apex なドメインは使えなかったという問題が解消です。これまでは…

Azure Functions v2 が GA しました

Ignite 2018 で大方の予想通り Azure Functions v2 ランタイムが GA しましたね。実際には先週に GA 版と思われるランタイムがデプロイされていたので、App Settings の設定を間違えていなければ既に GA 版ランタイムで動いているでしょう。v2 では .NET Cor…

Azure Data Factory を利用して Cosmos DB のコレクションをお手軽にコピーする

Azure の Cosmos DB を使っていて非常に困るのが、コレクションのパーティションキー設計を変更したい場合になった時です。パーティションキーは作成時にしか設定できず、後から変えることは不可能です。設計ミスと言われると何とも言い返せないのですが、こ…