DevOpsRoadmap 썸네일형 리스트형 [AWS]no identity-based policy allows the ecs:RegisterTaskDefinition action 에러 나는 GitHub Action을 이용하여 이미지를 빌드하고 ECR로 푸쉬하여 Task Definition을 생성하고 ECS로 배포하는 과정을 자동화하고자 한다. AWS에서 클러스터와 작업정의를 구성하고 GitHub Action에서 만들어진 workflow인 Deploy to ECS를 configure해서 사용중이었다. 그러던 중 다음과 같은 에러를 만났다. 무서운 권한에러이다. Error: Failed to register task definition in ECS: User: arn:aws:iam::***:user/mason is not authorized to perform: ecs:RegisterTaskDefinition on resource: * because no identity-based pol.. 더보기 [AWS]Unable to access the artifact with Amazon S3 object key에러 나는 위 아키텍쳐에 따라 배포 자동화를 목표로 프로젝트를 진행 중이었다. 만들어진 애플리케이션을 GitHub Action을 통해 Docker 이미지로 빌드하고 ECR의 프라이빗 레포지토리에 푸시하는 과정 자동화는 성공했다. 이제 ECR의 최신 latest이미지를 가져와서 CodePipeline을 사용하여 자동으로 ECS에 올려 Fargate Task로 배포할 수 있게 작업 중이었다. CodePipeline 과정을 설정하는 것에서 가장 중요한 것은 source 단계(ECR)에서 imageDetail.json으로 출력된 아티팩트를 imageDefinition.json으로 변환하는 것이었다. 아마도 ECS를 잘 실행하기 위해서는 작업 정의가 필요한데, 원하는 형태가 있는 모양이다. 그래서 나는 아래와 같이 b.. 더보기 [배포자동화]배포의 종류와 차이점 배포란 릴리즈된 애플리케이션을 사용자가 사용할 수 있는 상태로 만드는 것이다. AWS의 Codebuild, Codedeploy, Codepipeline을 사용하여 s3에 정적 호스팅을 해보았고, node.js로 작성한 서버 애플리케이션을 ec2에서 자동으로 배포하는 실습을 진행하였다. 현업에서 무중단으로 배포하는 방식으로 3가지가 있다고 한다. 무엇인지 알아보자! 블루/그린 배포 정의 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델이다. 이때 두 버전 모두 프로덕션 환경에서 실행 상태를 유지한다. 필요한 이유? 무중단 배포와 지속적인 전달로 사용자 경험을 향상하기 위해, 다운 타임(시스템을 이용할 수 없.. 더보기 [CI]지속적통합 지속적 통합이란? 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 데브옵스 소프트웨어 개발 방식이다. 이 과정에서 CI 도구를 통한 자동화 구성요소와 개발자들이 빈번하게 병합하도록 학습하는 것과 같은 문화적 구성요소 모두를 포함하는 개념이다. 지속적 통합 과정에서 반드시 자동화가 이뤄져야 하는 부분은? Best Practices를 참고하여 어떤 부분에서 자동화를 하는지 알아보고, 반드시 필요한 부분을 생각해보자. 1. Test-Driven Development 실제 코드를 짜기 전에, 테스트 파일을 만드는 것에 집중하는 개발 방식을 말한다. 테스트 자동화를 수행하려면, 테스트 파일을 잘 작성하는 것이 중요하다. 테스트 파일은 코드가 원하는 기능을 할.. 더보기 [CI/CD]CI도구 세가지를 살펴보자! CI/CD 파이프라인과 CI 도구 CI/CD는 지속적 통합과 지속적 배포의 과정을 하나의 파이프라인으로 연결한 것을 말한다. CI 과정은 다음과 같다. 코드 저장소는 통상 Github를 사용하고, 빌드와 테스트 과정은 이때까지 내가 수동으로 수행해보았다. 그러나 DevOps가 하는 일은 이 CI 과정을 자동화하는 일이다. 빌드와 테스트를 위한 서버를 통해 결과를 확인하고 신속하게 코드를 수정하여 다음 단계인 릴리즈로 넘어가게끔 해야한다. 이 때 사용되는 것을 CI 도구라 한다. 종류가 엄청 많지만, 가장 대표적인 3가지를 비교해 보고자 한다. Jenkins Travis CI GitHub Action 실행 별도의 서버를 설치하여 사용. 호스팅되는 프로젝트를 빌드하고 테스트함. GitHub 저장소를 기반 언.. 더보기 [JSON]을 알아보자! 뭘까? JavaScript Object Notation의 줄임말로 데이터 교환을 위해 만들어진 객체 형태의 포맷이다. 데이터 교환? 수신자와 발신자가 같은 프로그램을 사용하거나 문자열처럼 범용적으로 읽을 수 있을 때 데이터 교환이 가능하다. 모든 수신자와 발신자가 같은 프로그램을 사용하길 기대하긴 힘들 것이니, JSON같이 가벼운 데이터 교환을 위한 포맷을 만들었다고 한다. 여기서 가볍다는 말은 컴퓨터가 쉽게 만들고 읽어들일 수 있다는 것이다. 사용법 JSON.stringify: Object Type -> JSON JSON.parse: JSON -> Object Type 전송가능한 string let transferableMessage = JSON.stringify(message) console.log(.. 더보기 [YAML]사용 이유와 문법 뭘까? YAML Ain't Markup Language. 말그대로 마크업언어가 아니다! 라는 재밌는 이름을 가졌다. 이는 데이터를 나타내주는 .conf와 같은 환경설정에 많이 사용된다. docker compose할 때 사용했었다! 왜 쓸까? 사람이 읽고 쓰기 쉽고, 언어 중 가장 깔끔하다. XML, JSON 파일과 비슷하게 생겼다. 나중에 배울 쿠버네티스에도 사용한단다. 문법 정말 좋은 유투부 영상이 있었다. 문법이 헷갈릴때마다 봐야겠다. 더보기 [Docker]애플리케이션을 Docker compose와 AWS의 ECS/ECR을 통해 배포해보자! 일단 공식문서를 보고 따라해보자! 이전에 했던 애플리케이션을 이용해보자! app.js 수정 - const port = 80 + const port = 3333 //3333번 포트 노출로 변경 script.js 수정 - fetch('http://localhost:3333/') + fetch(`http://${location.hostname}:3333/`) docker-compose.yml 수정 version: "3.0" services: frontend: build: frontend image: /frontend:1.0 ports: - target: 80 published: 80 x-aws-protocol: http depends_on: - backend backend: build: backend imag.. 더보기 이전 1 ··· 5 6 7 8 9 10 11 12 다음