しばやん雑記

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

Azure

2020 年 8 月の Azure Functions Live で発表されたアップデート

2020/8 の Azure Functions Live でかなりインパクトの大きいアップデートについて話があったので、触れておきたいと思います。Azure Functions でイマイチだと思っていた部分がかなり改善されているので、今後は使うのが当たり前になりそうな機能ばかりです…

Azure Cosmos DB Serverless が Preview になったので試した

Build 2020 で発表があった Cosmos DB の Serverless がプレビューとして公開されました。Autoscale が 1 時間毎の最大 RU で課金がされるのに対して、Serverless は完全に消費した RU によって課金が行われます。Cosmos DB チームはブログとドキュメントを…

アプリを Azure Government と Azure China に対応させつつ ARM Template でデプロイする

日本在住であれば関わる機会がほぼないと思われる Azure Government と Azure China ですが、OSS で Azure 向けアプリを出していると稀に対応せざるを得ないときがあります。今回は App Service と Key Vault の Acmebot で対応する機会がやってきました。普…

Azure Functions (Premium / ASP) から Private Endpoint を使う際に必要な設定

Twitter にて SQL Server と金麦で有名なムッシュが Premium Plan で WEBSITE_VNET_ROUTE_ALL が使えないと呟いていて、いろいろ気になったので環境を作って試してみました。WEBSITE_VNET_ROUTE_ALL は Private Link や Route Table などを使う際に必要とな…

無料バウチャーがあったので AZ-204 / AZ-400 を取得した

去年開催された Ignite The Tour に参加すると、認定試験が無料で受けられるバウチャーが配られていることに気が付いたのと、AZ-204 を取っておいた方が良い状況だったので受けてみました。バウチャーの使い方とかは以下のドキュメントを参照してください。…

Hack Azure! #2 Ask the Geeks - Cosmos DB 編フォローアップ

先週の木曜に "Hack Azure! #2 Ask the Geeks - Cosmos DB 編" と題して、Microsoft Corp の勇さん・ちょまどさん・Azure MVP の三宅さん・大平さんと自分の 5 人で Cosmos DB について話す会を行いました。今後も #HackAzure ということで Synapse Analytic…

2020 年 10 月に既存の Azure Functions v2 は v3 (.NET Core 3.1) に更新されます

Azure Functions v2 もサポートが継続されるみたいな話を見た気がしますが、既存の Function v2 は使用している .NET Core バージョンの EOL に伴って v3 にアップグレードされるようです。今年の 10 月に行われる予定のようですが、例によってリージョンに…

みつばたんへの Twitter での Azure / ASP.NET Core アドバイスのまとめ

みつばたんが最近 ASP.NET Core MVC 周りで死ぬほどはまっていたみたいですが、ポートフォリオサイトを作っていたようです。自分は死ぬほどはまっていた時には全くアドバイスしなかったのに、大体動くようになってからアドバイスをするという徳の低いことを…

Azure が提供するデフォルトドメイン名を狙った改ざんについて注意喚起

Twitter でちらほら見かけて自分も軽く反応したんですが、ターゲットが Cloud Services と Traffic Manager だったので多少なりとも書いておいた方が良いかなと思ったので、注意喚起を兼ねて書きます。今回の件を改ざんと書くのは微妙に違う気がしたのですが…

de:code 夏まつり #2 フォローアップ (Azure パート)

昨日の夜に YouTube Live で配信された de:code 夏まつり #2 というイベントに Azure 担当として参加して、なんと!あの超有名な世界のぶちぞう RD と一緒に Azure 最新情報トーク(自称)をしました。ちなみにこのタイトルは某森口さんが付けてくれました。…

Azure Functions に Options のバリデーションを追加する

ASP.NET Core で導入された Options パターンを使ったアプリケーション設定ですが、IConfiguration と DI を導入すれば使えるので最近は Azure Functions の Trigger に関係ない部分で使っています。Azure Functions では IConfiguration を簡単に取れないの…

Azure Storage の Object Replication (Preview) を一通り試した

Build 2020 で発表はされたものの、全く使える気配がなかった Azure Storage の Object Replication ですが、最近になってようやく有効化されたので調べつつ基本的な機能を試しました。Object Replication は Change Feed と Versioning の上に成り立ってい…

Durable Functions の E2E 分散トレーシングは最高だった話

恐らく最初に話をしてから 2 年近く経過している気がしますが、ついに待望の Durable Functions での E2E 分散トレーシングがプレビューとしてリリースされました。牛尾さんの努力の結晶とも言います。α リリースと言われていますが、現時点での完成度はかな…

Azure CDN / Front Door の Key Vault 証明書を自動更新するツールを作った

Azure CDN と Front Door には DigiCert の証明書を無料で発行して、自動で更新までしてくれる Managed Certificate が用意されていますが、Zone Apex 向けの証明書は対応していません。そのため何処かの CA で証明書を発行し、Key Vault を使って持ち込む必…

Azure Functions でカスタム HTTP ヘッダーや HSTS のグローバル設定を行う

ドキュメント化されていないようですが、Azure Functions でも host.json によるカスタム HTTP ヘッダーの追加と HSTS の設定が行えるようようになっていました。Function App 全体で適用されるので、セキュリティに関係するヘッダーを追加するには最適です…

