Back End
-
[AWS] BeanStalk(EC2) 에 wkhtmltopdf 라이브러리 설치하기Back End/AWS 2022. 9. 25. 21:43
AWS CLI 를 통해 설치파일을 EC2 에 보내주는 방법도 있겠지만 AWS 용 wkhtmltopdf 도 있으므로 힘들이지 않고 아래와 같이 설치할 수 있다. sudo yum -y install wget wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm sudo yum install ./wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm BeanStalk 에서의 설치 커스텀 AMI 로 만들지 않는 한, 환경재구축 시 라이브러리가 휘발되므로 .ebextension 을 이용하여 설치한다. 다만, 각 환경마다 위의 커맨드가 될 수..
-
[gradle.kts] The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown versionBack End/트러블슈팅 2022. 9. 25. 20:52
코틀린에서 플러그인을 선언하자 아래와 같은 에러문구를 만나게 되었다 The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown version Gradle 은 여러버전의 플러그인을 클래스패스에 선언하는 것을 허락하지 않는다고 한다. (stackoverflow) 따라서 아래와 같이 해결하였다. Before plugins { kotlin("plugin.allopen") version "1.3.71" kotlin("plugin.noarg") version "1.3.71" } allOpen { annotation("javax.persistence.Entity") anno..
-
[Spring Data JPA] 페이징 page=1 부터 시작하기Back End/Spring Data JPA 2022. 9. 25. 20:37
Pageable 의 page Pageable 의 page 는 0 부터 시작한다. 아래의 application.yml 파일에 옵션을 추가하여 클라이언트에서 ?page=1 을 호출할 시 limit 0, {size} 쿼리가 나가도록 수정한다. spring: data: web: pageable: one-indexed-parameters: true Slice 객체의 number 필드 JPA 레파지토리에서 반환형을 Slice 로 받을 경우 반환되는 객체의 number 필드가 몇 번째 페이지를 쿼리했는지에 대한 정보를 담고 있다. 위의 yml 파일을 수정해주어도 해당 number 필드는 0부터 시작하고 있다. 이를 따로 Custom Response 를 만들어 반환해주어야 한다. (클라이언트가 원할 시) data cl..
-
[AWS] Lambda 에서 Lambda 를 호출하기 (Feat. JavaScript, Python)Back End/AWS 2022. 9. 17. 17:53
AWS IAM 활동을 모니터링하고 알람을 보내는 어플리케이션을 구축할 일이 있었다. 기존에 Application 이상 지표들을 바탕으로 알람을 보내는 어플리케이션이 있어서 기존 프로젝트 뼈대 위에 작업을 해야 했었다. 기존 프로젝트의 serverless.yml 은 일본리젼에 일괄 배포하고 있었다. AWS IAM 은 CloudTrail 이 버지니아에서 추적하고 있기에 CloudWatch 와 Lambda 모두 버지니아 지역에 있어야 했다. SNS 는 타지역의 Lambda 도 호출할 수 있기에 버지니아에서 payload 를 by-pass 하는 Lambda 를 만들어 일본리젼의 Lambda 로 넘겨주었다. 2번의 ColdStart 와 과금문제가 있긴했지만 동작이 되는지 안되는지 확인을 하기 위해 잠시 위와 같은..
-
[AWS] Serverless 함수 리젼별로 배포하기Back End/AWS 2022. 9. 17. 17:50
작업을 하다가 Lambda 를 Region 별로 배포를 해야 할 일이 생겼다. 레파지토리를 나누기엔 같은 서비스 도메인이라 아닌 것 같고, 레파지토리 내에서 폴더구조를 리젼별로 나누어 serverless.yml 을 중복으로 생성하고 공통모듈을 추출하는 것도 같은 서비스인데 좀 아닌 것 같고.... 좋은 플러그인이 없을까 찾아보다가 찾아버렸다! (사실 찾는데 시간이 좀 걸렸다... If Else 플러그인은 또 뭐람...) 바로바로 Serverless Plugin Conditional Functions...! 사용법은 공식문서에 잘 나와있으니 잘 읽어보자!!! Reference Serverless Framework: Plugins The Serverless Framework Plugin Registry. S..
-
[AWS] Java 프로젝트에서 .ebextensions 사용하기Back End/AWS 2022. 9. 17. 17:09
Overview 필자가 삽질하며 .ebextensions 를 활용하여 AWS Beanstalk 을 설정하는 법을 정리한 글입니다. 언제 써야 할까? 한 번 세팅하고 계속 유지되어야 하는 설정들은 AMI 로 만들어 Beanstalk 에서 사용하면 되지만 변경이 자주 발생하거나 어플리케이션이 deploy 되기전에 적용되어야 하는 환경 설정들은 ebextension 을 사용하여 적용하면 좋다. 어플리케이션에 ebextension 으로 작성하고 그 이후에 실행하지 않게 끔 해놓은 어플리케이션도 있는데, 기록을 남겨둠으로써 해당 작업을 어떻게 처리하였는지 IDE 수준에서 빠르게 확인할 수 있고 문서화하지 않아도 되어 경제적이다. 다만, 그런 파일들은 .ebextension-deprecated 와 같이 네이밍을 다..
-
[트러블슈팅] Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64 Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64Back End/트러블슈팅 2022. 9. 17. 16:56
Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64 Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64 yum install -y mod_security 를 입력하고 마주한 에러메세지이다. Apache 2.4.x 를 사용하고 있는 경우인데 2.2버전 mod_security 를 설치하려고 해서 충돌이 일어난다고 하는 말이다. 아래와 같이 버전을 명시하여 같은 버전을 설치하면 된다. yum install -y mod24_security
-
[보안] 웹서버 정보 감추기 - AWS Beanstalk 에서 Server Version Disclosure (Feat. .ebextension & .platform)Back End/보안 2022. 9. 17. 16:28
이 포스팅은 Apache 를 Proxy 로 사용하는 Beanstalk 환경에 대해서만 예시가 있습니다. 하지만 읽어보신다면 개념은 같기 때문에 Nginx 를 사용하는 경우도 동일한 접근법으로 접근하시면 됩니다 :D! * Tomcat 자체에서 발생하는 에러로 인한 서버스택 노출을 가리는 것은 추후에 포스팅하겠습니다. Response 의 Server Header Pen Test 결과, 아래와 같이 Response Header 에 서버 정보가 노출됨을 막아야 한다는 보고가 있었다. 서버정보가 포함되어있으면 해커들이 작업하기가 쉽다고 한다. 보통 Tomcat 의 server.xml 을 변경하는 방법이 널리 알려져있는데, 직접 생성한 EC2 에는 먹힐 수 있으나 AWS Elastic Beanstalk 은 Tomc..