Back End
-
[AWS] EventBridge 에서 Lambda 를 Trigger 하기Back End/AWS 2022. 11. 13. 17:51
Rule 생성 EventBrdige -> Rules 에서 Rule 생성 Schedule Job 으로 이벤트를 발생시킬 것인지, Event Pattern 으로 이벤트를 발생시킬지 선택하고 생성한다. Target 은 당연히 Lambda 로 생성하면된다. Resource Based Policy Statements 추가 Add Permission 을 선택하여 Action = lambda:InvokeFunction 을 추가한다.
-
[트러블슈팅] File: can't read input file : IOException 해결방법Back End/트러블슈팅 2022. 11. 13. 16:32
파일 권한 문제일 수도 있고, 소스경로가 틀렸을 수도 있고 원인은 다양하다. 아래의 File 내부 메서드로 내가 처한 상황이 어떠한 상황인지 확인할 수 있다. File file = iWantToRead(src); file.exists(); // 존재자체는 하는지 file.canRead(); // 읽기 권한이 있는지 file.isDirectory(); // 디렉토리인지 file.getAbsolutePath(); // 읽었다면 파일의 절대경로는 어디인지
-
[AWS] CloudWatch 로그를 S3 로 보관하기 (Exporting CloudWatch logs to S3 Bucket)Back End/AWS 2022. 11. 7. 11:20
CloudWatch, S3 그리고 S3 Glacier 의 가격 CloudWatch 는 단순 저장말고도 Metrix 를 이용해 경보등의 서비스를 생성할 수 있으므로 당연히 CloudWatch Log 서비스의 가격이 S3 보다 비싸다. 또, S3 가 S3 Glacier 보다 가격이 비싸다. (액세스 속도 차이) 그렇다면 장애사후분석등 로그를 꼭 보관해야하는 상황에서는 Alarm 등의 서비스를 이용하기 위해 7일 정도로 CloudWatch 에 보관하고 CloudWatch 의 로그를 S3 로 옮겨 1~2달을 보관하고 이후에는 S3 Glacier 로 옮겨 Archive 하는 것이 비용적으로 가장 효율적일 것이다. 그런데 문제점은 CloudWatch -> S3 로 옮기는 버튼은 AWS 콘솔에 존재하지만 주기적으로 ..
-
[트러블슈팅] ELB (Elastic Beanstalk) 에 대해 알아두면 좋은 지식들 (feat. ebextensions)Back End/트러블슈팅 2022. 10. 28. 16:13
... 너무 삽질을 많이 했다. 😭 Elastic Beanstalk(ELB) 에 모니터링 알람 설정, 환경 커스터마이징 등을 소스코드레벨에서 관리 할 수 있도록 하는 작업을 진행하면서 알게된 정보를 공유하고자 한다. 특히 httpd.conf 파일이 apache 버전으로 남아있던 현상은 두고두고 기억에 남을 것 같다. ELB & .ebextensions 1. *.config 파일들은 이름의 오름차순으로 실행된다. 작업 순서가 중요한 config 들은 00_tomcat.config , 01_unzip_font.config 와 같이 네이밍하여 작성한다. 2. *.config 파일 내부에 사용되는 프로퍼티인 commands 와 container_commands 는 실행시점에서 차이가 있다. # commands ..
-
[AWS] 서비스에 WAF 적용하기Back End/AWS 2022. 10. 10. 20:58
WAF 란? WAF(Web application firewall) 는 OSI 4레벨 layer 가 아닌 7레벨 Layer 에 적용되는 방화벽이다. WAF 라는 서비스를 사용하여 OWASP’s Top 10 Web Application Vulnerabilities 에 대한 방어를 어느정도 쉽게 구축할 수 있다. AWS WAF AWS 에서 제공하는 클라우드 환경에서 어려움 없이 쉽게 적용할 수 있는 WAF 서비스이다. OWASP’s Top 10 중 CSRF 를 제외하면 WAF를 적용하는 것 하나만으로 XSS공격, SQL Injection 공격을 포함하여 모두 쉽게 차단이 가능하다. 또한 Custom Rule 을 만들어서 특정 IP 가 일정시간 내에 규칙을 초과한 요청을 보낼 경우 Black List 에 넣거나..
-
[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..