로컬에서 테스트할때는 걍 디렉터리에 json 저장해주고 디렉터리 경로만 잘 GOOGLE_APPLICATION_CREDENTIALS로 환경변수 설정해주면 됨
그러나? aws ecs fargate 환경 에서는? 시크릿한 json 파일 어떻게 저장?전송?할건데~
1. secret manager -> 돈나오니까 패스
2. parameter store -> 오케이 도전!
찾아보니 fargate는 기본적으로 /tmp 경로에 임시 저장소를 제공한다고 함
1. parameter store에 firebase에서 받은 service-account.json 내용을 그대로 복붙해서 저장
2. terraform에서 task definition을 설정할때 parameter store에서 내용을 읽어서 secret한 GOOGLE_APPLICATION_CREDENTIALS_CONTENT 환경 변수로 저장하게 함
3. terraform에서 task definition 설정할때 GOOGLE_APPLICATION_CREDENTIALS 환경변수에 /tmp/service-account.json 설정
4. terraform에서 command로 컨테이너 시작할때 GOOGLE_APPLICATION_CREDENTIALS_CONTENT를 /tmp/service-account.json 파일에다가 쓰게 함
=> 근데 또 여기서 docker 파일의 cmd랑 동시작동이 잘 안되는 이슈가 있었음 그래서 걍 task definition command에 어플리케이션 실행 커맨드도 넣음
*terraform안쓰면 걍 aws 콘솔에서 하면 됨
그런데 이슈는 golang 어플리케이션에서 json 파싱을 못함; 알림을 보내려 했더니 project Id를 찾을 수 없다구 나옴
디버깅 해보니까 service-account.json에 있던 privatekey에 있던 이스케이프 문자 \n 때문이었음
그래서 다음 파이썬 코드로 \n -> \\n으로 바꿔서 다시 parameter store에 저장함
import json
# JSON 파일 읽기
with open('원본json경로', 'r', encoding='utf-8') as file:
data = json.load(file)
# 'private_key' 필드의 줄바꿈 문자 처리
if 'private_key' in data:
data['private_key'] = data['private_key'].replace('\n', '\\n')
# 변환된 JSON 파일 저장
with open('수정본json경로', 'w', encoding='utf-8') as file:
json.dump(data, file, indent=4)
print("private_key의 줄바꿈 문자가 \\n으로 변환되었습니다.")
잘됨. 굿
근데 이렇게하는게 맞나?ㅎㅎ
'개발 노트 > 에러 화풀이 기록' 카테고리의 다른 글
왜 테이블 생성은 잘 되는데, 외래 키 추가는 무한로딩이죠? (1) | 2024.10.07 |
---|---|
[Spring] java.sql.sqlexception 소켓에서 읽을 데이터가 없습니다 에러 / c3p0, commons dbcp2 커넥션풀 사용 (0) | 2022.09.01 |
[Spring] 스프링 - 리액트 연동 과정에서 생긴 CROS 에러 (1) | 2022.09.01 |