0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Funtionsに関数をデプロイしたらなぜか認識されなかった問題

Posted at

前提

以下で作成した関数をAzureにのせたときに起きた話。
なかなか、原因がわからず2~3週間悩んだので

事象

Azureに作成したHTTPトリガー関数をデプロイしたところ、認識されなかった。

image.png

切り分け

デプロイ失敗?

デプロイはvscodeの拡張機能を使って手動で実施している
ちゃんとcompleted.とでている。
image.png

ストレージアカウントにはどう?

ちゃんとZIPファイルはアップロードできている
image.png

Functionsの設定不備?

WEBSITE_RUN_FROM_PACKAGEはちゃんとZIPファイルを向いている
image.png

Functionsの設定不備_その他

Bicepでリソース管理しているので、バージョンによる差異や指定の不足などの可能性を考慮してAzurePortalから作成したFunctionsに対して、動作を確認する
結果:なぜか認識できた
image.png

考察

ソースコードはデプロイができていて、FunctionsはちゃんとデプロイしたZIPファイルを見ている。
しかし、なぜか関数を認識できていない。

間違った方針に進んでしまったのが、手動で作成したFunctionsでは認識できているのでBicepの差異だと考えてしまったこと
ここからARMテンプレート出力したりやAzurePortalの環境変数を見たりして、両社の差分を調べていくことに時間を使ってしまった。

結論

ここでは突然思いついたことを試したらできたので、過程は省いて結論のみ
OpentelemetryとAzureMonitorの統合に使っていたuseAzureMonitorが悪さをしていた。
useAzureMonitorで定義されている環境変数は、なぜかリソース側で先に定義されていないと認識されないらしい。
通常、環境変数として外にだしている値は、関数起動時に読み取られるはずなのでデプロイ時には気にする必要はない。

今回のケースではカスタムメトリックの送信先として、ApplicationInsightsの接続文字列を先に設定する必要があった。
使っていたBicepでは、接続文字列への移行対応はまだ対応しておらず、インストルメンテーションキーを使っていたので、手動作成との差異がでていた。

useAzureMonitor({
  azureMonitorExporterOptions: {
    connectionString: APPINSIGHTS_CONNECTION_STRING,
  },
  enableLiveMetrics: true,
});

環境変数を修正

インストルメンテーションキーから接続文字列APPINSIGHTS_CONNECTION_STRINGに変更する
認識されるようになった。
image.png

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?