しばやん雑記

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

Azure

App Service on Linux が Japan East で利用可能になりました

これまで Southeast Asia が日本から一番近いリージョンでしたが、ついに Japan East に App Service on Linux がデプロイされたので、レイテンシを気にせず使えるようになりました。今までは Japan East / West は割と後回しでしたが、今回は早期にデプロイ…

Application Insights を Elastic Beanstalk にデプロイした ASP.NET アプリケーションから利用してみる

わざわざ Application Insights を Azure 以外から使う理由があるのかと言われそうですが、Application Insights Basic の課金はよくある APM のホスト数での課金ではなく、容量課金となっているので頻繁にインスタンスを使い捨てる場合などで、使いやすいこ…

Azure Cloud Services の移行先として Kubernetes + Windows Server Containers を検討してみる

既に Azure Cloud Services をバリバリ使って開発している場合は、そろそろ新しいサービスに乗り換えたいという思いを持っていることが多いのではないかと思います。確かに Cloud Services は純粋な PaaS としての機能は十分ですが、CI/CD も組みにくいし Ro…

Azure のアラートを Azure Functions を使って Slack に投げる

Azure のアラートは前から Webhook での通知に対応しているので、Logic Apps や Flow などで受け取ってあげれば、Slack に簡単に通知できます。単純な通知なら問題ないですが、Slack のもうちょっとリッチな通知を使いたいので、Azure Functions を使って整…

Azure Database for MySQL の SSL 接続が分かりにくい話

Build 2017 で発表された Azure Database for MySQL ですが、デフォルトで SSL での接続のみ許可されるようになっています。基本的に SSL で接続するべきだと思うので、無効化するのはお勧めしません。Azure のドキュメントにも SSL に関する記事がいくつか…

App Service on Linux の最新アップデートと de:code で久し振りにセッションをする話

先週の Build 2017 のキーノートではさらっと触れられてたぐらいですが、かなり大規模なアップデートが行われました。詳細は Azure Blog に AJ 氏が書いてます。AJ 氏とは先月に品川の Microsoft で会って少し話をしました。その来日時の記事が公開されてま…

Azure Cloud Shell に ACS Engine をインストールする

昨日の Build 2017 Keynote で Scott Hanselman がデモをしていた Azure Cloud Shell が、自分のサブスクリプションでもやっと使えるようになったので、最近はまっている ACS Engine をインストールしてみました。前に試した時は Docker を使ってサクッと動…

Azure Container Service の Kubernetes でもスケーリングが可能になっていたので試す

先週の段階では Azure Container Service で Kubernetes を作った場合には、スケーリングが未対応だと Azure Portal に表示されていたのですが、Build に合わせてなのか Kubernetes でも対応されたようです。Azure Container Service を作って Agent を開く…

Azure Container Service で作成した Kubernetes で Cron Jobs を使ってみる

Jobs はいまいち使いどころが分からなかったですが、Cron Jobs はいくらでも思いつくので実際に試しておきました。デフォルトでは有効化されていないので、ドキュメントに従って設定を追加する必要があります。ちなみに Azure Container Service で作られる …

Azure Container Service Engine を使って Windows と Linux が共存する Kubernetes クラスタを作る

Azure Container Service で Managed Disk を使いたいと思って調べていた時に、Azure Container Service Engine のサンプルに引っかかったので、いろいろと調べてました。ちょっと前にオープンソース化された ACS Engine ですが、いい感じに ARM Template を…

AppVeyor から Azure Container Service 上の Kubernetes へ自動でデプロイを行う

これまで AppVeyor と Kubernetes でやってきたことの集大成として、AppVeyor から Azure Container Service 上の Kubernetes への自動デプロイを試してみます。やってきたことは以下のエントリを参照してください。Kubernetes はかなり良いですね。AppVeyor…

Azure Container Service を使って Kubernetes と Windows Server Containers を試してみる

気が付いていなかったのですが、Azure Container Service のオーケストレータとして Kubernetes を選ぶと、Windows が選択できるようになっていたらしいです。もう 2 か月ぐらい前というのが驚きです。まだ Public Preview になってないだろと思っていたら、…

App Service on Linux を Heroku っぽく使う Runtime Stack を作成してみた

App Service on Linux のカスタム Docker Image を利用していると、やっぱり Heroku のように foreman を使ったプロセス管理が使いたくなってきました。Heroku では Procfile をルートに用意しておくと、いい感じにランタイムが読み込んで実行してくれます。…

