こんにちは。torippy1024です。
最近、Azureラボ環境をいじれる機会を得たため、今更ながらAzure Functionを操作してみました。
その際、ローカル環境とクラウド環境(Azure上)で環境変数の設定方法に違いがあったため、メモとして残しておきます。
サンプルコード(Python)
例えば以下のように、ユーザー名を環境変数として取得する場合を考えます。
import os
user = os.environ.get("USER_NAME")
os.environ.get()で"USER_NAME"という名前の環境変数の値を取得している訳ですが、
この環境変数の指定方法が、ローカル環境とクラウド環境(Azure上)で異なっており、それぞれどう設定すればいいか最初わからなかったため、メモとして残しておきます。
ローカル環境における環境変数の設定方法
ローカル環境では、ローカル端末上のlocal.settings.jsonで指定します。
階層としてトップレベルにあり、host.jsonやrequirements.txtと同じディレクトリ内にあります。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxxxxxxxxxxx;AccountKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;EndpointSuffix=core.windows.net",
"FUNCTIONS_WORKER_RUNTIME": "python",
"USER_NAME": "torippy1024"
}
}
クラウド環境(Azure上)における環境変数の設定方法
クラウド環境では、Azure Portal上のAzure Functionの画面で指定します。
関数アプリの画面の「設定」-「構成」を選択します。
「新しいアプリケーション設定」で環境変数を追加できます。
環境変数を追加/編集した後は必ず「保存」を押して変更内容を反映させましょう。
「保存」を押さないと変更内容は破棄されてしまいます。また、同時にアプリの再起動も行われるので注意しましょう。
今後の課題(独り言)
パスワードやアクセスキーを指定する際は、上記のような環境変数でなく、Azure Key Vaultを使うべきだと思います。
試してみたのですが、アクセスポリシーの設定方法がよくないのか、うまくいってません・・・・・。
こちらは解決したらまたメモとして書いておこうと思います。