しばやん雑記

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

Azure

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

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

Azure Functions の開発環境を Visual Studio Code の Dev Container を使って構築する

Azure Functions は C# と Node.js を使う場合には開発環境をサクッと構築できるのですが、今回 Python を使って開発しようとしたときに開発環境で割とはまったので、自分が最適だと思った VS Code の Dev Container を使う方法をメモしておきます。開発環境…

Azure App Service の .NET 6 Early Access と Azure Functions v4 の Early Preview が開始

相変わらず Build 2021 といった大型イベントと関係なくアップデートが行われる App Service と Azure Functions ですが、以前にブログで予告されていた通り夏前に .NET 6 Preview 4 と Azure Functions v4 の Early Preview が開始されました。App Service …

Azure Pipelines を使った Terraform 1.0 移行時の注意点

先日ついに Terraform が 1.0 に到達して GA したというニュースが飛び込んできましたね。個人的には Terraform は 1.0 にならない系のプロダクトだと思っていましたが違っていたようです。Today we are announcing the GA release of #Terraform 1.0. This …

Build 2021 付近で発表された App Service 関連のアップデート

今年も Build がオンラインで開催されましたが、例によって Static Web Apps の GA は Build の 2 週間前だし、App Service チームはイベント合わせで新機能のリリースを行わない方向になっているので、あまりキャッチアップする内容はありませんが、細々し…

Hack Azure! #6 - Static Web Apps GA 祭り! フォローアップ

何故か Build 2021 の開催 2 週間前という謎のタイミングで Static Web Apps が GA したので、Hack Azure! #6 として三宅さんを中心に話す会を開催しました。App Service / Azure Functions チームとほぼ同じ中の人なので、リリースをイベントに合わせる必要…

Azure Cosmos DB Conf で Change Feed を中心としたアーキテクチャの設計と実装について話しました

今回が初の開催となる Azure Cosmos DB Conf で三宅さん (@kazuyukimiyake) と一緒に Change Feed を中心としたアーキテクチャの設計と実装について話しました。Cosmos DB の利用シーンの幅広さを実感出来るようなセッションが多いので、是非他のセッション…

Azure CDN / Front Door の Subdomain Takeover 対策について

少し前に Azure CDN か Front Door を利用しているユーザー向けに以下のようなメールが届いていると思います。運用中の CDN / Front Door に関しては影響はないですが、削除する前にそれらをポイントしている DNS レコードを前もって削除しないといけなくな…

Microsoft Build of OpenJDK を Azure App Service にインストールして動かしてみた

ここ数日盛り上がり気味の Microsoft がビルドした OpenJDK ですが、現状の App Service はバージョンによっては Oracle と Azul が混在しているのが解消されるかと期待しています。まだ Container Image が公開されていないので、アプリケーションで使うに…

Azure Functions の Binding / Trigger で必要なシークレットをより安全に扱う

Azure Functions は非常に便利ですが、Azure Storage や Cosmos DB などの Binding / Trigger を使う際に必要となる接続文字列は、管理を考えると若干扱いが面倒な部分があります。App Settings に直接値を設定するのが簡単ですが、権限管理という観点では値…

Hack Azure! #5 - Geek of Azure Serverless フォローアップ

Ignite 2021 では特にアップデートがなく、なかなか話す機会が無かった Azure App Service や Azure Functions といった代表的な Azure Serverless なサービスについて、Hack Azure! #5 で話をしました。これまでは大体ゲストを呼んで話していましたが、App …

