• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

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

20.05.26 17:06 작성 조회수 402

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

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

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를 확인하는데 그것으로도 확인이 안되면 에러를 준다고 합니다 ~ ! 

수고하세요 ~ ! 

0

감사합니다!

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

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

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