しばやん雑記

Azure Serverless とメイドさんが大好きなフリーランスのプログラマーのブログ

Cosmos DB SDK v3 に追加された ReadMany API を使って効率的に複数項目の取得を行う

去年リリースされた Cosmos DB SDK v3.18.0 から Point Read のような API で複数項目を 1 回のメソッド呼び出しで行える ReadMany API が追加されています。Point Read のような API デザインなので Id と対応した PartitionKey 両方の指定が必要です。API …

Cosmos DB の直接モード利用時に Application Insights で詳細なテレメトリを収集できるようにする

最近は色々なところで Application Insights をインストールして、アプリケーションのテレメトリを継続的にちゃんと取得しましょう的なことを言い続けているのですが、Cosmos DB に関してはデフォルトでは依存関係テレメトリが送信されません。ドキュメント…

Azure Storage の Blob Inventory をイベントベースで Azure Functions から利用する

Azure Storage の Blob は大量のデータをスケーラブルかつ安く保存することに特化されているのと、実際には Data Lake Storage Gen 2 以外は名前空間を持っていないので、一般的なファイルシステムのように特定ディレクトリ以下のファイル数やサイズなどの情…

2021 年の振り返りとフリーランス 6 年目の終わり

今年もあっという間に終わりそうなので、例年通り 1 年間の振り返りを行っておきます。今年も世界中でコロナの影響が強く出て、今年も MVP グローバルサミットはオンラインになりましたが、英語喋れない勢としては字幕もあってチャットで聞けるオンライン最…

Azure Functions v4 で廃止された Azure Functions Proxies の代替ソリューションを実装した

先月に .NET 6 と同時にリリースされた Azure Functions v4 では、ひっそりと Azure Functions Proxies が廃止されました。公式には API Management を使うように推奨されていますが、明らかに一部のユースケースしか見えておらず、廃止の理由を聞いても何も…

Azure Functions v4 における Dynamic PGO と ReadyToRun の使い分け

.NET 6 ではパフォーマンス向上のために Dynamic PGO という機能が JIT に追加されています。名前の通り PGO を実行時に行ってパフォーマンス向上に役立てるという機能で、Azure AD の Gateway では .NET 6 と Dynamic PGO を組み合わせることで CPU 使用率…

Snapdragon Developer Kit for Windows こと ECS LIVA Mini Box QC710 Desktop を購入した

Build 2021 で夏に Microsoft Store 経由で発売と言っていた Snapdragon Developer Kit for Windows が 11 月中旬にようやく発売になりました。ずいぶん長い夏でしたね。噂通り ECS のミニ PC だった訳ですが、Windows on ARM 周りに興味がありハワイまで Su…

Hack Azure! #8 - Azure Container Apps の使いドコロを探る! フォローアップ

秋の Ignite 2021 で Azure Container Apps がリリースされ、Azure Serverless の大注目サービスとして盛り上げていきたいので Hack Azure! #8 としてトニーさんをゲストに迎えて喋りまくりました。個人的には Azure Spring Cloud のように Kubernetes を足…

Azure Functions v4 が正式リリースされたので既存の環境とアプリケーションをアップグレードする

Visual Studio 2022 のローンチイベントで .NET 6 の GA と同時に Azure Functions v4 の GA が発表されました。これまでは .NET のリリースから遅れて対応するバージョンの Azure Functions がリリースされていましたが、今回は Day 0 サポートがアピールポ…

Azure Container Apps の特徴と Azure Web Apps / Azure Functions との違い

Ignite 2021 で発表された Azure Container Apps について、実際に触って調べたのでいろいろと所感を書きます。特に Web Apps / Azure Functions との違い・使い分けについて重視しました。名前から分かるようにコンテナーの実行に特化したサービスです。既…

Ignite 2021 で発表された Azure App Service のアップデート

App Service は Build や Ignite に合わせてアップデートを発表することは少なく、むしろずれて発表することの方が多い傾向にあるのですが、今回はアップデートのまとめブログが公開されていました。先日も Availability Zones 対応が発表されましたが、イベ…

Static Web Apps に追加されたカスタムロールの割り当て機能を試した

Static Web Apps には全てのプランで使える組み込み認証 + ロール管理機能と、Standard 以上で使えるカスタム認証機能がありますが、Azure AD B2C や OpenID Connect Provider を使ったカスタム認証の場合は、ロールは認証済みしか使えなかったので高度なア…

Hack Azure! #7 - 次世代 Serverless アプリケーションアーキテクチャ!フォローアップ

App Service / Azure Functions の Availability Zones 対応が GA となり、今後のアーキテクチャ設計への大きな変化となることは確信していたので、この辺り話したいな思っていたら話すことになったのが今回です。要するに PaaS / Serverless で Availabilit…

Azure Static Web Apps と Front Door の組み合わせが正式にサポートされたので試した

少し前に App Service Authentication と Front Door や Application Gateway を組み合わせた時の問題と解決法を書きましたが、ほぼ同じアーキテクチャの Static Web Apps では当時は回避方法が無く利用困難でした。Static Web Apps はグローバルに分散され…

Entity Framework Core 6 の Compiled Models を試した

前から気になっていたのですが、ようやく触る気になったので Entity Framework Core 6 で追加された Compiled Models を一通り試しておきました。Preview 5 の時のブログと Compiled Models の Issue を見れば一通り理解できるはずです。ブログには主にパフ…

