Netlify 및 Deepgram을 사용하는 서버의 로깅이 없습니다.

전통적인 서버 응용 프로그램은 항상 열고 자원을 사용하며 가용성을 확보하기 위해 유지보수를 필요로 한다.Serverless는 URL을 통해 기능이 공개되는 방식으로 작동합니다.요청을 보내면 위로 회전하고 논리를 실행한 다음 아래로 회전합니다.모든 서버 스크립트 ("함수"라고 함) 는 여러 번 병렬로 실행할 수 있기 때문에 확장에 적합할 수 있습니다. 구체적인 것은 용례에 달려 있습니다.
이 강좌에서는 Netlify 서버 없는 함수를 설정하여 Deepgram's Node.js SDK 성적표를 받습니다. 하나는 위탁 관리 파일이고, 하나는 로컬 파일입니다.서버 함수가 없으면 장시간 사용하는 스크립트에 적합하지 않기 때문에 이런 방법으로 실시간 복사를 하는 것을 권장하지 않습니다.

저희가 시작하기 전에.
필요한 사항:
  • 노드js가 당신의 기계에 설치되어 있습니다 - download it here.
  • Deepgram API 키 get one here
  • Netlify CLI가 설치되어 있음 - get started guide here.또한 반드시 로그인해야 합니다.
  • 새 디렉터리를 만들고 터미널로 탐색합니다.npm init -y를 실행하여 package.json 파일을 만들고 Deepgram 노드를 설치합니다.js SDK:
    npm install @deepgram/sdk
    

    Netlify 프로젝트 설정
    웹 dashboard에서 Netlify 프로젝트를 설정할 수 있지만, Netlify CLI가 우리의 기능을 테스트하기 위해 필요하기 때문에, 우리도 여기서 사용할 수 있습니다.프로젝트 디렉터리에서 netlify init 실행하고 알림이 나타날 때 '수동으로 사이트 만들기 및 배치' 를 선택하십시오.
    Netlify 웹 대시보드에 새 항목이 표시됩니다. netlify open 를 사용하여 열 수 있습니다.

    너의 첫 번째 Netlify 함수
    특정 디렉터리/netlify/functions에 논리를 넣으면 Netlify는 서버 기능이 없는 제로 설정을 제공합니다./netlify/functions/hello.js에 새 파일을 만들고 다음 항목으로 채웁니다.
    exports.handler = async event => {
      try {
        // Any logic goes here, but we'll return a fixed response
        return { statusCode: 200, body: JSON.stringify({ message: 'ok' }) }
      } catch (err) {
        return { statusCode: 500, body: String(err) }
      }
    }
    

    기능 테스트netlify dev를 실행하고 로컬 서버가 시작될 때까지 기다립니다. 대개 http://localhost:8888입니다.다른 터미널을 열고 다음 명령을 실행하여 응답을 봅니다.
    curl http://localhost:8888/.netlify/functions/hello
    
    이 일에 놀라지 마라.URL에서 함수를 포함하는 로컬 디렉토리는/netlify여야 합니다.
    당신의 터미널은 다음과 같아야 합니다.


    Deepgram API 키 추가
    대부분의 위탁 관리 공급자와 마찬가지로 Netlify는 민감한 키를 환경 변수로 설정하는 방법을 제공합니다.Netlify CLI는 웹 대시보드에서 로컬로 실행할 때 모든 변수 - 슈퍼 쿨을 주입합니다.
    프로젝트 디렉토리에서 netlify open를 사용하여 프로젝트 대시보드를 엽니다.Site settings > Build & deploy > Environment > Environment variables를 누르면 Deepgram Console 의 값을 사용하여 DEEPGRAM_API_KEY 라는 새 변수를 만듭니다.netlify dev 서버가 계속 실행 중이면 ctrl + c를 사용하여 중지하고 재부팅하십시오.키가 주입되고 있는 것을 보실 수 있습니다. 이것은 키가 현재 사용할 수 있음을 의미합니다. process.env.DEEPGRAM_API_KEY

    트랜잭션 관리 파일functions 디렉토리에서 다음을 사용하여 만듭니다hosted.js.
    const { Deepgram } = require('@deepgram/sdk')
    const deepgram = new Deepgram(process.env.DEEPGRAM_API_KEY)
    
    exports.handler = async event => {
      try {
        const { url } = JSON.parse(event.body)
        const { results } = await deepgram.transcription.preRecorded({ url })
        return { statusCode: 200, body: JSON.stringify(results) }
      } catch (err) {
        return { statusCode: 500, body: String(err) }
      }
    }
    
    파일을 저장하면 새 URL을 즉시 사용할 수 있습니다.이 함수는 url 속성을 가진 데이터의 유효 부하가 필요합니다.테스트를 위해 cURL을 다시 사용할 수 있습니다.
    curl -X POST -H "Content-Type: application/json" -d '{"url": "https://static.deepgram.com/examples/nasa-spacewalk-interview.wav"}' http://localhost:8888/.netlify/functions/hosted
    

    웹에서 함수 액세스
    Netlify는 기본 응용 프로그램과 같은 영역에서 기능을 사용할 수 있도록 합니다. /.netlify/functions 경로 아래에 있습니다.따라서 상대 URL을 지정하여 주 응용 프로그램에서 Netlify 함수를 호출할 수 있습니다.이것은 그것이 현지와 배치 후에 일할 것이라는 것을 의미한다.
    홈 디렉토리에 index.html 파일을 생성합니다.
    <!DOCTYPE html>
    <html>
    <head><meta charset="UTF-8"></head>
    <body>
      <button>Transcribe from URL</button>
      <script>
        document.querySelector('button').addEventListener('click', () => {
          const url = prompt('Please provide an audio file URL')
          fetch('/.netlify/functions/hosted', {
            method: 'POST',
            body: JSON.stringify({ url })
          }).then(r => r.json()).then(data => {
            console.log(data)
          })
        })
      </script>
    </body>
    </html>
    
    브라우저에서 http://localhost:8888로 이동하여 버튼을 클릭하고 정적 파일 URL을 제공합니다https://static.deepgram.com/examples/nasa-spacewalk-interview.wav.브라우저 콘솔을 열면 Deepgram에서 응답이 표시됩니다.


    로컬 파일 복사
    새 함수 파일 만들기 - file.js:
    const { Deepgram } = require('@deepgram/sdk')
    const deepgram = new Deepgram(process.env.DEEPGRAM_API_KEY)
    
    exports.handler = async event => {
      try {
        const { results } = await deepgram.transcription.preRecorded({
          buffer: Buffer.from(event.body, 'base64'),
          mimetype: 'audio/wav'
        })
        return { statusCode: 200, body: JSON.stringify(results) }
      } catch (err) {
        return { statusCode: 500, body: String(err) }
      }
    }
    
    <form><button> 아래에 index.html를 추가합니다.
    <form enctype="multipart/form-data" action="/.netlify/functions/file" method="POST">
      <input id="file" type="file" name="file" />
      <input type="submit" value="POST to server" />
    </form>
    
    브라우저를 새로 고치고 파일을 업로드합니다. 브라우저에서 결과를 볼 수 있을 것입니다.페이지에서 결과를 처리하는 경우Sandra details how to submit a form using JavaScript here.

    배포 기능
    준비됐나요?netlify deploy . 이렇게
    배치되면 Netlify 함수에 임의의 이름으로 접근할 수 있습니다.netlify.app/.netlify/functions/function name.웹 페이지가 같은 하위 영역에 서비스되기 때문에 수정되지 않을 것입니다.
    프로젝트를 재구매를 통해 배치할 수 있도록 설정하면 Netlify는 GitHub 푸시 배치를 지원합니다.

    마무리
    Netlify는 서버 없는 배포를 단순화하지만, 이 가이드를 읽은 후 궁금한 사항이 있으면 도움을 드리겠습니다!우리한테 전화해.

    좋은 웹페이지 즐겨찾기