이번 글은 Nextjs로 AWS에 베포를 진행하는 과정 중 발생하였다. 처음에는 모든 페이지들이 정상적으로 작동하는 듯 싶었으나, 역시 그럴일이 없었다. Nextjs는 동적 라우팅 즉, Dynamic Loute를 지원한다. ex) www.~~~.com/products/1 위의 링크처럼 동적 라우팅이 있는 폴더 구조가 있다고 생각해보자. 결국 folder struct는 products 폴더 안에 [id].tsx와 같은 파일이 존재할것이다. 여기까지는 아주 좋다. 이제 문제는 지금부터다. AWS의 CloudFront를 이용하여 배포를 진행하였을 때 해당 동적 페이지로 들어가면 아무 페이지가 뜨지 않는다. 해결 방법은 .html 확장자를 명시적으로 넣어주는것이다. 하지만 매 페이지 요청 시 www.~~~.co..
Terraform Module 작성 방법 module은 root module과 child module 로 나누어집니다. root module : terraform 커맨드가 실행 되고 있는 module child module : root module에서 리소스를 생성하기 위해 참조하고 있는 module block child module 작성 방법 먼저 파일구조입니다. 테라폼은 디렉토리에 있는 모든 *.tf 파일들을 읽습니다. 테라폼 컨벤션으로 보통 위 사진과 같이 정의합니다. versions.tf : provider / module 의 버전 의존성 variables.tf : variable 관련 outputs.tf : output 관련 main.tf : resources/data/module/local ..
이번 포스팅에서는 테라폼 상태(state)관리에 대해 알아보겠습니다. | 테라폼 상태(Terraform state)란? 테라폼 state 관리는 대표적으로 Local state 와 backend state로 나누어집니다. terraform init & terraform apply 명령어를 실행하면 다음과 같은 파일들이 생성됩니다. 다음과 같은 파일들은 local에서 관리됩니다. .terraform .terraform.lock.hcl terraform.tfstate .terraform.* 형태의 파일 : terraform init 명령어를 실행할 때 생성 terraform.tfstate: terraform apply 명령어 실행 후 생성 .terraform.lock.hcl은 잠금 파일이며 경쟁 상태에서 생..
| VPC Endpoint를 알아보겠습니다. VPC 밖(인터넷을 통해)에서 들어오는 트래픽에는 과금이 되기 때문에 비용을 줄이기 위해 AWS 네트워크 안에서 통신할 수 있도록 하는 것이 좋습니다. VPC Endpoint는 EC2 인스턴스를 VPC 외부 서비스(AWS서비스 중 S3 등)와 private한 연결을 하기 위해 사용됩니다. 즉, AWS 서비스를 전용 연결할 수 있도록 해주죠. 따라서 어떤 트래픽도 AWS 네트워크에서 벗어나지 않기 때문에 비용을 절약할 수 있습니다. 이 경우 퍼블릭으로 해당 서비스를 노출하지 않더라도 연동할 수 있습니다. IGW, VPN, NAT, proxy 등 사용할 일이 전혀 없죠. 위 그림과 같이 private subnet이 존재할 때, 이 서브넷과 S3를 연결하고 싶다면,..
VPC에 대해 알아보겠습니다. VPC 적용 전 VPC가 없다면 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결됩니다. 이 구조의 단점은 하나의 변경사항 OR 추가만 되도 모든 인스턴스를 수정해야하는 불상사하 펼쳐집니다. VPC 적용 후 보기만 해도 깔끔하죠? VPC를 적용하면 위 그림과 같이 VPC 별로 네트워크를 구성할 수 있고 각각의 VPC에 따라 다르게 네트워크 설정을 줄 수 있습니다. VPC를 구축하는 과정 네트워크에서 해당 VPC를 설정합니다. 계정을 만들고 EC2 생성을 하면 하나의 리전에서 만들어지는 기본 리소스는 7가지가 있습니다. | VPC(Virtual Private Cloud)란? - 2019년부터 모든 사용자들에게 VPC 적용이 강제적으로 부여됐기 때문에, 대부분의 서비..
| AWS CLI 자격증명 설정 우선순위 실무에서 자주 쓰이는 방법은 Bold(두껍게)처리 했습니다. 1.CLI 명령어 옵션 2.환경변수 3.CLI 자격증명 파일 - ~/.aws/credentials 4.CLI 설정 파일 - ~/.aws/config 5.컨테이너 자격증명 (ECS의 경우) 6.인스턴스 프로파일 자격 증명 (EC2의 경우) 이 중 1,2,4,6번의 방법이 가장 많이 쓰입니다. 1번 방법 CLI 명령어 옵션을 통한 설정파일 설정 방법. 2번 방법인 환경변수를 설정하는 방법 기본적으로 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY를 설정하는 방법과 또 다른 방법으로는 사용자 프로파일 (AWS_PROFILE)을 설정하는 방법이 있습니다. ACCESS_KEY 기본적으로 ..
테라폼 워크스페이스(Work space)란? 이번 포스팅은 워크스페이스에 대해 알아보겠습니다. 워크스페이스는 하나의 프로젝트 단위라고 생각하시면 됩니다. 테라폼은 코드를 관리할 때 변경 상태에 대한 추적이 가능합니다. 이것을 추적하기 위한 목적으로 state를 관리하게 되는데 . terraform.tfstate라는 파일이 이 있습니다. 이 파일은 workspace 단위로 생성이 됩니다. workspace가 상태를 관리하는 단위라고 생각하시면 좋겠습니다. 먼저 workspace로 사용할 디렉터리를 만들어봅시다. mkdir 명령어를 통하여 폴더를 만들어 줍시다. 단일 파일로 관리할 때 main.tf라는 이름으로 관리를 합니다. 각자의 선호도에 맞게 intellij IDE OR Vscode OR 터미널(vim..