しばやん雑記

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

Azure

Azure Functions の Retry Policy 機能の GA に伴う仕様変更と Cosmos DB Trigger における対応方法

しばらく前から Azure Functions で Event Hub Trigger と Timer Trigger 以外で Retry Policy を設定している場合に、以下のような警告が起動時に出るようになりました。 [2022-11-19T08:19:24.241Z] Soon retries will not be supported for function 'Fun…

開発体験を向上させる Azure Functions の Node.js と Python の新しいプログラミングモデルを試した

Azure Functions の特徴として各サービスとのバインディングとトリガーの存在があります。Function の実装ではどのバインディングやトリガーを使っているかという情報を Function Host やスケーリングを担うサービスに伝える必要があり、そのためのメタデー…

Ignite 2022 周辺で発表された App Service のアップデート

既に Ignite 2022 が終わってしばらく経ってしまいましたが、App Service 周りで興味深いアップデートがひっそりと行われているので、Ignite の前後に発表された内容を含めて個人的に気になったものだけまとめます。Ignite 2022 に合わせて発表された App Se…

Azure Cosmos DB の物理パーティションを深く理解する

Cosmos DB を正しく利用する上で一番重要となるのがパーティションキーの設計ですが、Cosmos DB には一言でパーティションと言っても論理パーティションと物理パーティションの 2 種類が存在しています。この辺りの話は公式ドキュメントでも軽く触れられてい…

GitHub Actions / Azure Pipelines の Windows Runner で Azurite と Cosmos DB Emulator を利用する

以前に Azurite と Cosmos DB Emulator を使って GitHub Actions / Azure Pipelines でテストを実行する方法を書きましたが、Ubuntu Runner と Service Containers を利用した方法だったので Windows Runner では実質的には使えない方法でした。理由としては…

Azure で ASP.NET の Session State を利用する際のベストプラクティスを確認した

最近は移行絡みで Azure に ASP.NET アプリケーションを Session State 付きでデプロイすることが多いので、Azure 上で Session State を使う際のベストプラクティスを確認しておきました。この記事で触れるのは .NET Framework の ASP.NET であって、.NET 6…

Azure に実装されている 3 つの Easy Auth (Web Apps / Static Web Apps / Container Apps) の実装を再確認した

アプリケーション開発で地味に難しい認証周りですが、Azure の Web Apps / Static Web Apps / Container Apps には認証機能が組み込まれているため、コードを修正することなく追加できるので非常に便利です。既に何回もブログで扱っているので、基本的な使い…

各言語向けの Azure Cosmos DB SDK がサポートしている機能まとめ(随時更新)

Azure Cosmos DB は複数の API に対応したサービスとなっているので、利用している言語向けに Cosmos DB ネイティブの Core (SQL) API の SDK が提供されていなくても、代わりに Mongo や Cassandra の SDK を使って Cosmos DB を使ったサービスを開発するこ…

Managed Identity と GitHub Actions OIDC を使って Azure Container Registry の Admin user を不要にする

Azure でコンテナー系のサービスを利用する上で必須となる Azure Container Registry ですが、実際に利用する上で割とハマりがちなポイントとして Admin user の存在があります。Azure Container Registry での認証については以下のドキュメントにまとめられ…

GitHub Actions を使って Windows Containers のビルドと Web App for Containers へのデプロイを自動化する

暫く触っていなかったのですが、若干 Windows Containers が必要になりそうな気配を感じ取ったので、最新の Windows Containers 事情と Azure / GitHub での扱いについて再度確認しました。Windows Containers を使って動かしたいアプリケーションは Classic…

Azure Static Web Apps で API 統合を使った際の開発・運用のベストプラクティス

先日 Static Web Apps に Azure Functions 以外の API を簡単に持ち込める機能が追加されました。App Service / Container Apps / API Management の 3 つを追加で持ち込めるようになったので、API が多いアプリケーションも Static Web Apps でホストしやす…

Azure Container Apps の Continuous Deployment 設定が簡単かつ自動生成が適切すぎて感動した話

この間 Azure Container Apps への自動デプロイの構成を Azure Portal の Continuous deployment から設定したら、予想以上に適切な Workflow ファイルが生成されたことに感動したので書いています。あまりにも感動したので Twitter にも書きましたが、リポ…

Azure Static Web Apps に Azure Functions 以外の API を持ち込み可能になったので一通り試した

個人的に GitHub で要望を挙げていた機能でもあるのですが、Static Web Apps の BYOF 機能が拡張されて Azure Functions 以外の API を持ち込めるようになりました。Azure Functions はシンプルなプログラミングモデルを持っているので、簡単な REST API で…

Azure DevOps で特定のファイルが変更された場合のみ Pipeline を実行させる

Azure Repos を使って Monorepo 構成を採用している場合には、Azure Pipelines はそれぞれのプロジェクト単位で実行させたいので、トリガーの設定でパスを指定して実現します。例として backend というディレクトリが変更された時だけに Pipeline を実行させ…

Azure Container Instances の軽量なオーケストレーションを Durable Functions を使って実現する

Azure には Docker Image を指定するだけで簡単に動かせるサービスがいくつかあり、その中でも Container Instances は非常に起動が早くてシンプルなので利用範囲が広いのですが、オーケストレーターが存在しないので並列処理のように複数立ち上げたい場合に…

