手動リレー制御の追加
手順
サーバーレスコードは、HTTPリクエストを含むさまざまなトリガーによって起動できます。HTTPトリガーを使用してリレー制御に手動オーバーライドを追加し、Webリクエストからリレーをオンまたはオフにすることができます。
この課題では、学んだことを再利用してデバイスにコマンドを送信するために、リレーをオンおよびオフにするための2つのHTTPトリガーをFunctions Appに追加する必要があります。
いくつかのヒント:
-
次のコマンドを使用して、既存のFunctions AppにHTTPトリガーを追加できます:
func new --name <trigger name> --template "HTTP trigger"
<trigger name>
をHTTPトリガーの名前に置き換えます。relay_on
やrelay_off
のような名前を使用します。 -
HTTPトリガーにはアクセス制御が可能です。デフォルトでは、関数固有のAPIキーをURLと共に渡して実行する必要があります。この課題では、誰でも関数を実行できるようにこの制限を解除できます。これを行うには、HTTPトリガーの
function.json
ファイルのauthLevel
設定を次のように更新します:"authLevel": "anonymous"
💁 このアクセス制御の詳細については、Function access keys documentationを参照してください。
-
HTTPトリガーはデフォルトでGETおよびPOSTリクエストをサポートしています。つまり、Webブラウザを使用して呼び出すことができます - WebブラウザはGETリクエストを行います。
Functions Appをローカルで実行すると、トリガーのURLが表示されます:
Functions:
relay_off: [GET,POST] http://localhost:7071/api/relay_off
relay_on: [GET,POST] http://localhost:7071/api/relay_on
iot-hub-trigger: eventHubTriggerURLをブラウザに貼り付けて
return
を押すか、VS CodeのターミナルウィンドウでリンクをCtrl+クリック
(macOSではCmd+クリック
)してデフォルトのブラウザで開きます。これによりトリガーが実行されます。💁 URLには
/api
が含まれていることに注意してください - HTTPトリガーはデフォルトでapi
サブドメインにあります。 -
Functions Appをデプロイすると、HTTPトリガーのURLは次のようになります:
https://<functions app name>.azurewebsites.net/api/<trigger name>
ここで、
<functions app name>
はFunctions Appの名前、<trigger name>
はトリガーの名前です。
ルーブリック
基準 | 模範的 | 適切 | 改善が必要 |
---|---|---|---|
HTTPトリガーの作成 | リレーをオンおよびオフにするための適切な名前の2つのトリガーを作成した | 適切な名前の1つのトリガーを作成した | トリガーを作成できなかった |
HTTPトリガーからのリレー制御 | 両方のトリガーをIoT Hubに接続し、リレーを適切に制御できた | 1つのトリガーをIoT Hubに接続し、リレーを適切に制御できた | トリガーをIoT Hubに接続できなかった |