Azure Storage Queue で遅延キューを利用する

あまり Azure で使っているのを見たことはないのですが、Azure Storage Queue でも指定した時間が経過した後に Dequeue 可能になるようがメッセージを追加することが出来ます。.NET Storage SDK には制約が書いてなかったですが、REST API のリファレンスに…

Azure App Service の認証は POST 時に Referer をチェックしているので注意

Site Extension として公開している phpMyAdmin が何故かボタンなどを押した時に 403 になるという報告があり、App Service チームの人達と調べてました。普段から Edge を使っている自分は再現できませんでしたが、その時に Referer が必要と知りました。最…

3 月なので障害に強い Azure の運用を考える(2017 年版)

3/8 に Azure の Japan East で久し振りに大規模な障害が発生しました。既に RCA が上がってきていて、ぶちぞう RD がブログで書いているので、原因についてはそっちを参照で。2017.03.08 の Azure障害 | ブチザッキそして今年も 3/11 を過ぎたことですし、…

Azure の一部インスタンスタイプでは AMD の CPU がまだ使われている

Ryzen のニュースを見て、松山の緑色した独身の生物が「AMD が使われているクラウドが無いから、仕方なく Intel CPU が使われているクラウドを使ってる」とか、舐めたことを言ってたので書きます。Twitter でのやり取りも一応載せておきます。@shibayan だま…

Azure Functions の Precompiled Functions が改善されたので GitHub 連携でデプロイを行ってみる

以前にぶちぞう RD が試した時にはまだまだ初期実装で、一度アセンブリを読み込むとロックされて更新できなくなってましたが、今朝 Azure Functions のランタイムがアップデートされて解消したみたいです。App Service を確認すると、既に最新のバージョンが…

App Service on Linux で Ruby アプリケーションを動かそうとして上手くいかなかった話

昨日の時点で気が付いてましたが、中の人から Twitter で発表されてたので App Service on Linux の Ruby 対応を試してみました。結果としては動かすことが出来なかったです。Now you can deploy your Ruby App on #AzureAppService on #Linux pic.twitter.c…

Azure CDN がカスタムドメインでの HTTPS に対応したので試してみた

ぶちぞう RD 曰く、6 年ぐらい待ったという Azure CDN のカスタムドメインでの HTTPS 対応を早速試しました。ドメイン承認プロセスがあるので、ちゃんとドキュメントには予め目を通しておきましょう。前提条件として Azure CDN エンドポイントを作成して、カ…

CircleCI と Docker を使って App Service on Linux へのデプロイを自動化する

App Service on Linux での Docker 対応は Azure Container Service などに比べて、お手軽なので非常に便利なんですが、Elastic Beanstalk のように Dockerfile を含むリポジトリから自動的にビルドをしてくれないので、必然的に何らかの方法で Docker Image…

Azure CLI 2.0 でサービスプリンシパルが簡単に作れるようになっていた

個人的に Azure で一番わかりにくいのが認証回りです。特に Azure Active Directory を使ってディレクトリが追加されたタイミングで、さらにわけが分からなくなりました。例えば Azure に対する操作を自動化したい時に Azure にログインするアカウントを使う…

App Service on Linux 向けに独自の Runtime Stack を作成する

前に書いた /home のマウントがカスタムイメージの時だけ狂うバグが修正されたようです。ちゃんとコンテナ内の /home がファイルサーバー上の正しいパスにマウントされるようになりました。バグでカスタムランタイムが作りにくいと書いてましたが、Built-in …

2017 年 4 月から Azure Web Apps の SSL/TLS 暗号スイートから 3DES が削除されます

久し振りに英語の MSDN Forums を見ると、当該のアナウンスを発見しました。メールでも通知が飛んでいるらしいですが、自分のサブスクリプションにはメールが届いていなかったです。 Currently, Azure Web Apps supports 3DES cipher, for TLS/SSL although …

App Service on Linux の Docker Container が改善された話

何と大晦日に App Service on Linux がアップデートされたことが Twitter で流れていました。海の向こうでは正月休みとかいう概念は無いみたいですね。Nazim 氏とはメールで何回もやり取りしましたが、めっちゃいい人でした。#Azure #AppService on #Linux u…

App Service on Linux のカスタム Docker イメージ機能を使って nginx + php-fpm な環境を作る

