しばやん雑記

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

Functions

あえて Durable Functions でオーケストレーターの完了まで待つ Web API を作る

通常 HttpTrigger で起動する Durable Functions を作成すると CreateCheckStatusResponse を使って、インスタンス管理用のエンドポイントを含んだレスポンスを返すと思います。テンプレートから作成したコードも以下のようになっているはずです。 [Function…

Azure Functions v1 から v2 への移行手順メモ

Azure Functions のランタイムは v1 がほぼ更新が無くなり、最近は v2 の更新ばかりなので、近いうちに v1 の実質 EOL のお知らせとかが出るのではないかなと思ってます。v2 ランタイムは安定したものになっているので、早めに移行しておいた方が良いでしょ…

Azure Functions v2 は .NET Standard から .NET Core へ

ちょっと前に Azure Functions v2 で netcoreapp2.1 が使えるようになったと書きましたが、気が付いたらテンプレートもアップデートされ、デフォルトが netcoreapp2.1 になっていました。当時はデバッグに問題がありましたが、最新のツールへアップデートす…

Azure Functions v2 で netcoreapp2.1 が使えるようになった

.NET Standard 2.0 で書く必要があった Azure Functions v2 ですが、最新版の SDK を使うと .NET Core 2.1 向けにビルド出来るようになりました。正確には netcoreapp2.1 をターゲットに設定出来ます。先に SDK をリリースして、問題なければテンプレートも …

Azure Functions の各 Trigger の動作が不安定な時にやること

最近、新しくデプロイした Azure Functions の TimerTrigger が何故か発火してくれない現象に悩んでいました。実際に Monitor で実行ログを確認すると、時間がめちゃくちゃになっています。Consumption の場合は App Service Plan とは違う仕組みで動いてい…

Azure Key Vault を使って Let's Encrypt 周りを自動化する Function を作った話

Twitter で世界のやまさが Azure Front Door を試していて、Key Vault 向けにも Let's Encrypt の証明書を自動でいい感じに出来れば良いみたいなオーラを感じ取ったので、前に作った App Service 向けのものからコピペで新しく Key Vault 向けを作ってみまし…

Azure Functions v2 が GA しました

Ignite 2018 で大方の予想通り Azure Functions v2 ランタイムが GA しましたね。実際には先週に GA 版と思われるランタイムがデプロイされていたので、App Settings の設定を間違えていなければ既に GA 版ランタイムで動いているでしょう。v2 では .NET Cor…

Azure Functions で SendGrid の Dynamic Templates を使う

この間書いた SendGrid の Dynamic Templates ですが、今朝に対応した SendGrid の C# クライアントがリリースされていたので、早速 Azure Functions の SendGrid バインディングで使ってみました。Dynamic Templates 自体については前回のエントリを参照し…

Azure Functions の Key Management について調べた

Azure Functions で HTTP Trigger や Webhook を使う時に指定する API Key ですが、主に Durable Functions を使う時に悩んだのでメモとして残しておきます。Portal で適当な関数を選んで URL を取得する時に、どのキーを使うか選べます。このキーはユーザー…

Durable Functions v1.6 の Rewind API を使うと失敗した関数から再実行が可能に

Azure Functions v2 の Breaking changes に合わせて Durable Functions v1.6 がリリースされました。今回の Breaking changes は Run From Package で配布している場合に地味に大変でしたが、その話はまた今後どこかで書こうかと思いますが需要なさそう。If…

Let's Encrypt 周りの自動化を行う Azure Functions の正式版をリリースした

前に作った Let's Encrypt の自動化を行う Azure Functions ですが、あれからもちょいちょい弄り続けた結果、先日やっと正式版を出せました。いろんなバグやよくわからない Azure REST API の仕様などを乗り越えてきました。今回の正式版リリースでは以下の…

Azure Functions の新しい Run-From-Zip の仕組みと活用方法

Visual Studio 2017 の 15.8 で Azure Functions の Zip Deploy と Run-From-Zip に対応したので、そろそろちゃんとブログにまとめておこうかと思いました。デプロイのタスク定義は Azure Functions の SDK に含まれているので、他のプロジェクトでは Zip De…

Azure Functions と Application Insights を同時に ARM Template でデプロイする

今の Azure Functions は Application Insights が無いとモニタリング周りが成り立たないですが、ARM Template を使うと単独でデプロイされるので同時に Application Insights を作るようにします。Azure Functions の Consumption Plan で作る場合のサンプ…

Azure Functions v2 で .NET Core (netcoreapp2.0) が使いたい

絶賛プレビュー中の Azure Functions v2 では .NET Standard 2.0 を使って開発が出来ますが、最近は .NET Standard 2.0 では API が不足していて困るケースが出てきました。具体的には TFM として netcoreapp2.0 となる .NET Core App を使いたいわけです。…

AppVeyor と CircleCI 2.0 を使って Azure Functions v2 の CI/CD を行う

GitHub を使って Azure Functions の管理をしている場合には、やはりデプロイは自動化しておきたいです。VSTS は標準で対応してるみたいですが、AppVeyor は見た記憶がないので試しました。少し試した感じでは WebDeploy Package を Azure Functions プロジ…

Azure Functions のコールドスタートを Application Insights で確認してみる

何かと(一部?で)話題になる Azure Functions のコールドスタートが非常に遅いという話ですが、App Service Team Blog にてどのような動きとなっているか解説記事が公開されていました。ぶちぞう RD のアンテナは高いので、フォローしておくと有益な情報が…

Application Insights を利用した Durable Functions の診断を試してみた

仕事でも Durable Functions を使っていますが、一般的な HttpTrigger などと異なり Durable Functions は実行される仕組みが特殊なので、Azure Functions のログだけでは分かりにくいことが多いです。なので、とりあえず Application Insights は有効にして…

Azure Functions v2 でアプリケーション設定と接続文字列を読み込む

.NET Framework 版では ConfigurationManager を使っておけば、アプリケーション設定と接続文字列を App Service がいい感じに環境変数からオーバーライドしてくれましたが、.NET Core 版の Azure Functions を使っている場合はクラスが無いので調べました。…

Durable Functions を使って時間のかかる処理を非同期で行う

前回は Durable Functions について大雑把に試したりしていましたが、ちょうど今仕事で Durable Functions を適用するのにちょうどよいタスクがあったので、実際に使ってみることにしました。内容はタイトルの通りです。Durable Functions については前回の…

今更ながら Azure Functions の Durable Functions を試した

前から Durable Functions が面白そうだと思いつつ、Visual Studio 2017 15.5 が必要とかで中々試していなかったのですが、少し時間があったので一通り調べて動かしてみました。当然ながら全ては .NET Core の v2 ランタイム向けで試してあります。まずはド…

Azure Functions Runtime を Intel NUC にインストールした

自宅で Windows Server 2016 用として動かしていた Intel NUC を流用して、Windows 10 Pro をインストールし直し Azure Functions Runtime の環境に作り変えました。Windows Server 2016 より Windows 10 Pro の方が FCU が扱いやすいので、個人的にお勧めし…

Azure Functions and Web Jobs Tools のアップデートが失敗するのを直した

Visual Studio 2017 の 15.5 が出たので、やっと Azure Functions の新しいツールがインストール出来ると楽しみにしてましたが、無情にも謎のエラーが出てアップデートできませんでした。インストールの途中ぐらいで以下の画像のようなエラーが出てしまいま…

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

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

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

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

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

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

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

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

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

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