- Clouformation 템플릿 파일 저장용 S3 버킷을 생성합니다.
- TSL/SSL 인증서를 위한(CloudFront) ACM(us-east-1) 인증서 생성(또는 dns.yml 활용)
- 루트 도메인이 외부 도메인 관리 기관에 있을 경우 NS 레코드 등록
- 루트 도메인에 NS 레코드 등록 시 실시간 대응이 안될 경우 AWS Hosted Zone을 미리 생성하여 NS 레코드 복사 후 리소스 삭제(재 생성 시 동일한 NS 유지)
- Github 개발자 설정 > Personal Token 발행 후 AWS Secret Manager에 등록
- CI/CD를 위한 웹사이트 Github repository API Github repository 생성(Base 코드)
- AWS Chatbot 콘솔에서 Slack으로 초기 권한 부여 흐름을 수행한 다음 콘솔에서 작업 공간 ID를 복사합니다. 자세한 내용은 AWS Chatbot 사용 설명서의 "Slack으로 AWS Chatbot 설정"의 1-4단계를 참조하십시오.
- API용 Docker 이미지 생성 후 Docker Image 주소(ECR, DockerHub) 복사(없을 경우 생성 필요)
- AWS Console > us-east-1 > CloudFormation > 스택생성 > dns.yml 업로드
- Route53 > 생성된 Hosted Zone 선택 > NS 레코드 복사(4개)
- 외부 도메인 관리 시스템 접속 후 Web, API를 위한 서브 도메인용 NS 레코드 붙여넣기
- AWS Console > us-east-1 > ACM > 인증서 검증(DNS)이 정상적으로 확인되었는지 체크합니다.
- AWS Console > ap-northeast-2 > ECR > Repository 생성 > '이름' 지정
- Command Line에서 Docker 최초 이미지 생성 후 Push
- AWS Console > ap-northeast-2 > ECR > Repositories > Image > 업로드된 Image 주소 복사
//SSO Login > Profile 생성
$ aws configure sso
$ aws ecr get-login-password --region ap-northeast-2 --profile '프로파일' | docker login --username AWS --password-stdin [AWS_ACCOUNT_ID].dkr.ecr.[AWS_REGION].amazonaws.com
$ cd [Working directory]
$ docker build -t "ECR 리포 이름" .
//Tag docker image
$ docker tag [ECR 리포 이름]:latest [AWS_ACCOUNT_ID].dkr.ecr.[AWS_REGION].amazonaws.com/[ECR 리포 이름]:latest
//Push image
$ docker push [AWS_ACCOUNT_ID].dkr.ecr.[AWS_REGION].amazonaws.com/[ECR 리포 이름]:latest
- AWS Console > S3 > CloudFormation 작업용 버킷을 생성합니다.(리전 확인)
- main.yml 파일을 제외하고 모든 yml 파일을 1번에서 생성한 버킷에 업로드합니다.
- AWS Console > CloudFormation 에서 Stack 생성을 누르고 main.yml 파일을 선택합니다.
- cfn 템플릿 변수에 값을 입력하고 생성합니다.
- 다음을 선택하고 필요한 경우 태그를 제공합니다.
- 다음을 선택하고 스택 세부 정보를 검토합니다.
- 이 템플릿은 IAM 역할 및 정책을 생성하므로 승인 확인란을 선택합니다.
- 스택 생성을 선택합니다.
- 스택을 열고 리소스 탭으로 이동하여 리소스 생성 상태를 추적합니다.
- RDS 자동 기동 및 중지를 위해 auto-start-stop-rds.yml 스택을 생성
- RDS의 Tag 설정
- Restricting access to an Amazon S3 origin
- Automate Building a Unique Domain Hosting Environment with AWS CloudFormation
- Retrieve StackName from nested Stacks in AWS CloudFormation
- CloudFront 캐시 무효화
- S3 에 static file을 배포하는 방법이 두 가지가 있음
- Bulild 과정에서 S3 버킷과 Sync하는 방법: 기존 배포 과정에서 Build 과정이 필요한 경우 쉽고 빠르게 전달 가능
- CodePipeline에서 직접 S3 버킷을 타겟으로 배포하는 방법(압축 전송 및 해제): Build 과정이 없는 경우 별도 배포 단계 진행
- CodeBuild로 배포하기
- CodeDeploy로 배포하기