1

私は、他のリソースの中で、Web ジョブとスケジューラの一部であるジョブをホストする Web サイトを作成する ARM テンプレートを持っています。認証を除いて、ARM テンプレートを使用してすべてを構成することができました。

ジョブを実行する必要がある場合、Web ジョブを開始する HTTP 要求が作成されます。残念ながら、Web ジョブは開始されません。Azure portal にアクセスしてジョブの設定 (アクション設定) を更新し、基本認証 (展開資格情報を使用) を構成すると、すべてが期待どおりに機能し始めますが、ARM テンプレートからそれらの資格情報を取得する方法がわかりません. 1 回実行して Web サイトを作成し、資格情報を取得してから ARM テンプレートを更新することもできますが、そもそも ARM テンプレートを作成している理由がすべて無効になります。

4

1 に答える 1

6

私はそこに至る道のりのほとんどを手に入れた答えを見つけました。リクエストの Uri を に設定できますlist(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.scmUri。また、残りのパスを連結する必要があります (例: /api/triggeredwebjobs/{webjobname}/run)

上記のコードによって生成された Uri には、基本的な認証資格情報が含まれており、ある時点で解析され、ユーザー名とパスワードが Uri から取り出されるため、Azure portal には表示されず、認証は "基本" に設定されます。 、資格情報は抽出された値に設定されます。

ただし、私の Uri には、パラメーターを Web ジョブに渡すためにクエリ文字列が末尾に追加されていました。デプロイ プロセス中に、クエリ文字列が壊れます (疑問符はエスケープさ%3Fれ、引数値にエスケープされた文字がある場合は、エスケープされなくなります。

文字列を連結して (プロパティを使用せずに) Uri を構成し、プロパティの兄弟であるプロパティを次のようにscmUri設定することで、これを回避することができました。authenticationuri

"authentication": { "type": "Basic", "username": "[list(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.publishingUserName]", "password": "[list(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.publishingPassword]" }

于 2016-11-18T22:16:36.277 に答える