현재 백엔드 담당으로 springboot를 이용해 졸업 프로젝트를 진행하고 있다.
local 환경에 gcloud를 설치하고 google cloud console에서 발급받은 json 키 파일을 저장해 GOOGLE_APPLICATION_CREDENTIALS="key.json" 형식으로 환경변수로 설정해 프로젝트를 진행하고 있었다. (speech-to-text(stt) api 사용 중)
ec2로 서버를 구축해 ubuntu 환경을 이용해 배포해보니
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.
이런 오류가 발생했다. 해석하기 귀찮아서 chatgpt한테 물어보니
이런 문제고,
이렇게 해결하면 된다고 했다
key.json 파일을 ec2 서버에 옮기고 환경변수 설정을 했다.
ubuntu에서는 export 명령어를 사용해 환경변수를 설정한다고 한다.
export GOOGLE_APPLICATION_CREDENTIALS=/path/key.json
이렇게 챗지피티가 시키는대로 했지만 여전히 동작하지 않았다.
다른 블로그에서 ubuntu 환경변수 설정법을 다시 찾아봤다
cd ~
-> ec2의 제일 상단 폴더로 이동
sudo vi /etc/profile
-> vi 편집기 접근
export 환경변수명=값
-> 환경변수 설정
source /etc/profile
-> 환경변수 영구적용
echo $환경변수명
-> 환경변수 확인
이 설정을 했는데도 여전히 동작하지 않았다.
그런데 생각해보니 로컬에서 사용했을 때처럼 ubuntu에도 google cloud cli를 설치하면 될 것 같았다. 너무 쉬운 해결법이었는데 놓치고 있었다..
https://cloud.google.com/sdk/docs/install-sdk?hl=ko#rpm
이 문서를 확인해서 시키는대로만 하면 된다.
참고로 나는 amazon-linux 를 사용중이기에 Red Hat 환경이다.
다음과 같은 순서로 수행했다.
1. 무슨 말인지는 모르겠지만 일단 해당 명령어를 작성했다.
gcloud CLI 저장소 정보로 DNF를 업데이트합니다. 다음 샘플 명령어는 Red Hat Enterprise Linux 8 호환 설치용입니다. Red Hat Enterprise Linux 7 호환 설치의 경우 baseUrl 값에서 el8을 el7로 바꿉니다.
sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM
[google-cloud-cli]
name=Google Cloud CLI
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el8-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM
2. glcoud CLI 설치
sudo dnf install google-cloud-cli
공식 문서에는 이렇게 되어있으나 내 환경에서는 dnf가 작동하지 않았다. dnf를 yum으로 수정했다.
sudo yum install google-cloud-cli
3. google init을 실행해 시작
gcloud init
이렇게 하면 cmd창에 로그인 링크가 뜬다. ctrl+insert로 복사해 크롬 브라우저에 붙여넣기 한 후 구글 계정을 로그인한다. 로그인하면 인증 키를 주는데, 이걸 또 복사해 cmd 창에 shift+insert로 붙여넣기한다. 그러면 인증이 완료된다.
그리고 진행할 프로젝트를 숫자로 선택하면 끝!
도메인이 아닌 서버에서 동작하는 걸 드디어 확인할 수 있었다.. 정말 다행 ❤️❤️❤️🤓🤓🤓 원래 구글링하고 해결하면 그냥 넘어가는데, 나중에 내가 또 헷갈릴 수도 있고 이 문제의 경우 해결법이 구글링으로 안나왔어서 다른 사람들을 위해 기록한다. 다음에 좀 더 이쁘게 정리해야지.