etc
(트러블슈팅) Cloud9 에서 AWS Credential 이 자주 Refresh 되는 이슈

(트러블슈팅) Cloud9 에서 AWS Credential 이 자주 Refresh 되는 이슈

에러 문구

  • error: You must be logged in to the server (the server has asked for the client to provide credentials)

참고


증상

terminal
$ kubectl create namespace argocd
error: You must be logged in to the server (Unauthorized)

원인

aws cloud 9 내에는 ~/.aws/credentials 라는 파일이 있는데 이 곳에서 아래의 환경변수들을 주기적으로 업데이트 한다.

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION

AWS Cloud9 내의 기본 credentials 는 주기적으로 업데이트 되기 때문에, AdministratorAccess 가 포함된 cluster 사용자의 권한을 부여했던 액세스 키, 액세스 키 시크릿이 일정 시간이 지나면 사라지는 것이다.


해결방법

일정 권한을 가진 IAM User 를 생성한다. (내 경우에는 AdministratorAccess 를 가진 IAM 사용자 추가가 및 액세스 키, 액세스 시크릿 등을 발급해서 Cloud9 내의 환경변수로 export 해줬다.)
예를 들어 아래와 같은 쉘 스크립트를 통해 EKS가 내부적으로 환경변수로 인식하는 환경변수로 액세스 키 관련 환경변수를 선언해준다.


terminal
export-access-key-gitops-study-argocd.sh
export AWS_ACCESS_KEY_ID={액세스키 ID}
export AWS_SECRET_ACCESS_KEY={액세스키 시크릿}
export AWS_DEFAULT_REGION=ap-northeast-2

환경변수 활성화
위와 같은 쉘스크립트를 Cloud 9 에 접속할 때마다 아래의 명령을 수행해주거나 아래의 코드를 ~/.bashrc 에 정의해둔다.

terminal
$ source export-acess-key-gitops-study-argocd.sh