最近は Windows Containers じゃない Docker Container を弄っていたので、勢いで App Service on Linux 向けに nginx + php-fpm という鉄板な構成でカスタムランタイムを作成しました。既に shibayan/nginx-php-fpm というイメージ名で Docker Hub に上げて…

Azure Web Apps に実装された Dynamic Cache の効果を大雑把に検証してみた

Azure Web Apps はアーキテクチャ的にストレージがボトルネックになりがちですが、最近はコンテンツをローカルストレージにキャッシュする機能が追加されたり、徐々に改善の兆しがあります。Local Cache は前に調べましたが、試した範囲では思ったより効果が…

Azure Container Registry を使ってみた

App Service on Linux の Docker 対応や Azure Container Service ではリポジトリが必須なので Docker Hub などを使うわけですが、今回はプレビューで公開されたばかりの Azure Container Registry を使ってみます。Azure Container Registry の課金体系はイ…

MVP Global Summit で .NET Foundation の Challenge Coin を貰いました

階段で転んで、痛めてしまった足を冷やすために最後のセッションをキャンセルしてホテルに帰っていたら、その最後のセッションで少しイベントがあったようでした。NDA じゃないスライドをたなかさんがあげてくれていました。日本からは僕と藤原さんの名前が…

Azure Web Apps が Linux 上で動作する App Service on Linux が公開されたので試してみた

二度寝を楽しもうかと思っていたら、Twitter で @ が飛んできて起きることにしました。こんなの飛んで来たら爆睡してても起きるしかない感じです。AzureでPHPとNode.jsがLinuxで動くPaaSをPreview始めました。まだリージョン狭めです。ついに、ですな。 http…

Azure Service Fabric for Windows Server を動かすために Intel NUC を買ってみた

先週の Ignite のタイミングで Azure Service Fabric for Windows Server がひっそりと GA していたので、自宅用に Intel NUC を買って Service Fabric Cluster を構築してみました。Service Fabric で遊びたくてもローカルクラスターだと面倒なのと、Azure …

Azure Search Users Meetup and Deep Discussion を開催してきました

Azure Search 開発チームの Eugene Shvets さんから「東京に行くので Search の話をしたい」と打診を受けたのがきっかけに、JAZUG 主催で Azure Search Users Meetup and Deep Discussion を開催してきました。イベントページでは 19 時から 21 時と予定して…

Azure Web Apps と Application Insights でパフォーマンスカウンターのような値を利用する

これまで Application Insights を Azure Web Apps で使った場合には Servers の値が表示されないので非常に残念でしたが、SDK Labs 扱いの AggregateMetrics を使うと一部取れるようになりました。公式ブログを見るとパフォーマンスカウンターを扱えるよう…

Microsoft.SourceBrowser を Azure Web Apps で簡単に使えるように Site Extension にしてみた

何でも知ってそうな C# でぐぐれの人に .NET Framework の http://referencesource.microsoft.com や Roslyn の http://source.roslyn.io で使われている Browser Engine が公開されてないか聞いたら、実際にそのコードを書いた人からリプライを貰いました。…

Azure WebJobs SDK Extensions を使って実行時のエラーハンドリングを行う

Azure WebJobs SDK を使っていると、メソッドで発生した例外を処理する方法が標準で用意されていないので、内部で例外のキャッチが必要ですが、WebJobs SDK Extensions には良い感じにサマライズするトリガーが用意されているので、これを使うとかなり楽でき…

App Service Environment で Internal Load Balancer が使えるようになったので作って試してみた

最近は仕事で ASE を使ったりしていて、ここしばらく更新が無いと思っていたら、かなり大きなアップデートがやってきました。ARM な VNET へのデプロイと ILB への対応です。ARM な VNET へのデプロイは置いといて、ILB への対応で完全に VNET 内からしかア…

Azure Web Apps に Flat-File CMS な Grav をインストールする

Azure Web Apps 上に Umbraco をインストールして shibayan.jp を公開してましたが、PHP 製の Flat-File CMS な Grav に移行したので簡単に手順を残しておきます。Grav - A Modern Flat-File CMS | GravGrav は YAML と Markdown だけで書いていけるので、覚…

Azure Functions を使って Triggered WebJobs が失敗した時に Slack へ通知を投げる