Cosmos DB .NET SDK v2 の廃止と Azure Functions Cosmos DB Extension v4 プレビュー

少し前に Azure Cosmos DB .NET SDK v2 が 2024 年 8 月 31 日で廃止されることが発表されました。これで API 設計がイケてない Microsoft.Azure.DocumentDB 関連のパッケージがついに廃止されます。移行先となる Microsoft.Azure.Cosmos は十分な実績があり…

Azure Front Door や Application Gateway と App Service Authentication を組み合わせて利用する

App Service を利用したアーキテクチャでは、フロントエンドに Front Door や Application Gateway といった L7 のロードバランサーを追加する構成を組むことがそれなりにあります。特に Front Door は CDN と L7 ロードバランサが組み合わされたサービスな…

Azure App Service から Private Endpoint を利用する際の設定がシンプルになった

先日 Azure App Service のゾーン冗長対応を確認していた時に気が付いたのですが Regional VNET Integration を Azure Portal から設定すると、デフォルトで App Service からの Outbound トラフィック全てを VNET にルーティングする設定が有効になっていま…

Application Insights の Azure AD 認証 / Managed Identity 対応を試した

久し振りに Application Insights SDK for .NET のリリースノートを眺めていたら Azure AD 認証に対応したと記載があり、興味を持ったので設定と動作を試しておきました。これまで InstrumentationKey があればテレメトリを送信出来ていましたが、Azure AD …

更に高い可用性を実現する Azure App Service の Availability Zones 対応がリリース

これまで App Service Environment は Availability Zones に対応していましたが、ついにマルチテナント型の App Service でも Availability Zones に対応しました。これで複数のゾーンに分散してアプリケーションをデプロイすることで、マルチリージョンよ…

Azure Front Door Premium から Static Web Apps へのアクセスを Private Endpoint で保護する

少し前に Static Web Apps の Private Endpoint 対応がプレビューとして公開されました。Static Web Apps が GA のタイミングで使えるという話だったのが遅れてリリースされたものになります。Private Endpoint を使うことで Express Route を経由して Priva…

Azure Cosmos DB を ASP.NET Core の分散キャッシュのバックエンドとして利用する

少し前に Cosmos DB を ASP.NET Core の Distributed Cache Provider として使うライブラリの正式バージョンがリリースされました。ASP.NET 向けにも同じようなライブラリは出ていましたが、こちらは Cosmos DB SDK v3 で構築された最新版です。重要なことは…

GitHub Actions / Azure Pipelines 上で Azurite と Cosmos DB Emulator を使ったテストを実行する

GitHub や Azure DevOps を使った開発フローにテスト実行を組み込むのは一般的に行われていると思いますが、Azure Storage や Cosmos DB などに依存するテストを実行する際には、実際のリソースにアクセスさせるのではなくローカルで完結させたいことが多い…

App Service Authentication で Azure AD と Microsoft Account を使ったログインを実装する

App Service Authentication は非常に便利でかなり頻繁に使っていますが、基本はシングルテナントの利用が多く、Microsoft Account を使ったログイン方法に関してはこれまで試したことが無かったのと、NuGet のログイン画面を見て実現方法に興味を持ったので…

Windows / Visual Studio 使いが WSL 2 / Visual Studio Code で環境構築した時の手順

基本的には Windows と Visual Studio を使って Azure Functions や GitHub で公開しているアプリケーションとライブラリを書いていますが、最近は Python や Go を書く必要がちょいちょい出てきたので、色々と観念して WSL 2 の環境を構築して使っています…

Terraform Provider for Azure の開発環境を VS Code Dev Container で構築する

Azure 環境での IaC には Terraform をメインで使っていますが、ARM Template や Bicep と異なり Terraform は ARM REST API ベースで構築されているので、新しい機能の場合は Azure SDK を更新しつつ Provider に機能を追加というステップを踏む必要があり…

新しく Azure Durable Functions に追加された Netherite Storage Provider を一通り試した

これまで Azure Storage (Queue / Table) が使われてきた Durable Functions の Storage Provider ですが、今年に入ってからパフォーマンス重視の Netherite とポータビリティ重視の MS SQL が公開されています。Azure Functions 上で動かす場合には MS SQL …

Run From Package と Managed Identity を使った App Service / Azure Functions のデプロイ戦略

App Service / Azure Functions のシークレットを安全に扱う際に利用する Key Vault Reference が User Assigned Managed Identity に対応しつつ、Linux 周りであった色々な制限が削除されたのと同時に、突然 Run From Package でも Managed Identity が使え…

Azure Functions Linux の Custom Image でベースとして利用可能な Docker Image について

Azure Functions の Linux では標準で用意されている Docker Image をベースにして、独自に必要なパッケージをインストールして実行環境をカスタマイズ出来るようになっています。ドキュメントでは Custom Image と呼ばれていますが、Azure Portal から Azur…

Durable Functions を使ってタイマーで起動される処理の開始時間をランダムに遅延させる

Azure Functions で TimerTrigger を使って特定の時間に起動される処理が増えると、それらはほぼ同時に実行されるため外部 API の呼び出し時にスロットリングが発生しやすくなります。特に Azure Functions は同一 Stamp に載っていると Outbound IP が被り…