AWS - CodeDeploy Error


본래 개인적으로 GCP를 사용하고 있었지만(딱히 뭘 한거 아니지만 인스턴스 하나에 만들고 DNS 좀 쓰다가 시간이 다 가버렸다…) 무료 크레딧도 다 떨어진 참에 회사에서도 AWS를 이용중이기에 AWS를 사용해보고자 하였다.
Lightsail로 인스턴스를 하나 생성하고 CodeDeploy를 연결해보고자 하였다. 과정이 어렵지는 않았는데 생각보다 삽질을 하여 삽질하였던 부분에 대해 메모

가이드

Lightsail에 CodeDeploy를 사용하고 싶으신 분들이라면 아래의 글을 참고하시면 수월하게 진행하실 수 있을 것이다.

AWS CodeDeploy 가이드
미디엄 hemant bhosale의 포스팅

삽질1

처음에 검색했을 때 AWS 가이드가 한국어로 표기된 것이 나와서 한국문서로 보기 시작했는데 이게 문제였다….⛈
해외 서비스의 경우 가이드는 원어나 영어로 보자

CodeDeploy를 사용하기 위해서는 목적지 서버에 CodeDeploy Agent 해야 하는데 설치해야 하고 설치파일은 아래와 같이 가져올 수 있다.

wget https://<bucket-name>.s3.<region-identifier>.amazonaws.com/latest/install

여기서 bucket-nameregion-identifier 를 지정할 수 있는데 어느 리전에의 버킷에서 설치파일을 가져올 것인지 정하는 것이다.
서울 리전의 경우는 아래와 같고

  • bucket-name: aws-codedeploy-ap-northeast-2, region-identifier: ap-northeast-2

현재 한글 번역된 문서에는 아래와 같이 되어 있다.

  • bucket-name: ap-codeDepy-ap-northeast-2, region-identifier: ap-northeast-2

bucket-name이 잘못 되어 있다. 🍄

삽질2

인스턴스(LightSail) 현재 CodeDeploy를 사용할 때 LightSail은 온프레미스로 보기때문에 따로 등록을 해줘야 한다.
이 절차를 LightSail 인스턴스에서 하는 것이 맞다고 생각했으나 AccessDenied 와 비슷한 종류의 오류가 났다. 아래와 같은 등록 절차는 본인의 로컬이나 aws 설정이 되어 있는 곳에서 작업하자. 당연한 이야기지만 아래 명령어를 실행하기 위해서는 aws-cli를 설치해야한다.

aws deploy register-on-premises-instance — instance-name <InstanceName> — iam-user-arn <IAM User ARN> — region <Region>

aws deploy add-tags-to-on-premises-instances — instance-names <InstanceName> — tags Key=Name,Value=<InstanceName> — region <Region>
  • InstanceName: LightSail 인스턴스 이름
  • IAM User ARN: 해당 인스턴스를 대표? 관리? 하는 유저의 값
  • Region: 설치하면서 등록한 리전

삽질3

위 과정에서 보면 등록에 사용자가 필요한것을 볼 수 있는데(여기 외에도 필요하다.) 온프레미스 방식으로 CodeDeploy를 사용하기 위해서는 인스턴스 하나당 하나의 사용자가 필요하다.

AWS 안내

You can associate only one IAM user with only one on-premises instance. Trying to associate a single IAM user with multiple on-premises instances can result in errors, failed deployments to those on-premises instances, or deployments to those on-premises instances that are stuck in a perpetual pending state.

한 사용자로 2개의 인스턴스를 등록하려다보니 삽질을 좀 하게 되었다.. 문서 제대로 읽어볼껄…. 😿

번외 - Nuxt & Heroku

무관한 이야기지만 어딘가에 메모해두는 것이 좋을 같아서 같이 메모

NuxtHeroku를 통해 배포할 경우 Config Vars 에서 KeyHOST, Value0.0.0.0 으로 설정하는데 Key를 대문자로 작성하자..
안 그럴 경우 포트 바인딩이 실패한다.


개인이 참고하고자 작성한 글이며, 잘못된 정보가 있을 수 있습니다. 잘못된 정보는 메일로 보내주시면 감사하겠습니다. 🙏