본문 바로가기

전체 글136

AWS CDK 개발 중 AccountLimitExceededException 오류 발생 👾 개요 열심히 기존에 운영하던 CodePipeline을 CDK로 옮기는 작업 중 아래와 같은 에러가 발생했다. Error calling startBuild: Cannot have more than 0 builds in queue for the account (Service: AWSCodeBuild; Status Code: 400; Error Code: AccountLimitExceededException; Request ID: f0eca668-cd8e-4a4a-8a93-ed28f2e24305; Proxy: null) 위 사항이 발생하기까지 아래와 같은 환경을 가지고 있었다. 최근에 CDK를 통해서 CodePipeline을 소스로 전환 중에 있음. 최근에 CodePipeline 실행 수가 많음. 🚦 원인.. 2021. 6. 17.
[Git] merge와 rebase - (1) 주요 개념 및 예시 목차 목차 🤓 개요 🥶 중요 개념: Fast-Forward 관계란? 🥸 merge와 rebase의 기본 개념 및 차이 😇 merge, rebase 사용 케이스 1. Fast-Forward 관계에서 merge 2. Fast-Forward 관계에서 rebase 3. Fast-Forward 관계가 아닐때 merge 4. Fast-Forward 관계가 아닐때 rebase 5. Fast-Forward 관계에서 merge (with merge message) 🤔 정리하자면… 🤓 개요 사전적으로 "merge는 합치다", "rebase는 재배치하다" 라는 뜻을 가지고 있습니다. 영어로는 쉽지만 git을 이용할 때 헷갈리는 경우가 있죠 이번 포스팅에서는 merge와 rebase의 차이를 알아보고 각 케이스별로 예시를 알.. 2021. 6. 16.
AWS CDK로 CodePipeline 생성 시 is not authorized to perform AssumeRole on role 오류 해결 🤡 사전 조건, 배경 및 목표 CodePipeline에서 통합하여 사용할 IAM Role은 이미 생성되어 있음 공용 Artifact Store로 사용할 S3 버킷 생성되어 있음 위에서 미리 만들어진 Role 및 S3 Bucket을 사용하여 Code Pipeline을 CDK로 생성 소스는 TypeScript로 작성되었습니다. 소스 상의 ARN은 임의로 만든 값입니다. (공개할수는 없잖아요!) 👹 소스코드 설명 1. IAM Role ARN으로 불러오기 import * as iam from "@aws-cdk/aws-iam"; const CODEPIPELINE_ROLE_ARN = "arn:aws:iam::000000000000:role/service-role/AWSCodePipelineServiceRole"; .. 2021. 6. 14.
AWS CodeBuild 역할 수정 시 에러 (The policy was not attached to role) 🌅 배경 CodeBuild 서비스에서 빌드 프로젝트를 생성할 때 IAM Role을 임의로 지정해주지 않으면 새롭게 생성합니다. 따라서 임의로 지정해주지 않으면 아래와 같이 codebuild-{빌드 프로젝트 명} 형식의 IAM Role이 무수히 생성됩니다. 나중에 관리하기도 힘들고… 정책추가할 때 마다 하나하나씩 들어가서 직접 정책을 추가해줘야하는 번거로움이 있다. 이러한 이유로 하나의 IAM Role로 통합하기로 하였다!! 🚦 문제 기존에 있던 CodeBuild 프로젝트의 서비스 역할을 수정하려고 하니 아래와 같이 에러 메세지가 발생하였다… The policy was not attached to role {IAM Role 이름} 🤔 분석 CodeBuild에서는 편리하게도 IAM Role을 연결해주면 Co.. 2021. 6. 14.
AWS ELB에 https 적용하기 💁🏼‍♂️ 사전 조건 도메인 구입 인증서 발급 현 회사에서 이미 사용중인 도메인 & 인증서가 있어서 구매 및 발급 과정은 생략합니다. 참고: AWS route53에서 도메인 구입 가능합니다. 참고: AWS ACM에서 구입한 도메인의 SSL 인증서 발급이 가능합니다. 🎃 ELB에 https 리스너 추가 EC2 콘솔 ➡ 로드밸런서 ➡ https 적용할 대상 선택 ➡ 리스터 탭 클릭 ➡ 리스너 추가 프로토콜 HTTPS 선택 및 포트 입력 전달 대상 선택 (대상 그룹을 선택합니다.) 보안 정책 및 인증서 선택 👾 http로 접속 시 https로 리다이렉트 시키기 EC2 콘솔 ➡ 로드밸런서 ➡ https 적용할 대상 선택 ➡ 리스터 탭 클릭 ➡ 기종의 http 리스너 제거 리스너 추가 프로토콜 HTTP 선택 및 .. 2021. 6. 10.
yarn-deduplicate로 번들 사이즈 줄이기 이번에 토스 컨퍼런스에서 발표한 이한님의 'Bundle Diet' 영상을 보고 일부를 적용해 보기로 하였다. 그 중 제일 빠르게 적용 가능한 yarn-deduplicate를 사용하여 bundle 사이즈의 크기를 줄여보려고 한다. ⚽️ yarn-deduplicate 설치 npm install -g yarn-deduplicate # 또는 yarn global add yarn-deduplicate 🏀 yarn-deduplicate 적용 명령어 cd 프로젝트_경로 yarn-deduplicate yarn.lock ⚾️ 적용 전 후 번들 사이즈 비교 [ 적용 전 ] [ 적용 후 ] 🥎 결론 및 간략한 분석 내용 청크 파일에서 미비하지만 4kb의 이득을 얻었다 😅 yarn-deduplicate 적용 명령어를 수행한 .. 2021. 6. 9.
Recoil SelectorFamily의 파라미터 사용 중 인덱스 시그니처 오류 발생 (with TypeScript) 🥲 문제 발생 코드 interface ListParam { page?: number; pageSize?: number; orderBy?: "DESC" | "ASC"; sortBy?: string; total?: boolean; } type Param = ListParam; export const listQuery = selectorFamily({ key: "listQuery", get: (param) => async () => { const { data } = await getList(param); return data; }, }); Data는 API 요청 후 반환되는 데이터 타입입니다. Param은 Recoil의 파라미터에 들어갈 타입 입니다. getList 함수는 api를 호출하는 함수 입니다. 🤨 .. 2021. 6. 9.
Recoil로 파라미터가 포함된 비동기 데이터 쿼리호출 (with TypeScript) 개요 Recoil로 비동기 데이터 쿼리를 호출 할 때 파라미터 유무에 따른 예제를 공유합니다. 전체적으로 코드에서 import 는 제외 하였습니다 🎃 파라미터가 필요 없는 경우 recoil의 selector를 이용해서 아래와 같이 비동기 데이터 쿼리를 호출 할 수 있습니다. 💁🏼‍♂️ 코드 예제 interface Data { data1: string; data2: number; data3: boolean; } type Response = AxiosResponse; const getData = (): Promise => axios.get('example.com/data'); const asyncDataQuery = selector({ key: 'asyncDataQuery', get: async () => .. 2021. 6. 2.
Recoil의 설치 및 기본 개념 🥸 Recoil은 왜 개발 했을까? 호환성 & 단순함 측면을 봤을때는 다른 상태 관리 라이브러리 보다 React 자체에서 제공해주는 상태 관리 기능을 사용하는 것이 좋습니다. (useState 라던지…) 하지만 React도 한계가 있습니다. (미친듯이 거대한 상태 트리라던가… 미친 랜더링을 야기할 수 있다… 무서웡…) 그럼 어떤 장점이 있을까? Native하다! (동시성 모드 같은 새로운 React 기능들과 호환 가능!… 내가 동시성 모드를 잘모른다는건 함정;;) 사용하는데 간편하다 (hooks 사용자라면 더더욱!) ⚙️ 설치/세팅 방법 1. 설치 잘쓰는게 어렵지! 설치 방법은 쉽다! 🥲 당연히 프로젝트 Root 디렉토리로 이동한 후 아래 명령어를 실행해준다 Recoil은 계속 개발 중입니다! night.. 2021. 5. 25.
왜 커밋해도 나의 Github contribution 그래프는 제자리일까? 😭 커밋을 잃어버린 스토리최근에 github contribution 그래프를 따로 체크하지 않고 있었다가오랜만에 그래프를 확인해봤는데 텅텅 비어있었다;;;'읭!? 내 커밋들 다 어디갔어!!'원인을 찾아보니까 나의 github 계정은 minhoe1122@gmail.com 인데반년동안 커밋된 Author를 확인해보니 회사 계정으로 커밋되고 있었다;;커밋 하나하나를 건들여야하나 했지만 해결 방법을 찾았다 🥲지금부터 잃어버린 나의 커밋을 찾아보겠다!!!!🤗 그래프가 채워지는 조건은?!github 계정에 등록된 이메일 주소와 같아야한다.Fork된 Repository는 PR 후 Merge 되어야 그래프가 채워진다.Default, gh-pages 브랜치에 적용된 커밋만 해당한다.🤩.. 2021. 5. 17.
암호화 방법 간략 정리 그냥 가끔 살짝 헷갈릴때 보려고 암호화 방법에 대하여 간략하게 정리했다. 🥲 맨날 헷갈리냐… 이런 나쁜 머리 🔒 단방향 암호 암호화 가능 복호화 불가능 해시를 이용 SHA 알고리즘이 있음 SHA1, SHA2, MD5 알고리즘 사용하지 말자 (보안 취약성 발견) SHA3(SHA512)을 사용하자 🔑 대칭형 암호 암호화 키와 복호화 키가 같음 대표적으로 DES, AES가 있다 🛠 비 대칭형 암호 공개키 암호화라고도 한다 암호화키와 복호화 키가 다르다 암호화키는 공개키라고 한다 복호화키는 개인키라고 한다 RSA 암호화가 대표적이다 나무위키 참고 2021. 5. 13.
AWS CodeBuild spec yml에서 조건문 사용 방법 조건에 따라서 태그 이름을 다르게 하고 싶었다. 일반적인 Bash Shell의 조건문을 사용하였고 실패하고 성공한 케이스를 썼다. (참고로 나는 version 0.2를 사용하였다.) (몇시간 삽질했네;) 실패 케이스 코드 version: 0.2 phases: build: commands: - | if [ ${CLUSTER_SERVICE} -eq "1" ]; then export TAG_NAME=${SERVICE}-${MAJOR}.${MINOR}.${PATCH} else export TAG_NAME=${MAJOR}.${MINOR}.${PATCH} fi AWS Codebuild 실행 결과 [Container] 2021/05/10 13:06:11 Running command if [[ "${CLUSTER_SE.. 2021. 5. 11.