LoginSignup
0
2

More than 3 years have passed since last update.

【戦うサラリーマンSE】Azure Functions #1 はじめての関数作成

Last updated at Posted at 2020-03-01

戦うサラリーマンSEシリーズについて

筆者であるKanachaneeは読んで字のごとく、いっぱい働くサラリーマンSE(笑)なのですが、
日々、技術や人と戦っています。そういった日々の戦いの記録や想い、時には戦う上で大事になる技術要素、
次のステップアップにつなげるために勉強したことの記録などを残していこうと考え、作成します。
ちなみにこのシリーズで取り上げる、技術要素の記事は深堀りしません。
ですので、オプション的な設定がどのような位置づけで存在しているのかなどの説明書きは期待しないでください。
ただ、私が実際に動かしたことの記録に基づいて記載していきます。

この記事について

個人的にFaaS(Function as a Service)というのものが気になっておりまして、勉強しようと一念発起し、
別の記事でAWS Lambdaの記事を書いていますが、一方でAzureにもサービスがあるので、触ってみようと思った次第です。

Azure Functionsについて

lambdaと同じですが、サーバーレス環境でコードを実行できるサービスということですね。
まだ、情報を集め始めたばかりなので、APIゲートウェイのようなものがあるかは分かりませんが、
TechNetの記事に従って学習を進めてみたいと思います。

Azure Portal で初めての関数を作成する
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-azure-function

まずはAzureにログインして、Azureの基本である[リソースの作成]から行います。

image.png

↓のような感じでフィルターから[関数]で検索をかけると[関数アプリ]が表示されます。

image.png

image.png

関数アプリの画面で[追加]をクリックします。
まずは専用のリソースグループで管理しようと思いますので、新規で作成します。

ランタイムは[Python]、リージョンは[East Asia]にして、次へ進みます。
※Dockerコンテナはいまは触れません。

1.png

ストレージアカウントは新規で用意します。
理由は↓に記載されている通り、Azure Functionsを利用するにはBlobとかキュー、テーブルストレージを利用可能なアカウントが必要になるようです。

image.png

image.png

プランは従量課金で良いので、そのまま進みます。
説明は以下のように記載がありますが、いまのところ良く分かりませんので、とりあえず進みます。

image.png

次も何もいじらずに次へ進みます。

image.png

Application Insightsというのは監視サービスの一種です。
以下に説明が記載されています。

Application Insights の使用量とコストを管理する
https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/pricing

image.png

タグも不要なので、次へ進み、

image.png

image.png

デプロイが終わりました!
image.png

おー!なんかトップページはかっこいいですね!

image.png

ではさっそく、「Hello World」していきますか。

関数の作成

新規作成をクリックすると↓のような画面に切り替わりました。
どうやら、エディタが必要なようです。私はVS Codeを選んで、続行を選択しました。

image.png

image.png

↓の感じでいろいろと注意文が表示されました。VSCodeのインストールが必要なこと、あとはNode.JSをインストールする必要もあるとのこと。

image.png

ということで、ローカル端末にNode.JSをインストールします。

Node.JSのダウンロードURL
https://nodejs.org/en/download/

image.png

インストールが終わったら、コマンドを実行します。

CoreToolsパッケージをインストール
npm install -g azure-functions-core-tools

image.png

終わると↓のような感じになるようです。

image.png

次にVSCode側の操作になります。
先ほどのAzure Functions内の案内に記載されていたリンクに従い、ダウンロード/インストールします。

image.png

VSCode上で拡張機能が表示されるので、インストールします。
image.png

インストールが終わったら、アクティビティバーのAzureロゴをクリックします。
image.png

[Sign in to Azure]を選択し、ログインします。

image.png

ログインが終わると↓のようなページが表示されるので、画面を閉じます。

image.png

するとVSCode上に以下のような形で左側のツリーメニューにAzure Functionsポータル上と同じメニューが表示されるようになりました。

image.png

あとはVSCode上で操作ができるようになります。
まずはフォルダマークの[Create New project]をクリックします。

image.png

するとブラウザを選択できますので、とりあえず空のフォルダ1個を用意しておきます。
空のフォルダを用意したら、次に言語の種類を選択します。ここでは[Python]を選択します。

image.png

Pythonのエイリアスとか仮想環境を指定しろ、と書いておりますが、ひとまずここはスキップして先に進みます。

image.png

次は記事に従って、[HTTP trigger]を選択します。

image.png

関数名は適当に名付けて、Enterを押下します。

image.png

承認レベルは関数を作成したいからという理由で[Function]を選択します。
※この時点では他の選択肢が何を意味するかは特に調べません。

image.png

画面をどう開くかみたいな話なので、[Open in current window]を選択しておきます。

image.png

おー!ひとまず土台は整ったっぽいです。

image.png

書かれているPythonのコード内容からして、ユーザー名を引数として、与えてやれば、「Hello,ユーザー名」的な感じに表示されるっぽいですね。

サンプルコード
import logging

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
    else:
        return func.HttpResponse(
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
             status_code=200
        )

学習ページには一切情報が書かれておらず、不親切だなぁという感じなのですが、先ほどテストで作成した関数をデプロイするにはVSCode上でテスト関数名を右クリックすることでデプロイのメニューを表示させることが可能でした。

image.png

何やら、警告が表示されますが、構わず、[Don't warn again]を選択します。
image.png

すると画面上のほうにnew Function App in Azureの項目が表示されるので、適当に追加する関数アプリの名前を指定します。

image.png

Pythonのランタイムが選べるので、3.7.xを選択しておきます。

image.png

ロケーションは[East Aaia]を選択しておきます。
image.png

おっ!作り始めたっぽいですね。
image.png

そして、デプロイが終わったと表示されました!
image.png

そして、Azure Functionsのポータルにログインしてみると先ほどの関数が追加されています!
image.png

[関数のURLの取得]というボタンがあるので、そちらをクリックします。
image.png

[コピー]をクリックして、URLをコピーします。

image.png

記事の内容に従って、先ほど取得したURLの末尾に&name=<yourname>を追加してアクセスしてみます。
↓のような感じです。

image.png

おー!ちゃんと名前が表示されましたよー!
課題1個クリアですね!
image.png

次回もTechNetの記事内容に沿って、学習を進めていきます!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2