DevOpsでAzure FunctionsにAPIをデプロイしてみた(Java Script(Node.js)編)

ここしばらく、3~4か月でしょうか、毎週更新してきましたが、ちょっと休憩させてもらいました。
仕事が忙しかったこともありますが、毎週更新することに縛られてしまうのもよろしくないかなと。

で、実は今週も土日と仕事をしていて、今週も更新しなくていいかなーとちょっと思っていたのですが、このままほったらかしになってしまいそうだったので記事を挙げてみました。

今回もDevOps+Azure FunctionsでAPIを作ってみようという取り組みの1つ、今日はJavaScript、Node.jsによるものになります。
JavaScriptについては今や様々なフレームワークが存在しています。Vue.js、Nuxt.js等々。
私はプロジェクトマネージャーとして動いていることもあり、年齢も年齢なのでこれらのフレームワークに精通しようという気はもう無いのですが、それぞれの概要・メリット・デメリットぐらいは押さえておきたいという気持ちがあります。
今後の記事の中で改めて書いていくこともあるかもしれませんが、今回は一旦置いておいて、まずはサンプルプロジェクト作成、デプロイをやっていきたいと思います。

まずはいつもの通り、DevOpsでプロジェクトを作成します。

そして、VS Codeでサンプルプロジェクトを作成します。
他のサンプル同様、まずは「WORKSPACE」→「Create Function」を選びます。

そして、「Create new project」を選択。

そして、言語選択で「JavaScript」を選びます。

次にテンプレートの種類で「HTTP trigger」を選択。

この後、更に2,3点項目を選択、入力して以下のようにプロジェクトが作成されます。

VS Codeでのサンプルプロジェクト作成は既に別の記事でも触れているので今回は割愛しますが、今回初めて取り組む方はローカルでビルドし、ローカルでAPIを叩いてレスポンスが正常に返ってくるところまで試しておいた方がよいです。
以下の記事でも触れてますが、ローカルで動作させる場合、Node.jsをインストールしておく必要があるのでご注意ください。
多分いないと思いますが、私の記事を見ながら初めてNode.jsを触るという方がいらっしゃれば、ローカル環境でのビルド、テストの方が苦しむかもしれません。
DevOps+Azure Functionsによる環境構築はそのくらい簡単です。

プロジェクトが出来たら、Azure ReposにPushします。
Gitに詳しくない方は以下の記事を参考にしてください。

以下のようにAzure ReposにソースがPushされたことを確認できました。

と、その前にAzureポータルでFunctionを作ることを忘れずに。
「ランタイムスタック」は「Node.js」を選びます。
上で選んだPipelineは「to Linux」なので「オペレーティングシステム」はLinuxを選ぶようにしてください。

さて、ここからが初めての試みになります(JavaScriptで、ですが)。Pipelineを作ってみましょう。
以下のサンプル?のうち、「Node.js Express Web App to Linux on Azure」を選びます。

コードが置かれた場所を選びます。
当然ながらAzure Reposですね。

そしてレポジトリを選びます。

次にサブスクリプションへのログインが要求され、Azure Functionのリソース名を選択します。
恐らく先ほど作成したAzure Functionが選べるようになっているはずです。

そして、Pipelineが作られます。
今までのC#やJavaではPipelineが作られるものの、エラーが発生し、それなりに苦しんできました。
さて今回はどうなるでしょうか。実行してみたいと思います。

ビルドが開始されます。

あっさり通って次はデプロイへ。
今までのPipelineではステージを区切ったことが無かったのですが、ちゃんと定義するとこうなるのですね。

そして、デプロイも無事完了。
あれ。。?こんなにスムーズに終わっていいのだろうか。。
ということでPostmanでAPIを叩いてみましょう。

おお。。あっさりと通りましたね。
すごい。

ということで、JavaScript、Node.js編は以上になります。
恐らく手を加えたり、修正した箇所はほぼ無かったと思います。
これから試される方もこれであれば簡単に確認できるのではないでしょうか。
PipelineのサンプルにはVue.jsやAnguler.jsもありましたので他のフレームワークを使っている方もこれであれば簡単に環境構築できると思います。

あと1週ぐらい他の言語を試してみようかなと思いますが、そろそろDevOpsからは一旦離れて別のことにも取り組んでみたいですね。

実案件ではまだほとんど経験が無いのですが、AWSも今のAzureぐらいには親しんでみたいですし。
「No Code, Law Code」の波に乗っかって、Microsoft Power Platformsも触ってみたいです。 
どこまでこの更新頻度が継続できるかはわかりませんが、年末ぐらいまでは頑張りたいなぁ。。

いいなと思ったら応援しよう!