概要
Microsoft Azure Functions を使用し、Python関数作成の備忘録です。
今まで、クラウドはAWSばかり触っており、Azureに触れたのが初めてでした。
Azureの情報は公式にはありますが、他にはあまりない印象でした。
AWSの AWS Lambdaを使用した時のように簡単にはいかず、苦労したためまとめてみます。
間違った認識をしているのもあるかもしれません。
サンプルプログラムを一通り動作した段階となっています。
・ローカルのVisual Studio Codeにて環境を構築、ローカル環境で動作確認を実施後、
Azureにデプロイするまでの流れです。
(1)前提条件
①Azureアカウント
サブスクリプションは無料試用版を使用しています。
https://azure.microsoft.com/ja-jp/free/
に従って、アカウントを作成、利用しました。
②環境
WindowsPC環境
(2)事前準備
①リソースグループ作成
Azureサインイン後、"Azure Portal"上で作業を行います。
"Azure Portal"上では、サブスクリプションという大きな枠組みがあり、
その中に"リソースグループ"を作成します。
プロジェクト単位の管理のようなイメージでしょうか?
AWSでいう"アカウントID"が"サブスクリプション"や"リソースグループ"に該当するのかなと思っています。
⇒Azure Portalのホームより「リソースグループ」を選択。
無料試用版のサブスクリプション内に任意のリソースグループを作成します。
①"Azure Functions(関数アプリ)"作成
"Azure Portal"のホームより「関数アプリ」を選択。追加ボタンを押下します。
下記のように、
・リソースグループ
・関数アプリ名(一意の名前とする必要があります)
・ランタイムスタック
・バージョン
・地域
を選択します。
※無料試用版では、日本の東日本リージョンではPythonのサービスを使うことはできないようです。
(従量課金型は提供対象外だそうです)なので、Central USを指定します。
他の項目は、デフォルト設定(オペレーティングシステムはLinux)し、作成ボタンを押下します。
②ローカル環境の準備
WindowsPC上にローカル環境(開発環境)を作成のため、以下インストールします。
Visual Studi Code(VS Code)インストール
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
⇒ローカル開発環境はVS Codeとなります。
Pythonインストール
https://www.python.org/downloads/release
⇒"Azure Portalで"指定したものと同じ、python3.7系をインストールしておきます。
Azure CLIインストール
VS Codeの拡張機能"Azure Functions"をマーケットプレイスから取得
左のタブの上から5個目のアイコンを押下して取得します。
⇒取得後、左のタブにAzureのアイコンが追加されます。
Azure Functions Core Toolsインストール
・Node.jsをインストール
https://nodejs.org/en/download/
⇒npmも同梱されます。
・コマンドプロンプトやPowerShellで下記コマンドを実行し、Azure Functions Core Toolsを取得します。
npm install -g azure-functions-core-tools@3
※AzureにUploadする際、必要なコマンドとなります。
参考: https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-run-local?tabs=windows%2Ccsharp%2Cbash
権限変更
PowerShellを起動し、以下のコマンドを実行します。
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
※VS Codeでローカル環境として実行するときの権限を変更します。
参考:http://totech.hateblo.jp/entry/2017/09/29/162411
(3)ローカル環境にPythonコードを作成
VS Codeにアクセスし"Sign in to Azure..."をクリック。Azureにサインインしておきます。
①関数の作成
下記、画面キャプチャの赤枠クリックすると、プロンプトが表示、
ワークスペースを任意の場所を指定します。
その後、新しいプロジェクト作成が進み、
下記に従って、入力していきます。
・Select the folder containing your function project
⇒任意のPC上のフォルダを選びます。
・Select a language for your function project
⇒"Python"を選びます。
・Select a Python alias to create a virtual environment
⇒環境準備でインストールしたpythonのexeを選択します。(フルパス)
・Select a template for your project's first function
⇒"HTTP trigger" を選びます。
・Provide a function name
⇒関数名は"HTTPTest"とします。
・承認レベル
⇒今回、Anonymous を選択します。誰でもアクセスできる状態です。
完了すると、下記のようなテスト関数が生成されます。
②ローカル環境でテストを行う。
・関数作成後、F5を押し、コンソールに関数の実行状況が表示されます。
実行後、ローカル環境でのHTTPパスが表示されますので、ブラウザから実行し、動作確認を行います。
下記のように、URIに記載したユーザ名がブラウザの応答結果として表示されれば、
ローカル環境での確認は成功です。
#Azureに関数をデプロイする
##①関数アプリをデプロイ
下記の赤枠のアイコンを押下し、関数を”Azure”にデプロイしていきます。
アイコンを押下すると、コンソールが表示されるため、
下記に従って、入力していきます。
・ローカル環境の関数を実行しているパスを指定します。
・AzurePortalで作成した関数アプリ(TestSampleFunctions)を指定します。
・確認のポップアップが表示されるので、"Deploy"をクリックします。
⇒デプロイ完了まで、しばらく待ちます。
##②"Azure Portal"で確認
・デプロイ完了後、"Azure Portal"にアクセスします。
⇒デプロイされていることが確認できます。
・"関数のURLの取得"をクリックし、Azureにデプロイした関数にアクセスするためのURLを取得します。
⇒取得したURLに対し、ローカル環境で確認したのと同様にアクセスし、
結果が返ることが確認できればデプロイが成功です。
今回、確認し内容は以上となります。今後、Azure Functionsから他のAzureのサービスに対しての
処理を行えるよう、引き続き試していきたいと思います。
※なお、テスト確認後、不要なリソースは削除しておいてください。
アクセス元の制限をしていないため、パスが分かれば誰でもアクセスできることになります。
(上記で作成した関数アプリはすでに削除しておりますので、アクセスすることはできません。)