Google Analytics Data API, Cloud Translation API 등 구글에서 제공하는 API를 사용할 때 GCP 사용자 인증을 거쳐야 한다. GCP 사용자 인증 설정을 하지 않고 Google API를 사용한다면 이런 에러가 발생한다.
java.io.IOException: The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
친절하게 참고할 수 있는 url도 던져준다.
읽어보고 하란대로 진행하면 된다.
일단 API 사용을 위해서는 서비스 계정이 필요하다.
1. 서비스 계정 생성
서비스 계정이란 일반 사용자가 아닌 Compute Engine 인스턴스와 같은 애플리케이션 또는 컴퓨팅 워크로드에서 사용하는 특별한 유형의 계정이다. 애플리케이션 내에서 서비스 계정을 사용해 인증된 구글 API를 호출하고 엑세스 권한이 있는 리소스에 접근할 수 있다.
일단 서비스 계정을 만들기 위해서는 GCP 프로젝트가 필요하다.
목적에 맞게 프로젝트부터 만들고 서비스 계정을 만들어준다.
목적에 맞는 권한을 부여해준다.
이 서비스 계정을 사용하려면 키가 필요하다.
Json형태의 새로운 키를 만들어준다.
이 키를 잃어버리면 삭제하고 다시만들어야하니 잘 저장해준다.
2. API 사용 설정
사용하고자 하는 API의 공식 문서를 확인해본다. 웬만하면 잘 정리되어 있을테니 따라만 하면 된다.
API를 사용하기 위해서는 설정을 해야한다.
GCP 에서 해당 API를 검색해 사용하기를 누르기만 하면 된다.
사용이 활성화됐다.
3. 환경 변수 설정
이제 GCP로 애플리케이션 실행을 하기 위해서는 사용 환경에 환경 변수를 설정해줘야 한다.
일단 저장한 서비스 계정의 키 경로를 복사한다.
Intellij 에서 환경 변수 설정
일단 Intellij를 통해 편하게 환경 변수 설정을 할 수 있다.
Edit Configurations로 들어간다.
여기서 Environment variables에 해당 환경 변수를 넣어주면 된다.
GOOGLE_APPLICATION_CREDENTIALS=[키 저장 경로]
중요한건 " "를 넣어주면 안됨
만약 Environment variables 가 보이지 않는다면 옵션을 찾아 추가해주면 된다.
Window에서 환경 변수 설정
공식 문서에 잘 정리되어 있지만 cmd로 하지 않고 많이 하는대로 직접 시스템 속성에 들어가서 환경 변수 추가를 해줘도 된다.
시스템 속성 > 환경변수 > 사용자 변수 > 새로 만들기
환경 변수 설정을 확인해준다. 잘됐다.
Linux CentOS7에서 환경 변수 설정
ftp를 통해 linux 서버에 키 파일을 보내준다.
키 파일을 저장한 경로를 복사해 환경 변수 설정을 해주면 된다.
export GOOGLE_APPLICATION_CREDENTIALS=[키 저장 경로]
환경 변수가 잘 설정됐는지 확인하기 위해
모든 환경 변수 목록을 출력하는 printenv 명령어를 써도 좋고
특정 환경 변수를 출력하는 echo $GOOGLE_APPLICATION_CREDENTIALS 명령어를 써도 좋다.
하지만 문제가 있다
이대로 터미널을 끄면 환경변수가 사라진다.
환경 변수를 영구적으로 저장하는 방법은 따로 있었다.
$ vi ~/.bashrc ## 파일 오픈
export GOOGLE_APPLICATION_CREDENTIALS=[키 저장 경로] ## 해당 파일에 환경 변수 설정 후 저장
$ source ~/.bashrc ## 저장된 환경 변수 즉시 적용
이렇게 저장하면 영구 저장이 된다.
MacOS에서 환경 변수 설정
oh my zsh 기준으로 설명하겠다.
zsh 설치를 안했다면 .bash_profile로 설정하는 법을 찾아하면 된다. 사실 리눅스랑 설정법은 비슷하다.
터미널을 열어주고 편집기를 열어준다.
vi로 해도 되지만 vscode로 하겠다 왜냐면 그게 더 편하니까~
vi로 하려면 vi ~/.zshrc 로,
vscode로 하려면 code ~/.zshrc 로 명령해주면 된다.
vscode가 열렸다.
적당한 위치에 환경변수를 선언해주면 된다.
export GOOGLE_APPLICATION_CREDENTIALS=[키 저장 경로]
vscode를 저장해주고 닫아준다.
리눅스 설정때랑 똑같이 source 명령어를 날려줘야 즉시 적용될 것이다.
참고
https://cloud.google.com/docs/authentication/provide-credentials-adc?hl=ko
'기타 학습' 카테고리의 다른 글
이벤트 기반 아키텍처 개념 정리 (EDA / MOM / Message Queue / Event Streaming) (0) | 2024.03.18 |
---|---|
[Google Analytics 4] 구글의 데이터 분석 마케팅 플랫폼 (소개/기능/API) (0) | 2023.05.22 |
디버깅 (개념 / 과정 / Intellij 디버깅 방법 / Eclipse 디버깅 방법) (0) | 2023.04.19 |
[Google Trends] 구글의 키워드 검색 서비스 (소개 / 기능 / API / Pytrends) (0) | 2023.04.07 |
[Protocol Buffer] 프로토콜 버퍼를 사용한 Spring REST API 구현 (HTTP 통신) (0) | 2022.12.06 |
댓글