Easy Auth と Managed Identity を使ってグループ情報でのアクセス制限を行う

App Service の Easy Auth を使うと簡単に Azure AD でログインするアプリケーションが作れますが、Azure AD と連携しているならユーザーのロールを利用した認証が行いたくなるはずです。Security Group をしっかりと使っている場合には、アプリケーション側…

Azure Pipelines の VMSS Preview を使って Ubuntu / Windows のスケーラブルな Agent を作成する

Build 2020 で Azure Pipelines の Self-hosted Agents に VMSS 版がプレビューとして追加されました。VMSS 版ということは柔軟なスケーリングが可能ということなので、選択肢としてはかなり有望です。大規模なプロジェクトで CI / CD を行っていると、Agent…

App Service Static Web Apps の仕組みを探る(非公式)

Build 2020 では App Service に関する話は非常に少なかったですが、唯一大きなリリースとしては Static Web Apps がありました。名前の通り静的コンテンツをホスティングするためのサービスですが、同じドメインで API (Azure Functions) が付いてくるのが…

ASP.NET Core Web API と NSwag を使って OpenAPI 定義を自動生成する

昔は ASP.NET で Swagger / OpenAPI 定義を出力するには Swashbuckle が定番でしたが、あまりアクティブではない時期が長かったせいか最近は NSwag を使うようにしています。今では GitHub の Star 数も Swashbuckle より NSwag の方が多くなっています。Doc…

Azure Front Door の Rules Engine (Preview) を一通り試した

Build 2020 合わせでのリリースだと思いますが、Front Door にも Rules Engine が追加されました。これまで Front Door ではホスト名とパスベースのルーティングは行えましたが、Rules Engine を使うことで HTTP ヘッダーやパラメータベースでのルーティング…

Azure App Service へのカスタムドメイン追加方法が変更されているので注意

何気なく Azure Portal から App Service を開いてみると、カスタムドメインのブレードに見慣れぬ Custom Domain Verification ID という項目が増えていました。一昨日ぐらいまでは出ていなかったので、本当に最近追加されたようです。タイミング的に Build …

Azure Storage Blob Index (Preview) を試してみた

去年の Ignite で Mark Russinovich がセッションで話していたという Blob Index がプレビューとして公開されました。セッションでは Blob Quick Query も紹介されていましたが、こっちは公開されていないようです。これまでも Blob はメタデータとしてコン…

Azure Pipelines だけ使っているプロジェクトを GitHub Actions に移行している話

最近は Azure Pipelines だけを使っている GitHub 上のプロジェクトを、徐々に GItHub Actions に移行しています。Azure Pipelines は Approvals や Gates などが便利ですが、OSS で一人開発しているような場合は GitHub Actions に寄せておいた方が都合が良…

Durable Functions の Status Query API を独自に実装する

Durable Functions は最強に便利なので適した部分にはガンガン使っていっているのですが、REST API として提供したい場合には Internal な API が漏れ出てきてしまうので、実行結果のレスポンスが微妙にハンドリングしにくいと思うことが増えてきました。具…

Azure Pipelines を利用した App Service へのアプリケーションデプロイ戦略

Azure App Service を使っている場合のアプリケーションデプロイ方法をいろいろと極めておきたいと思ったので、実際に考え付いたデプロイ方法を Azure Pipelines を使って実装してみました。最適な定義になっているかは分からないですし、Azure Pipelines 側…

Azure Pipelines で利用できる Agentless jobs を一通り試した

Classic Pipelines では GUI で Agentless jobs を選べたようですが、YAML ではそういった専用の Job はなく、使いたかった Delay などの Task を選ぶとエラーが出るという状態だったので、一通り調べて試しました。Agentless jobs と言いますが、YAML では …

Azure Pipelines の Hosted Agent が持っている Outbound IP アドレスを知りたい

Azure Pipelines を使って API を呼び出す時に、たまに Outbound IP アドレスが欲しくなる時があります。今回は Firewall でアクセス元が制限されている Azure Storage への操作の時に欲しくなりました。具体的には Azure CDN からのリクエストは許可したい…

Terraform の Multiple Provider を利用して複数の Azure Subscription に対する構築を行う

Azure の Subscription は割と気軽に作れるので、メータリングを分ける目的などで Subscription を複数使っているケースもあると思います。そういった時には Multiple Provider を使うといい感じに解決できます。公式のサンプルだと AWS のリージョン毎に Pr…

Azure Pipelines の Self-hosted agent を簡単に作ってみた

これまで Azure Pipelines は Microsoft-hosted agents しか使ってこなかったのですが、何となく Self-hosted agents を作って試しておきたくなったので Azure VM を使って作ってみました。ドキュメントは OS 毎に用意されていますが、今回は Windows で試し…

Terraform Provider for Azure v2.3.0 で Service Tags の Data Source が追加されたので試した

今日 Azure Resource Manager 向けの Terraform Provider の新バージョンがリリースされていたので、リリースノートを眺めていたら Service Tags を取るための Data Source が追加されていました。Service Tags を取るには巨大な JSON を読み取るしかないと…