인프런 커뮤니티 질문&답변

Mad Programmer님의 프로필 이미지

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 챗봇 사이트 만들기

챗봇 어플리케이션 만들기#3 구조 설명 & textQuery Route 만들기

환경변수가 어디서 쓰이는지 잘 모르겠습니다 ㅠ

20.05.26 17:06 작성

·

587

0

전체적인 구조는 잘 설명해 주셔서 이해했습니다!

클라이언트 - 노드 서버 - dialogflow API 

이렇게 되는데, 이번 강의에서 노드 라우트에서 보면

제가 dialogflow에서 만든 계정 정보(프로젝트 아이디 등등)를 가지고서 세션을 형성해서 연결하는 것까지 이해했습니다!

그래서 그 특정 정보를 가지고 제 계정으로 만들었던 dialogflow API로 보내게 되는 거구요!

그런데, GOOGLE_APPLICATION_CREDENTIALS 환경변수를 만들긴 했는데 이것이 어디에 쓰이는지 모르겠습니다... ㅠ

'프로젝트 이름-key.json' 라는 파일 안에는 제가 생성한 dialogflow 프로젝트 정보가 들어 있는데요, 이것이 있는 파일 경로를 이용해 일단 환경 변수를 셋팅했는데, 딱히 코드 상에서는 해당 환경 변수를 이용하는 곳이 없더라구요... ㅠ 

그런데 서버를 돌리고 포스트맨으로 요청을 보내면 잘 응답이 오는 것을 확인할 수 있었습니다. 즉, 현재 노드 서버와 dialogflow API가 연결이 잘 됐다는 뜻인데요, 왜 이게 가능한지 모르겠습니다...

const projectId = config.googleProjectID;
const sessionId = config.dialogFlowSessionID;
// 내 계정을 이용하여 dialogflow와의 세션 생성
const sessionClient = new dialogflow.SessionsClient();
const sessionPath = sessionClient.sessionPath(projectIdsessionId);

위에서 보시면 그저 프로젝트 이름하고, 임의로 정한 세션 아이디명을 넣어준 것 뿐인데, 어떻게 노드 서버가 제 dialogflow 프로젝트를 특정하여 잘 연결하는지 원리를 모르겠습니다...

답변 2

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

2020. 05. 28. 10:24

안녕하세요 ~ ! 
질문해주신것에 대한 답은

https://cloud.google.com/docs/authentication/production

여기 공식 문서에 나와있는데요 ~ ! 

우선 그 부분을 추려 보면 

  1. First, ADC checks to see if the environment variable GOOGLE_APPLICATION_CREDENTIALS is set. If the variable is set, ADC uses the service account file that the variable points to. The next section describes how to set the environment variable.

  2. If the environment variable isn't set, ADC uses the default service account that Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine, and Cloud Functions provide, for applications that run on those services.

  3. If ADC can't use either of the above credentials, an error occurs.

이 부분이 될 것 같아요. Application Default Credentials (ADC)

요약을 해보면 저희가 저희 서버에서 Google Cloud 서버에 요청을 보낼때 

Google 쪽에서는 저희의 Identity를 체크를 하는데요    체크 하므로써   quota 나   billing 을 확인 하고    Google Cloud APIs 를 접근 할수 있게도 해줍니다.    

그래서    체크를 할떄는  ADC 라는  Application Default Credentials라는게   저희의 어플에 GOOGLE_APPLICATION_CREDENTIAL이 정의되어 있는것을 확인 한다고 합니다.

그래서 그래서 만약 확인이 잘되면 넘어가고   처음으로 확인이 되어 있지않으면   기본 service account를 확인하는데 그것으로도 확인이 안되면 에러를 준다고 합니다 ~ ! 

수고하세요 ~ ! 

이수경님의 프로필 이미지

2024. 08. 16. 07:39

반갑습니다!! 다름이아니라. 제가 오류가 나오고있어서 글을 보다가 인프론에 답을 달아주는 AI인턴에게 여기 페이지를 추천 받았습니다. 하지만 여전히 모르겠습니다.

혹시 괜찮으시면 링크는 아래와 같습니다. 가르침을 주실 수 있으실까요?

수정해보았는데 답장이 오지 않습니다. - 인프런 | 커뮤니티 질문&답변 (inflearn.com)

0

Mad Programmer님의 프로필 이미지

2020. 05. 28. 17:15

감사합니다!

windows에서 해당 환경 변수를 선언했는데,

결국 코드 상에서가 아니라 제 로컬에 있는 

'프로젝트 이름-key.json' 파일 정보를 가지고서 원격에 있는 dialogflow API 구글 프로젝트를 추적한다고 이해하면 되는거죠?!