분류 전체보기
-
[Error] The bucket does not allow ACLs - 이미지업로드하기TIL 2024. 3. 19. 18:06
이미지 업로드 기능을 구현하기위해서 IAM 계정 생성 - 액세스키 발급까지 하고나면 AWS에 접속은 되나 S3접속시 다음과 같은 에러가 발생했다. The bucket does not allow ACLs 해당버킷이 ALC을 허용하지않습니다 ACL이란 버킷이나 버킷 객체에 액세스를 허용하거나 제한하는 권한설정이다 다만 Bucket Policy와의 차이점은 bucket policy는 버킷에만 권한 설정이 가능하고, ACL은 버킷뿐만아니라, 버킷객체에 권한설정이 가능하다는 것이다. 그래서 ACL은 각 객체마다 다른 권한 설정이 필요할때 사용한다. 대신 버킷정책은 JSON을 통해 더 세밀하게 권한설정을 조정할 수 있지만, ACL은 그렇지 못하다. 해당 버킷에 ACL을 활성화 해주는법) S3 - 해당 버킷 - 권한..
-
[Error] AWS-SDK, multer - this.client.send is not a functionTIL 2024. 3. 19. 17:31
이미지를 업로드하는 기능을 추가하기위해서, multer와 sdk 모듈을 사용하다보면 에러가 발생한다. TypeError: this.client.send is not a function multer-s3는 3.x.x 버전이고, aws-sdk는 2.x.x버전일때 다음과같은에러가 발생한다 multer-s3를 다운그레이드하여 2.x.x로 맞춰주면 해결된다 multer-s3 삭제 npm uninstall multer-s3 multer-s3 재설치 npm install multer-s3@2.9.0
-
[AWS] AWS Access key와 Secret Access Key - 이미지업로드 기능TIL 2024. 3. 19. 15:48
프로젝트에서 게임 대표 이미지를 저장하고 불러오는 기능이 있다. 이미지를 저장할때 AWS-S3에 저장해야하는데 프로그램 내( AWS CLI, AWS-SDK )에서 AWS의 자원에 접근하기 위해서 는 Access key와 Secret Access Key가 필요하다. aws 웹 콘솔로 로그인을 할때 계정 ID,PW를 입력하는 것과같이, 프로그램내에서 aws서비스에 접속하기위해서는 같은 역 할을 해줄 것들이 필요한데, 그것이 액세스키와 시크릿 액세스키이다. Access key(액세스키) : 유저 번호에 해당하는 키Secret Access Key : 비밀번호에 해당하는 키 IAM 계정을 이용한다면 루트계정을 이용하여 만들 수 있다 IAM - 사용자 - 계정명(k1ju) - 보안자격증명 - 액세스키 생성..
-
[GitHub]프로젝트 협업시작하기( git flow )TIL 2024. 3. 7. 15:25
깃허브로 협업 프로젝트를 시작하기 위해서는 팀장역할을 할 사람이 필요하다. 각자 역할분담 이외에도, 1명은 프로젝트에서 초기설정을 해줘야하는 부분이 있기 때문이다. 팀장은 프로젝트폴더를 만들고, 기본세팅해주고, 깃허브 레포지토리에 올려서 팀원들이 다운받을 수 있게해줘야한다. 깃허브로 협업하는 도중에, 팀원들끼리 브랜치를 다루는 방식이 다를 경우 서로 꼬일 수 있기때문에, 이러한 일을 방지하교 자 브랜치 전략으로 git flow방식을 이용하기로 했다. Git Flow 방식 협업과 버전관리의 효율성을 높이기위한 브랜치 관리 방식. master 브랜치최종적으로 배포되어 사용자들에게 전달되는 코드를 담는 브랜치 develop 브랜치개발중인 최신코드를 통합한 브랜치 feature 브랜치새로운 기능을..
-
[aws] 프라이빗IP, NAT , CIDRTIL 2024. 2. 29. 16:34
사설IP (프라이빗 IP) ㄴ사설망 내부에 구성된 외부인터넷망으로 통신이 불가능한 IP IPv4에서 IP주소가 부족한 문제를 해결하기위해 만든 개념 하나의 망에는 사설IP를 부여받은 기기들과 NAT기능을 갖춘 Gateway로 구성 외부로 통신할때는 통신가능한 공인 IP로 사용 IPv6에서는 IP주소가 거의 무한히 많기때문에 굳이 이런개념이 없다(프라이빗 IP는 IPv4에만 적용되는 개념) NAT -> 사설IP가 공용IP로 통신할 수 있도록 주소를 변환해주는 방법 -> 사설 네트워크 내의 여러개의 기기들을 하나의 공인 IP주소를 사용해서 인터넷에 접속하기위해 사용한다 3가지 종류 존재Dynamic NAT : 1개의 사설IP를 공인 IP 그룹(NAT pool)에서 사용가능한 IP를 가져와서 연결 Stati..
-
[DB] DB 모델링 - 소셜 로그인기능TIL 2024. 2. 25. 17:14
소셜 로그인 기능이 구현된 서비스에서는 db 설계를 어떻게 해야할지 고민해봤다 고민해봐야 할 점들은 다음과 같았다. 1. 소셜로그인 계정과 로컬 계정은 db에 저장할때 공통된 데이터도있고, 다른 데이터도 있다. 이를 어떻게 구분해서 관리할 것인가? ㄴ테이블 분리 vs 테이블 통합 2. 식별관계 vs 비식별 관계 3. soft delete 결과) 1. 소셜계정, 로컬계정, 사용자에 대한 테이블을 모두 분리하여 db설계를 했다. 테이블을 왜 모두 통합하지않고 분리했는가?) -> 소셜로그인 기능 도입으로, 계정의 종류에 따라 필요한 데이터 종류들이 많이 달라지게되었다. 이렇게되면, 계정마다 필요하지않은 데이터에 대한 값들은 null로 저장되어 테이블내에 null 값이 많아지게된다. 적어도 한 개의 행에서 nu..
-
[WEB] REST API 설계하기TIL 2024. 2. 24. 01:28
rest api를 만드는데에 정답은 없다. 하지만 더 직관적이게 짤수록 좋다. 남들이 봤을때 바로바로 이해될 수 있어야한다. rest ful한 api를 만드는 방법) 1. URI는 정보의 자원을 표현해야한다 GET /:accountidx/info (X) ㄴ 남들이 볼때 - /5/info ㄴ 이것만 보고는 남들이 보고 직관적으로 이해하기 어렵다 GET /account/:idx/info (O) ㄴ 남들이 볼때 - /account/5/info ㄴ남들이 볼때 5번계정의 info를 요청 하는것이라고 직관적으로 이해할 수 있다 2. 동사를 쓰지않고 명사만 쓴다 GET /account/idCheck (x) ㄴ 동사는 Method(get, put, post, delete)로만 이용한다. 그외 URI내에 동사를 쓰지않는..
-
[postgresSQL] enum 타입TIL 2024. 2. 19. 19:20
DB에서 enum type은 성별(남,녀) , 요일(월화수목금토일) 과 같이 사용자 정의 타입을 만든다고 생각하면 된다. DB에서 해당 속성을 enum type으로 지정할 경우 해당 속성은 정해진 값 내에서만 입력이 가능하다. CREATE TYPE으로 생성한다 예시) mood타입을 생성하고 이 타입에는 sad, ok, happy만 들어갈 수 있게 만들기 CREATE TYPE mood as ENUM ('sad', 'ok', 'happy'); CREATE TABLE person( name text, current_mood mood ); INSERT INTO person values ('kiju', 'happy'); SELECT * FROM person WHERE current_mood = 'happy'; 결..