1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ngrokを使ってローカルで実行されているAzure Functionsに外部(インターネット側)からアクセスする

Last updated at Posted at 2018-11-02

はじめに

これはC#の話と思わせつつ、実はAlexaスキルをC#で実装して、TelloをAlexa経由で操作するという目標を達成するための道中なので、これはAlexaスキルの話なのです。

これまでに、以下のことをやってきました。

  • Alexaスキルを素直にNode.jsを使ってAWS Lambdaにデプロイする
  • AlexaスキルをC#で実装してAWS Lambdaにデプロイする
  • AlexaスキルをNode.jsを使ってTelloを操作する

そうなれば次は当然これです。

  • AlexaスキルをC#で実装してTelloを操作する

Node.jsを使う場合はPC上でスキルの処理部分を動かし、ngrokでインターネット側からアクセスできるようにし、Alexaからのリクエストを受け取って、レスポンスを返すという流れでした。
こんな感じで。

> node index.js
>
> ngrok http 3000

これでPC上で動作するプログラムをスキルのエンドポイントにできました。

ではC#で同じことをやるにはどうしたらよいでしょうか。

C#でサーバーレスな仕組みといえばAzure Functionsです。

Azure Functionsのプロジェクトでスキルのエンドポイントを作成し、それをngrokで外部とつなげる、という流れです。

今回はまずはAzure Functionsをngrokを使ってインターネット側からアクセスできるようにします。

Azure Functionsプロジェクトの作成

ファイル→新規作成→プロジェクト

と選択してAzureFunctionsを選択します。
clipboard_20181102195136.png

プロジェクト名はTelloControlCSharpSkillとでもしておきましょう。ゆくゆくはTelloを操作することになるので。

OKボタンを押したら作成完了です。

実行ボタンを押して実行します。

clipboard_20181102195735.png

すると以下のようなコンソールが立ち上がり、Azure FunctionsがPC上で動作を開始します。
image.png

コンソールに表示された情報の中に、このFunctionにアクセスするためのURLがあります。
このURLをブラウザのアドレス欄に入力してみましょう。

image.png

以下のように表示されたら動作しています。
image.png

しかし、これはローカルアドレスなので、インターネット経由でこのFunctionにはアクセスできません。

そこでngrokの出番です。
このAzure Functionsは動かしっぱなしにしておきます。

ngrokの実行

ngrokを実行するためには以下の準備をしなければいけません。

Node.jsをインストールし、ngrokをインストールしたら、ngrokを使ってインターネット側から動かしっぱなしになっているFunctionにアクセスできるようにします。

> ngrok http 7071 -host-header="localhost:7071"

とすると、グローバルなURLとローカルアドレス(ポート番号7071)が結び付けられ、インターネット側からアクセスできるようになります。
このURLはngrokを起動するたびにランダムな文字列が割り当てられます。

image.png

ではURLhttps://4743e56d.ngrok.io/api/Function1をブラウザのアドレス欄に入力してみましょう。

やはり先程と同じページが表示されれば正しく動作していることになります。

image.png

これでインターネット側からこのFunctionにアクセスできるようになりました。

ということはPC上でAlexaスキルのエンドポイントを動作させて、Alexaからのリクエストを受け取ってスキルの処理を行うことができるようになったということです。

次はこのFunctionでAlexaからのリクエストを受け取ってレスポンスを返す方法について説明します。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?