Azure Event Hubs SDK に追加された Buffered Producer Client を使って効率的なイベント送信を行う

2022 年 5 月の Azure SDK アップデートを確認していると、Event Hubs SDK に Buffered Producer Client が追加されたという情報を得ました。明らかに面白そうなので、実際に動かして挙動を確認してみました。必要な Event Hubs SDK はバージョン 5.7.0 にな…

Azure Container Apps がカスタムドメインと証明書の追加に対応したので試した

今朝のアップデートで Azure Container Apps でも App Service のように、カスタムドメインを直接割り当てることが出来るようになりました。これまでは Front Door などを使う必要がありましたが、直接 Container App にカスタムドメインを割り当て出来るの…

Durable Functions を Azure Container Apps 上でスケーリング付きで実行する方法を検証した

先日 Twitter で以下のようなツイートが流れてきた時に、Azure Container Apps 上で Durable Functions を正しく実行できるのかを調べることを思い出したので一通り検証しました。ツイートで紹介されている Discussion にあるように、AKS であれば特に問題な…

Azure Container Apps の組み込み Authentication を試した

数日前に Azure Container Apps でも App Service / Azure Functions と同様の組み込み Authenticationがサポートされました。App Service Authentication はかなりの高頻度で使っている機能なので、Container Apps でも間違いなく便利に使えるはずです。App…

Azure Functions (Windows / Linux) へのデプロイを行う方法と挙動の違いをまとめた

最近は Visual Studio 2022 + C# 以外で Azure Functions を作成することが増えてきました。その場合は主に Visual Studio Code を使ってプロジェクト作成からデプロイまで行うのですが、Azure Functions を実行する OS とデプロイに利用する方法で若干挙動…

Azure App Service の Regional VNET Integration が Basic SKU でも利用可能に

これまで実質的に Premium V2 / V3 が必要だった Regional VNET Integration が Basic でも利用可能になりましたが、例によって使えるかどうかはデプロイされている Scale unit に依存するので簡単にまとめます。正確には Regional VNET Integration と Priv…

Azure Cloud Services (Classic) のリタイア予定と PaaS のインフラが VMSS へ移行されている話

PDC 2008 で Azure が発表された時から存在していた純粋な PaaS と言える Cloud Services (Web Role / Worker Role) ですが、ついにリタイアの日程が 2024/8/31 に決まったようです。今では Cloud Services を直接利用しているケースはかなり少ないと思いま…

新しい Azure Front Door が GA した件と Application Gateway との使い分けについて

1 年ぐらい Public Preview だった Azure Front Door の Standard / Premium がやっと GA しました。ぶっちゃけ機能的には劇的な変化はないですが、長らく問題となっていた Subdomain Takeover 対策が標準で入ったことや、Private Link を使ってオリジンへの…

複数の Azure AD テナントに対応した Service Principal を作成して Terraform から利用する

App Service と Azure AD B2C というように Azure AD テナントが分かれている場合には、いつも通りの Service Principal を使った方法だと、当然ながらどちらかのテナントしか操作できません。以前書いたように Azure AD B2C 側のアプリケーションを管理しつ…

App Service Authentication と Azure AD B2C の組み合わせでログアウトを正しく実装する

少し前に App Service Authentication が OpenID Connect に対応したので、様々な IdP を利用することが出来るようになりました。Azure AD B2C も OIDC 対応によって正式利用が可能になった IdP の一つです。 ログアウト後のリダイレクト先を指定する App Se…

GitHub Actions の OpenID Connect と Azure AD を利用して Client Secret の管理を不要にする

激しく今更ですが、GitHub Actions の OpenID Connect 対応を利用して Azure リソースや Azure AD 自身へのアクセスを Client Secret 無しで行ってみます。ぶっちゃけ全ては watahani さんのブログを読んでもらえれば良いのですが、少し時間が経過したことも…

Azure AD B2C のカスタムポリシー利用に必要なアプリケーションを Terraform を使って登録する

最近の Azure AD B2C は組み込みユーザーフローの機能がかなり増えているので、ある程度のことなら Azure Portal からの設定で実現できますが、結局は IEF を使ったカスタムポリシーが必要になるケースも多いです。Azure AD B2C のカスタムポリシーは触った…

Terraform Provider for Azure AD を使って Azure AD B2C で利用するアプリケーションを管理する

未だ個人的な Terraform Provider for Azure AD ブームが続いているので、今回は Azure AD B2C の管理を目的に利用してみます。Azure サブスクリプションが紐づく Azure AD テナントとは異なり、サブスクリプションは持たず独立したテナントとなるので、扱い…

Azure AD と App Service Authentication を使って Web App と Web API を保護する

Azure AD 認証と App Service Authentication を組み合わせて、Web App へのログインを行いつつ同時に発行されるアクセストークンを利用して、別に用意された API を実行したいというシナリオが存在します。Microsoft Graph API を呼び出す場合はアプリケー…

Azure AD における Client Secret の期限切れ問題を Terraform でスマートに解決する

Azure AD にアプリケーションや Service Principal を作成すると大体必要になる Client Secret ですが、有効期限を持っているので期限が切れる前に新しい Client Secret を生成する必要があります。昔は無期限で作成することも出来ましたが、今はセキュリテ…