AWS (33) 썸네일형 리스트형 AWS CloudFront reload error 1. 기본 작동 원리 request를 보내면 cloudFront에서 S3에 접근하고 바로 api server에 request를 보낸다. 그래서 브라우저는 캐싱되지 않은 데이터, json 데이터나 해당 하는 페이지에서 필요한 데이터만 가져오면 된다. 이렇게 cloudFront에 캐싱된 static data에서 api 서버에 따로 요청이 된다면 요청된 해당 데이터만 가져오게 된다. 2. 문제점 reload 시 해당 url path를 cloudFront에서 인식하지 못해서 S3로 요청이 간다. public이 아니니 당연히 permission denied 에러 발생. if you reload the page, http://mywebsite.com/stats will be sent to S3 as your bro.. S3 정적 파일 업로드 + CloudFront + Route 53 연동 Intro. S3에 프론트 정적 파일을 업로드하고 정적 웹 사이트 호스팅을 설정만 하면 바로 정적 페이지로 사용할 수 있다. 그럼에도 CloudFront를 사용하는 이유는 성능 이슈가 가장 크다. CloudFront는 CDN(Content Delivery Network)으로 지리적으로 분산시켜 놓은 서버에서 데이터를 캐싱하여 짧은 대기 시간과 빠른 전송 속도로 콘텐츠를 전송하는 서비스다. 0. 전체 구조 end user가 request를 cloudFront에 보내고 cloudFront는 캐싱된 데이터가 있다면 S3에 접근하지 않고 reponse를 리턴한다. 하지만 캐싱된 데이터가 없다면, S3에 요청을 보내 response를 받고 해당 response를 end user에게 리턴해준다. 이 과정에서 서버 .. IAM 계정 설정 Intro. root 계정은 아예 사용을 안 하는 것이 안전하다. IAM user를 생성해서 권한을 제한해 사용하는 것이 일반적인 방법이다. 이러한 방법에 대해 알아보겠다. 1. IAM 구조 이렇게 그룹으로 큰 카테고리를 나누고 해당하는 그룹의 권한을 설정하고 해당 그룹 내부에 IAM user를 생성한다. 만약 해당 그룹 권한보다 더 높은 권한이 필요하다면, 개개인에게 조금 다른 권한을 줄 수도 있다. 보통 그룹은 대문자와 복수형으로 만들고, 하위 IAM user는 소문자로 만든다. 2. Admins Group 루트 계정 봉인 전에 어드민 작업을 위해 새 계정을 생성한다. 어드민에 적합한 권한을 부여 보통의 경우 AdministratorAccess 정책 부여 3. Developers Group 보통의 경.. [Github Action] Application Load Balancer 상태 확인이 실패하는 문제를 수정 및 해결 방법(추가 배치를 사용한 롤링) Intro. 결론부터 이야기하면 해당 문제점은 에러가 아니고 정상적인 상황이다. EB 환경에서 상태 간 전환이 발생할 때 확장 상태 시스템은 이벤트를 생성한다. 1. 문제점 헬스 체크하는 과정에서 ELB가 헬시 하지 않다는 내용이다. 왜 이런 문제가 발생할까? 2. 상태파악 배포 방식을 "추가 배치를 사용한 롤링"을 선택한다면, 이 WARN은 에러가 아니다. 인스턴스가 새롭게 추가되고 기존 인스턴스가 종료되는 과정에서 뜨는 경고 메세지인 것이다. 그래서 이러한 과정을 거치면 아주 정상적으로 서비스가 잘 운영이 된다. 3. 진짜 문제점 github action으로 CI/CD를 EB에서 처리하는 경우 github action이 이러한 상태 변화가 몇 십초 or 몇 분 지속되었을 경우를 에러로 인식하는 것이 .. .ebextensions + private S3 버킷 접근 설정 Intro. s3에 있는 파일을 eb instance에 넣고 싶을 때 설정하는 방법이다. AWS 보안의 핵심은 IAM user에 있다. IAM으로 접근 권한을 설정해서 특정 서비스만 접근하도록 설정할 수가 있다. 여기에서 사용할 내용은 s3, .ebextensions, iam user이다. 1. .ebextensions Resources: AWSEBAutoScalingGroup: Metadata: AWS::CloudFormation::Authentication: S3Auth: type: "s3" buckets: ["example"] roleName: "Fn::GetOptionSetting": Namespace: "aws:autoscaling:launchconfiguration" OptionName: "I.. [CI/CD] Github Action for a test Intro. github action을 계속 실행하면서 test 해 볼 수는 없다. 그래서 workflow를 테스트 해볼 수 있는 tool을 사용하는 것이 좋다. 사실 테스트 tool을 사용한다고 해도 완벽하게 테스트해볼 수는 없지만 그래도 문법 오류 등 대부분의 오류는 해결할 수 있으므로 먼저 test 후에 action을 실행해보길 바란다. 1. test tool 설치 brew install act 2. workflow 확인 1) act -l workflow 리스트를 볼 수 있다. 2) act workflow_dispatch -l workflow_dispatch 옵션을 주는 경우 이 옵션을 붙여서 리스트를 확인한다. 3) act -j job_id --container-architecture linux/.. [CI/CD] Github Prod Repo + Github Action + ECR tag + Dockerrun.aws.json 설정 Intro. github repo를 repo-dev와 repo-prod로 나누어서 관리하는 것이 좋다. dev에서는 이미지 빌드를 한 후 ecr에 push 한 후 dev-eb 배포를 한다. 그 후 prod에서 이미지를 pull 받아 prod 환경에 배포한다. 1. prod 배포 상황 dev에 배포가 되었고 image가 ecr에 올려져 있다. prod에서는 이 이미지를 pull만 받으면 되는 상황 2. deploy.yaml name: main-prod deploy on: workflow_dispatch: inputs: image-tag: description: 'image tag name' required: true type: string jobs: build_deploy: runs-on: ubuntu-l.. [CI/CD] Github Dev Repo + Github Action + ECR tag + Dockerrun.aws.json 자동 할당 설정 이번 시간에는 Github action으로 ECR에 push할 때, unique한 tag를 자동으로 설정하는 방법에 대해 알아보겠다. 1. AWS ECR 공식 문서 tags are not automatically assigned to your resources 태그는 자동 할당이 안 되고 직접 입력해야 된다고 나와있다. 2. Github Action + ECR 공식문서 tag 추천 방법 1) github.sha 워크플로우를 트리거한 git commit의 해쉬값 즉, 이 값으로 접근하면 항상 git head 값이 접근을 한다. 3. deploy.yaml jobs: build_deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/check.. 이전 1 2 3 4 5 다음