Azure AD B2C にカスタムドメインを設定して MSAL (C# / JavaScript) から使ってみた

恐らく Azure AD B2C を使っている人全員が待ち望んでいたカスタムドメイン対応ですが、Front Door と組み合わせる形にはなりますが Preview として公開されました。単純に Front Door をリバースプロキシとして使うだけなのですが、割と現実的な落としどこ…

私が Azure Functions アプリケーションの開発時に意識していること

ここ数年は Azure Functions をフルに活用したアプリケーションを実装することが多かったのですが、同時に Azure Functions を失敗しないように使う方法も分かってくるので、ここらでちゃんと言語化しておきます。最近は特に Azure Light-up というハッカソ…

Azure Cosmos DB における接続文字列の管理が RBAC サポートでついに不要に

Ignite は PaaS / Serverless 周りの話が少なかったですが、Cosmos DB に関してはいくつかアップデートがありました。その中でも RBAC サポートはアクセスキーや接続文字列を管理したくない勢としては待望の機能なので、使い勝手を確認しておきました。Cosmo…

App Service Managed Certificate が Apex ドメインに対応したので試した

Apex ドメインに対応するまでは GA しないオーラが漂っていた App Service Managed Certificate ですが、Ignite 合わせと見せつつ全く関係ない感じで Apex ドメインに対応したと発表がありました。最初に公開されたのが 2019/11 なので非常に長いプレビュー…

障害に強い Azure の運用を考える (2021 年版)

Azure の日本リージョン 7 周年の日に Japan East のストレージ障害が発生するという、なんともアレな出来事がありましたが、障害発生後はアーキテクチャを見直すいい機会だと思うので色々書きます。まだ RCA は公開されていないですが、おそらくぶちぞう RD…

Azure Front Door Premium (Preview) で追加された Private Link 対応を試した

これまで Azure Front Door には SKU が存在していませんでしたが、先週に Front Door に新しく Standard と Premium の SKU が追加されたバージョンが Public Preview として公開されました。事前に REST API リファレンスには登場していたので知っていまし…

Azure App Service の Access Restriction を使って Front Door からのアクセスのみ許可する

ドキュメントを適当に読んでいたところ、App Service の Access Restriction で特定の Front Door からのアクセスのみを許可する方法がプレビューとして記載されていたので、この辺りの確認をしておきました。Front Door のドキュメントにもバックエンドへの…

Azure App Service の新しい Authentication 設定を試した

毎日、何回も Azure Portal から App Service / Azure Functions のブレードを開いているので、新しい項目があればすぐに気が付きます。なので今回の Authentication (Preview) も発見が早かったです。何の変哲もない App Service Authentication (Easy Auth…

Azure Pipelines での .NET Core アプリケーションのビルド時に NU1101 エラーが出るのを回避する

少し前から Azure Pipelines の Windows ワーカーを使っている場合に、以下のような NuGet パッケージの復元時にエラーが出ることが増えてきました。参照している NuGet パッケージが多いと大量に出るので結構邪魔ですし、マルチステージでビルドしている場…

NuGet のロックファイルと CI でのパッケージキャッシュ

基本的に NuGet に関しては CI でのパッケージのキャッシュがあまり効果的ではないのですが、推奨設定での使い方をちゃんと試しておこうと思ったので残します。GitHub Actions や Azure Pipelines には NuGet 向けのサンプル定義が用意されています。中身は…

Azure Functions の .NET 5 対応と関係する注意点

.NET 5 がリリースされて少し経ちますが、App Service は Early Access という形ですが .NET 5 への対応が行われたのに対して、Azure Functions は今のところ .NET Core 3.1 までの対応となっています。少し前から Azure Functions の .NET 5 対応に関して G…

Managed Identity を使った SQL Database の認証がとても簡単になった話

App Service のドキュメントには Managed Identity を使って SQL Database を利用するサンプルが載っていますが、ここのサンプルコードは結構いい加減で特に .NET Core 向けでは使う気がしないものでした。サンプルコードがダメなだけで SQL Database の設定…

GitHub Actions / Azure Pipelines で Pull Request に特定のラベルが付けられた時だけ処理を行う

個人的によく使っていて時々 Pull Request も投げている Durable Functions の開発リポジトリでは、全ての Pull Request に対しては基本的なテストのみ実行し、full-ci というラベルが付いた時のみ全てのテストを実行するようになっています。実際に以前投げ…

Azure App Service と GitHub Actions を使って Pull Request のプレビュー環境を自動で作成する

Azure Static Web Apps がリリースされた時に羨ましかった機能として、Pull Request を作成する度にプレビュー用の環境を自動で作成してくれる、というものがありました。レビュー中に実際のアプリケーションを確認できるのは重要なので、App Service でも欲…

よく使う Resource Provider を Azure サブスクリプションに一括登録するスクリプトを書いた

新しく作成した Azure サブスクリプションを使うと、たまに特定の Resource Provider が登録されていなくてリソースの作成時にエラーとなることがあります。Azure Portal からサブスクリプションへの強い権限を持っていれば勝手に登録されますが、Terraform …

Azure Functions への Zip Deploy を Publish Profile を使って行う方法

普段は Visual Studio からデプロイ先の Azure Functions を選んで Zip Deploy 用のプロファイルを作成していますが、たまに Visual Studio で Publish Profile を使った Zip Deploy を行う場合に、その手順を毎回忘れてしまうのでメモとして残します。おま…

ASP.NET Core / Azure Functions アプリケーションの発行後サイズを削減する

Azure Storage を使った Run From Package で公開している Azure Functions 向けパッケージの転送量が、最近になって急激に増えたのでパッケージのサイズを削減して、Azure Functions で実行するための最適化を行ったのでメモとして残します。何故マネージコ…

Azure App Service と Regional VNET Integration を使ったセキュアなアプリケーションの実装パターン

2020 年は Azure App Service にとってはネットワーク周りの新機能やアップデートが非常に多い年になりました。そろそろ今年も終わりなので App Service の定石アーキテクチャをアップデートする良い機会です。まずは今年のネットワーク関連アップデートにつ…

App Service Authentication が OpenID Connect Provider をサポートするようになった

タイトルの通り App Service の Authentication (Easy Auth) で OpenID Connect に対応したプロバイダーを追加出来るようになりました。プレビュー公開されたのは数か月前だったのですが、諸々の事情によって動かないパターンのが多かったためお蔵入り状態に…