![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bzEOP4/btsDGV8xdww/rHoO73ykFU9XOAgXZXMA70/img.png)
매번 SSM으로 접속하다가 SSH 키를 발급받아서 EC2에 접속할 일이 생겼다. 별 생각 없이 키를 발급 받고 접속을 시도 했는데 아래와 같은 에러가 발생했다. $ ssh -i key.pem ec2-user@ec2-[your-ip].[your-region].compute.amazonaws.com @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0555 for 'key.pem' are too open. It is required that your..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/AdBYw/btsDApIJXoM/GvxJ93or9ku90zvEKkPBK1/img.png)
일단 나는 API 문서화 + 공유용으로 Postman을 더 선호한다. 그런데 내가 Postman을 선호하고 잘 쓸 수 있었던 가장 큰 이유는 팀 규모가 크지 않았기 때문이라 생각한다. 팀 규모가 커지면 Postman은 상당히 비싼 툴이기 때문이다. 팀 규모가 커져서 Postman을 놓아줄 경우 대안은 여러 종류가 있지만, OpenAPI + Swagger-ui 를 많이 쓴다. 그런데 난 Swagger를 선호하지 않는다. 거기엔 이유가 몇가지 있다. 1. SpringBoot에서 쓰기엔 코드에 너무 많은 어노테이션들이 들어가서, 오히려 코드의 가독성을 망친다. 2. springdoc, springfox에 spring 버전, openapi 버전, java/kotlin 버전에 따라 사용법이 너무 달라서 잘 쓰기 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/y1Btq/btsDwBNYA2u/JcqRtHBT2NNMiwkJcEEb60/img.jpg)
이전 글들은 이 글을 쓰기위한 빌드업이 었다. 1. AWS S3와 CloudFront 연동 끝까지 가보기 2. WSL/WSL2에 Go(Golang) 설치하기 3. Go + serverless framework로 Lambda 관리하기 4. 꼭 읽어줬으면 하는 AWS Lambda@Edge의 특이 사항들 정리 개인적으로는 Lambda@Edge를 시작하기전에 4번은 꼭 훑고 갔으면 좋겠다. 1번 글의 마치며에서도 언급한 내용이지만, 이미지가 아직 CloudFront(CDN)에 등록되지 않았을 경우 첫 로딩에 문제가 발생할 수 있다. 그리고 그 문제는 이미지의 크기가 커질수록, 더 커질 것이다. 그래서 이미지의 사이즈를 작게 만드는 과정이 필요하다. (리사이징이든, 확장자 변환이든 여러가지 방법이 있다) 하지만 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dfnC4I/btsDrk8yD32/9bNTAQj1tdKxc9VrQT8IW0/img.png)
직접 인프라를 구축하고, 개발하면서 고통받았던 사항들 정리한 것이다. 공식 가이드 문서를 다 봤어도 놓칠만한게 꽤 있었을 것 같다. 1. Lambda@Edge는 Nodejs, Python으로만 사용가능하다. AWS 인프라도 정리해볼 겸, Go 사용법도 익힐 겸 Lambda@Edge를 이용해서 이미지 변환을 해보려고 했다. 이미지 변환 라이브러리를 이용해서 Go 코드를 다짜놨는데 웬걸? Go는 Lambda@Edge에 사용할 수 없었다. 함수를 만들기 전에 Lambda@Egde를 미리 만들어볼걸 그랬다. 2. 아키텍처와 리전의 제한이 있다. 리전은 us-east-1, 아키텍처는 x86_64이 고정이다. 리전 고정은 CloudFront와 동일한 리전에 위치하기 위해서 인 것 같고, 아키텍처는 클라우드 호환성 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cIZG2A/btsDqMa21Qi/LRZynPuNT15vcKs3xs0oRK/img.jpg)
앞서 이야기했지만 Go도 알아야되는 상황이 됐다. 그 이유는 Go로 개발한 Lambda가 있기 때문이다. 아무것도 몰라서 바닥부터 머리를 박아가면서 알게된것들이 많다. Go로 Lambda를 개발할 때 주의할 점이 몇가지 있다. 1. yarn이나 npm 같은 패키지매니저가 없어서 makefile을 이용해 빌드 방식을 관리한다. 2. 올해(2024년)부터는 runtime을 go 1.x보다 Amazon Linux 2를 사용하길 권장한다. 3. binary를 생성하고, Amazon Linux 2에서 사용되는 bootstrap으로 람다에 배포해야한다. 참고자료 : https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/golang-package.html 추가적으로, Go의 함수..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b7KhzO/btsDhLZieBC/j51PSZoM4TF2do0D3R8cZ1/img.png)
어째서인지 람다 몇개가 Go 언어로 만들어져 있다. Window에서도 사용할 수 있는데, 레퍼런스가 linux가 많기도하고.. 현재 람다에서 쓰는 go 코드가 makefile로 빌드하고 있어서 반강제적으로 linux에서 사용해야 했다. WSL에서 설치하려니 번거로움이 많았는데, 좋은 사이트를 발견해 정리해봤다. 1. Go의 최신 버전 체크 일반 Linux, macOS, Windows는 go에서 제공하는 릴리즈 파일을 사용해 설치하면 된다. https://go.dev/dl/ 2. Go 설치 1월 11일 설치 당시 go 1.21.5 버전이 최신 버전이었다. wget https://dl.google.com/go/go1.21.5.linux-amd64.tar.gz sudo tar -xvf go1.21.5.linu..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bFr7Lm/btsC1FdNleE/xovkixelQSE8eyx0ND8qUK/img.png)
AWS S3는 저장하는 건 저렴한데, S3에 직접 엑세스하는건 비싸고 느리다. 그래서 CDN을 이용해 캐싱을 많이하는데, AWS에서는 CloudFront 서비스를 이용해서 CDN을 사용할 수 있다. CloudFront란? Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다. CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공합니다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공됩니다. AWS에서 사용하는 기능이니 고가용성은 기..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dXEUvK/btsCUySgO2F/BdSsvtzqaDFOEs0IyljE90/img.png)
이번 프로젝트를 진행하면서, 스프링 시큐리티를 도입하기로 했다. 현재 서비스는 그래도 제법 덩치가 있어서 바로 도입이 어렵기 때문에, 작은 서비스에 먼저 적용해보자는 취지였다. 결론부터 이야기하면, 현재 서비스 구조는 스프링 시큐리티에 필요한 데이터 구조를 가지고 있지 않았다. 이 과정에서 겪은 일들과 필터체인에 JWT를 엮는 일까지가 이번 포스팅이 될 것 같다. 우선 스프링 시큐리티가 뭔지부터 정리해보자. 스프링 시큐리티란? 스프링 시큐리티 공식 사이트에선 아래와 같이 스프링 시큐리티를 소개하고 있다. Spring Security는 강력하고 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크입니다. 이는 Spring 기반 애플리케이션 보안을 위한 사실상의 표준입니다. Spring Security는 J..
- Total
- Today
- Yesterday
- S3
- GIT
- terraform
- springboot
- EKS
- serverless
- java
- lambda
- Kotlin
- 오블완
- Spring
- Elastic cloud
- openAI API
- OpenAI
- elasticsearch
- AOP
- OpenFeign
- ChatGPT
- cache
- 람다
- 티스토리챌린지
- AWS EC2
- 후쿠오카
- docker
- JWT
- Log
- 스프링부트
- MySQL
- CloudFront
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |