ngrok을 사용하여 로컬에서 실행되는 Azure Functions에 외부(인터넷 쪽)에서 액세스

소개



이것은 C#의 이야기라고 생각하게 하면서, 실은 Alexa 스킬을 C#로 구현해, Tello를 Alexa 경유로 조작하는 목표를 달성하기 위한 도중이므로, 이것은 Alexa 스킬의 이야기입니다.

지금까지 다음과 같이 왔습니다.
  • Alexa 기술을 솔직하게 Node.js를 사용하여 AWS Lambda에 배포
  • Alexa 기술을 C ​​#으로 구현하여 AWS Lambda에 배포
  • Alexa 기술을 Node.js로 텔로 작업하기

  • 그렇다면 다음은 당연히 이것입니다.
  • Alexa 스킬을 C#으로 구현하여 텔로 작업하기

  • 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를 선택합니다.


    프로젝트 이름은 TelloControlCSharpSkill로 해 둡시다. 가는 것은 Tello를 조작하게 되기 때문에.

    OK 버튼을 누르면 작성 완료입니다.

    실행 버튼을 눌러 실행합니다.



    그러면 다음과 같은 콘솔이 시작되고 Azure Functions가 PC에서 작동을 시작합니다.


    콘솔에 표시된 정보 중 이 기능에 액세스하기 위한 URL이 있습니다.
    이 URL을 브라우저의 주소 입력란에 입력해 봅시다.



    아래와 같이 표시되면 동작하고 있습니다.


    그러나 이것은 로컬 주소이므로 인터넷을 통해이 기능에 액세스 할 수 없습니다.

    그래서 ngrok의 차례입니다.
    이 Azure Functions는 움직이지 않고 유지합니다.

    ngrok 실행



    ngrok을 실행하려면 다음을 준비해야 합니다.
  • Node.js 설치 ( 여기 )
  • ngrok 설치 ( 여기 )

  • Node.js를 설치하고 ngrok을 설치 한 후 ngrok을 사용하여 인터넷에서 움직이지 않는 Function에 액세스 할 수 있습니다.
    > ngrok http 7071 -host-header="localhost:7071"
    

    그러면 글로벌 URL과 로컬 주소(포트 번호 7071)가 연결되어 인터넷 측에서 액세스할 수 있습니다.
    이 URL은 ngrok을 시작할 때마다 임의의 문자열이 할당됩니다.



    이제 URL https://4743e56d.ngrok.io/api/Function1을 브라우저의 주소 필드에 입력해 보겠습니다.

    역시 이전과 같은 페이지가 표시되면 제대로 동작하고 있는 것입니다.



    이제 인터넷에서 이 기능에 액세스할 수 있습니다.

    그렇다고 하는 것은 PC상에서 Alexa 스킬의 엔드 포인트를 동작시켜, Alexa로부터의 리퀘스트를 받고 스킬의 처리를 실시할 수 있게 되었다고 하는 것입니다.

    다음은 이 기능에서 Alexa로부터 요청을 받고 응답을 반환하는 방법을 설명합니다.

    좋은 웹페이지 즐겨찾기