AWS 10

Serverless Application Model(SAM)

SAM이란 템플릿을 만들때 serverless 어플리케이션을 목적으로 작성해 나가고 이 서버리스 어플리케이션은 클라우드포메이션을 통해서 만들어지게 된다. 그냥 보면 SAM을 쓰지 않고 클라우드포메이션에서 템플릿만 변경하면 되는것 같지만 SAM은 서버리스 어플리케이션을 만들때 아주 간단한 Syntax가 사용된다. aws에 서버리스 어플리케이션으로는 Api Gayteway, Lambda, DynamoDB등이 있다. SAM은 자기만의 CLI가 존재한다. 이 cli을 사용하여 코드들을 묶어 배포용 패키지를 만든다음 S3bucket에 업로드를 하고 CloudFormation을 통해 서버리스 어플리케이션을 만든다. SAM CLI명령어를 살펴보면 sam package를 보면 template.yml을 sam규격에 맞게..

AWS 2023.01.04

"기본 인증 자격 증명 없음"으로 ECR에 대한 Docker 푸시 실패

ECR에 푸쉬하려는데 자꾸 이런 에러가 나서 찾아보니 WARNING: unable to unmarshal config file /Users/lby/.docker/config.json: invalid character '"' after top-level value The push refers to repository [845645664274.dkr.ecr.ap-northeast-2.amazonaws.com/aws-learner-ecr-repo] 047fba14c41d: Preparing 582173bab0a5: Preparing cf0181f27f85: Preparing eec7e66488bc: Preparing 32322aa20b0a: Preparing 000e628b3e71: Waiting 926ca9..

AWS 2023.01.03

ECR

DOCKERFILE은 순차적으로 적어놓은 텍스트 파일인데 도커를 빌드할때 이 파일때문에 도커 이미지가 생긴다. (참고로 이미지와 컨테이너는 다르다 이미지는 컨테이너가 없어도 존재할 수 있지만 컨테이너는 이미지가 없으면 존재할 수 없다.) 위 사진을 보면 컨테이너 이미지를 ECR에 등록을 시켜준다. 그럼 ECR은 ECS의 이미지를 참조하여 도커 컨테이너를 배포하면서 컨테이너를 돌릴 수 있게된다. CodeBuild는 내가 짠 코드를 컴파일해주고 테스트까지 돌려주고 배포에 필요한 패키지까지 만들어 준다.

AWS 2023.01.03

ECS

(Elastic Container Service) ECS의 장점은 컨테이너를 만들고 배포하는 시간이 굉장히 짧고 컨테이너의 자원관리를 알아서 해준다. 무언갈 우리가 설치할 필요 없이 ECS가 알아서 해줌 virtual machine까지 알아서 설치해준다. 그래서 우린 컨테이너 안에 무엇을 넣을지만 고민하면 된다. 하나의 어플리케이션에 여러개의 컨테이너가 존재할 수 있는데 하나하나 관리 해줘야한다는게 끔찍하겠지만 ECS가 다 해주니 굉장히 편리하다. 그리고 ECS를 통해 컨테이너를 생성하면 얘네들은 알아서 VPC를 통하여 보안적인 측면에서 철저히 관리가 되어지기 때문에 안전하다. ECS는 aws내에서 두가지 방법으로 돌릴 수 있는데 1. EC2 Instances ECS컨테이너들을 다수의 EC2 Instan..

AWS 2023.01.03

Elastic beanstalk

코드를 Elastic beanstalk에 보내면 모든것을 처리해주는데 예를 들면 ELB직접 셋업해주고 EC2 인스턴스도 만들어주고 S3Bucket도 만들어준다. DB까지 만들어준다. 클라우드 워치도 사용이 되어지는데 모니터링을하고 웹 어플리케이션에 문제가 생겼을때 처리 할 수 있기때문이다. 그리고 자체적으로 헬스 대쉬보드를 갖고 있는데 클라우드 워치에서도 볼 수없는 상세 정보들을 이 대쉬보드에서 확인 할 수 있다.(X-Ray) Elastic beanstalk는 기본적인 인프라구축을 해주기 때문에 개발자는 완전 코드에만 집중하면 된다. Elastic beanstalk 배포 방법 All At Once : 한번에 모든것을 배포 현재 EB에 의해서 EC2인스턴스들이 돌아가고 있는데 All at once방식은 현..

