Coding/내일배움캠프

[내일배움캠프] 최종 프로젝트 Day 15 | Node.js 4기 | Day 96 | 24.04.09.(화)

_Woo_ 2024. 4. 10. 01:16

 

Service account 

 

 

뭔가 상당히 까다로울 것만 같음

 

Q. Google Vision API 뿐만 아니라 앞으로 여러 가지 API 사용해야 하는 일이 많이 생길 같은데, API 적용하는 일반적인 방법에 대해서 익히는 시간이 필요할 같다. 일반적으로 API 어떻게 프로젝트에 적용할까?

 

A.

    1. API 문서화 확인

    2. API 키 또는 인증 방법 설정

    3. 클라이언트 라이브러리 설치 또는 HTTP 요청

    4. API 요청 및 응답 처리

    5. 데이터 포맷팅 및 저장

    6. 보안 및 성능 고려

 

Google-Cloud-API

 

- Quickstart

    - Before you begin

    - Installing the client library

    - Using the client library

- Samples

- Versioning

- Contributing

- License

 

 

Error: connect ETIMEDOUT

 

  • 기존에 연결해두었던 AWS EC2 인스턴스가 삭제되었기 때문에 이런 오류가 발생했다. (아마도?)
  • 추가로, 어떠한 오류 메시지도 발생하지 않았지만 API 요청을 줬을 때 Insomnia에서 Couldn’t connect to server. 오류가 발생했는데, 이는 DB_HOST가 RDS 주소로 되어 있었기 때문이다. (아마도?) 아니다.

 

Q. 아래 오류가 발생하는 원인을 파악하기 위해 두 가지 가설을 세웠어. 각 가설의 논리성과 타당성을 비판적으로 분석해주고, 설득력이 있는지를 미친 디테일로 작성해줘.

 

  1. 기존에 연결해두었던 AWS EC2 인스턴스가 삭제되었기 때문에 이런 오류가 발생했다.
  2. DB_HOST가 RDS 주소로 연결되어 있었기 때문이다.

 

Error: connect ETIMEDOUT

 

A. 가설 모두 "connect ETIMEDOUT" 오류의 가능한 원인으로 제시될 있으며, 각각의 논리성과 타당성을 가지고 있습니다. 그러나, 이러한 가설들이 실제 문제의 원인인지를 확실히 하기 위해서는 추가적인 정보 수집과 검증 작업이 필요합니다

 

 

Q. 오류 발생 원인?

 

A. 이 오류 메시지는 NestJS 프레임워크에서 발생한 것으로, JSON 객체가 client_email 필드를 포함하지 않고 있음을 나타냅니다. 이는 일반적으로 Firebase, Google Cloud Platform(GCP) 또는 이와 유사한 서비스를 사용할 때 발생하는 인증 관련 문제입니다. 특히, 서비스 계정 키 파일(JSON 파일)을 로드할 때 이 필드가 누락되어 발생할 수 있습니다.

 

Q. 해결 방법?

 

A. 

 

vision.service.ts는 실제 비즈니스 로직을 처리하는 부분입니다. 여기서 Google Cloud Vision API나 Firebase와 같은 외부 서비스를 사용할 때 필요한 인증 처리를 담당합니다. 따라서, GoogleAuth를 사용하여 서비스 계정 키 파일을 로드하고 인증하는 로직은 vision.service.ts에 포함되어야 합니다.

 

Q.

 

Google Cloud Vision API를 가져와서 이미지 분석하고 라벨링하는 기능을 구현하려고 하는데, src 폴더 내에 vision 폴더를 만들고 vision.controller, vision.module, vision.service를 만들어둔 상태야. 이 상황에서 간단하게 테스트를 진행하려고 하는데, 어떤 방식으로 Google Cloud Vision API를 적용해서 어떤 방식으로 테스트를 진행하면 좋을지에 대해서 미친 디테일로 작성해줘. 테스팅은 Insomnia를 활용해서 진행하려고 해.

 

——

 

근데 환경 설정을 어떻게 해야 하는 걸까~~

 

  • 로컬에서 개발, 깃허브에 올리고 AWS ubuntu에 업로드해서 연결하고 ~
  • 로컬에서 개발, 깃허브에 올리고 GCP ubuntu에 업로드해서 연결하고 ~

 

어차피 Google Cloud Vision API 사용할 건데, GCP를 사용한다면 CORS 오류라든지 이런 것들에서 문제가 발생할 가능성을 좀 줄일 수 있을까?

 

——

 

  • 현재 Google Cloud Vision 사용하려고 하는데, 경우 구글 클라우드에서 이미지를 가져올 수도 있겠지만, 그것보다는 로컬에서 직접 올리는 방향으로 가야 같다. -> 구글 이외에도 카카오 로그인, 네이버 로그인이 구현되어 있기에, 카카오 계정, 네이버 계정으로 가입한 사용자들도 구글 계정으로 가입한 사람과 동일하게 서비스를 경험할 있어야 하기 때문이다.