最近は Azure WebJobs を使うことがさらに増えてきて、WebJob の実行に失敗した時に Dashboard を見るのがめんどくさくなったので、Azure Functions を使って Slack に通知するようにしてみました。Kudu には Triggered WebJob の実行が完了したタイミングで…

開発環境では Application Insights にテレメトリを送信しないようにする

Visual Studio から Application Insights を追加すると、開発環境でデバッグを行っている時に発生したエラーやイベントを送信してしまい、本番の Application Insights に残ってしまうので困ります。開発中はエラーが出るのなんて当たり前なので、完全にノ…

Azure Web Apps を完全に停止させる方法と Azure WebJob Dashboard 実行ログの初期化

Azure ポータルから Web Apps の停止ボタンを押しても、実際に停止しているのフロントのワーカープロセスだけで、Kudu や WebJobs が動いている SCM サイトは動き続けています。実際に Web App を停止しても Kudu には自由にアクセスすることが出来ます。し…

Azure Web Apps に追加された AppLens と Per-Instance Metrics とかの話

最近の Web Apps は監視系を色々と強化している感じがあるので、ざっくりとまとめてみようかと思います。少し前にポータルのサポートとトラブルシューティングの項目が増えました。中でも新しく増えたのは Per-Instance Metrics と AppLens です。アプリケー…

Azure Web Apps に ASP.NET Core 1.0 アプリケーションをデプロイする

昨日あたりに Azure Web Apps にも .NET Core 1.0 RC 2 がインストールされたみたいなので、ASP.NET Core 1.0 アプリケーションをデプロイして動かすことが出来るようになりました。今のところは 32bit ランタイムだけがインストールされているみたいです。…

ASP.NET Core 1.0 の Dependency Injection を使って Azure Storage を使いやすくする

Azure を使った開発では欠かせないのが Storage ですが、最新の Azure Storage Client 7.0.1-preivew からは .NET Core に対応しているので、ASP.NET Core アプリに簡単に組み込めます。これまでと変わらずに NuGet を使ってインストールするだけで準備は完…

Azure CDN で Akamai が使えるようになったので試してみた

去年に Azure CDN と Akamai の統合という話が出てきていた割にまったく動きが見えませんでしたが、突然 Akamai 対応が GA したようです。喜ばしいですね。気になる料金は、日本だと 1GB 当たり 14.08 円です。これまでの EdgeCast と同じ値段となっています…

Azure Web Apps で PHP 7 (x86 / x64) が使えるようになりました

数日前に Azure Web Apps が PHP 7 に対応したというツイートが流れてきました。[New Post] Announcing Support for PHP 7.0 on #AppService and notification of PHP 5.4 retirement https://t.co/DhsM9pY6ED— Cory Fowler (@cfowlerMSFT) 2016年5月3日その…

Azure Functions と ImageMagick を使って動画をアニメーション Gif に変換する処理を作った

Azure Functions のテンプレートに Batch があったので、どのような仕組みになっているか調べている間に面白そうだったので、ImageMagick を使ってみることにしました。とりあえず Batch のテンプレートを選んで、新しい Function を作成します。今回は Blob…

Azure Functions と Stream Analytics を使ってアプリケーションのログをリアルタイムに処理する

この間、Event Hubs に構造化されたログを吐き出す TraceListener を作ったので、ログの保存や集計などの処理を追加で行ってみました。前回の記事は以下になります。Event Hubs からのリアルタイムなデータを処理するには Stream Analytics が最適です。ログ…

Azure Event Hubs に構造化されたログを吐き出す TraceListener を作った

普通に TraceListener を作ると、既に文字列に変換されたログを書き出すしか出来ませんが、Trace クラスには Error / Warning / Infomation を出し分けるメソッドが用意されているので、そういった情報を保持したままログを書き出したいと思いました。TraceL…

Azure Functions で使える Dynamic Service Plan について調べてみた

Azure Functions が発表されて盛り上がってますが、使うよりもどんな風に動いているのかという点に興味があったので、新しく追加された Dynamic Service Plan について調べました。個人的には Classic という表記に不安しか覚えないですが、新しい仕組みの A…

Azure Portal のカスタム Dashboard 機能が思ったより便利

ちょっと前に Azure Portal がアップデートされて、Dashboard を複数作成して切り替える機能が付いてました。あとは使うかわかりませんが、フルスクリーン表示も出来るようになってました。Resource Group が導入されてリソースの管理はしやすくなりましたが…