AWS 2023.01.03

Code Deploy Life Cycle Event Hooks

설명. ELB에서 인스턴스를 deregister하고 배포하기전 애플리케이션 종료 -> code deploy agent가 새로운 어플리케이션 버전을 찾아서 일시적으로 파일을 복사해둠 bundle란 하나의 어플리케이션을 지칭하고 이미 프로덕션에서 돌아가는것 말고 새로운것을 배포하려고 하는것 -> 배포와 관련된 파일 및 라이브러리를 설치하기 전에 행동하는걸 말하는데 예를들면 현재 버전을 백업하는거나 bundle이 암호화가 걸려있다면 암호화를 풀어야하는 과정 -> 그 다음 배포와 관련된 파일을 설치 -> 설치가 끝나고 해줄 일들 권한을 설정해준다거나 clean up같은 작업 수행 -> 처음에 중지했던 어플리케이션을 다시 시작 -> 변경된 어플리케이션이 잘 동작하는지 ValidateService를 통해 테스트 및..

AWS 2023.01.01

만든 프로젝트 aws배포

간단한 프로젝트를 만들어서 배포하려는데 처음엔 Could not find com.github.gavlyukovskiy:p6spy-spring-boot-starter:.에러가나서 디펜던시되어있는 p6spy를 지웠더니 실행이 되나 싶었는데 test오류가 자꾸 떴다.. * What went wrong: Execution failed for task ':test'. 이런 오류였다. 찾아보니 단위 테스트가 작성되지 않았는데 빌드가 되면서 난 에러라고 해서 gradle에 tasks.named('test') { useJUnitPlatform() } 이부분을 지워주고 빌드해보니 성공했다. 이렇게 하면 어플리케이션이 빌드가 되고 jar파일이 생성이 된다. 나중에 이 jar파일을 가지고 원격에 올리고 원격서버에서 그 ja..

AWS 2022.12.20

IAM

IAM은 Root에서 user를 만들어서 권한등을 부여할 수 있는데 그 중 그룹, 역할, 정책을 설정해줄수있다. 이 네가지만 살펴보자면 그룹은 하나의 그룹안에 다수의 유저가 존재할 수 있다. 역할은 하나 혹은 다수의 정책을 지정할 수있다. 그래서 유저마다 다양한 정책을 부여함으로써 다른 권한을 위임할 수 있다. 예를 들면 pull권한을 줄것인지 데이터베이스 생성 및 삭제 권한을 줄것인지. 정책은 보통 json형태의 문서를 가리키며 세밀한 접근권한을 설정하여 하나의 정책을 만들 수 있다. 따라서 다양한 정책을 만들어 다양한 접근 권한이 가능하다. 정책은 그룹, 역할에 추가 시킬수있는데 추가시키면 그룹안에 있는 모든 유저에게 영향이 간다. 마지막으로 IAM은 유니버셜하기 때문에 지역 설정이 필요가 없다.

AWS 2022.12.18

EC2

Elastic Compute Cloude 데이터 사용량이 많아지면 늘어나고 줄어들면 줄어든다. EC2는 인스턴스를 우리가 켜고 끌수가 있으며 켰을때만 돈을 지불하게 된다. 지불 방법은 On-demand : 시간 단위로 가격이 고정되어 있음(시간당 정해진 비용을 지불하며 맘편하게 사용. 개발시작시간과 개발끝시간을 모를때 사용한다. 보통 개발 초기단계에 사용.) Reserved : 한정된 EC2 용량 사용가능, 1-3년동안 시간별로 할인 적용 받을 수 있음(특정 사이즈를 미리 지정해서 사용하기 때문에 On-demand처럼 크기를 늘리거나 줄이는 기능이 없음. 대신 On-demand보다 가격이 저렴함. 개발시작시간과 개발끝시간을알때 사용 권장. 선불로 인한 컴퓨팅 비용 대폭 감소.) Spot : 입찰 가격 적..

AWS 2022.12.13