본문 바로가기

서버/AWS19

[AWS]19. DynamoDB TTL과 CloudWatch Event 비교 (feat, 타임어택) 프로젝트 제작 중 타임 어택 기능을 만들어야 하는 부분이 있었는데 시간이 모두 소요되면 사용자에게 디스코드 봇을 통한 알림을 보내게끔 해야 하는 기능이다. 처음에 가장 먼저 떠오른것은 DynamoDB의 TTL 기능을 사용해 보는 것이었다.TTL은 특정 컬럼에 대해 항목별 타임스탬프를 정의하여 항목이 더 이상 필요하지 않은 시점을 결정할 수 있다. 보통은 사용자 세션에 대해 서버에서 관리할 경우 많이 사용하는 기능인데 Stream 기능을 통해 간단히 구현해 볼 수 있을 것 같아서 사용하게 되었다. 원리는 대충 이렇다.클라이언트에서 타임 어택 폼을 띄우고 시간이 모두 소요됐을 시 API URL을 통해 Lambda 함수 호출(여기에서는 사용자 이름, TTL(TTL), value 컬럼에 각각 데이터를 집어넣는 .. 2024. 8. 4.
[AWS]18. Lambda 프록시 통합과 비프록시 통합의 간단한 차이점 프로젝트를 진행하던 중 PHP 클라이언트에서 API Gateway URL(POST)로 데이터를 전송해야 하는 작업을 하고 있었는데 계속 오류가 반환되어 몇 시간 동안 헤매었었다. 오류라고 하기도 좀 그런 게 코드 자체는 정상적으로 돌아가지만 DynamoDB에 데이터가 저장되면 값이 None, null 형식으로 저장되는 것이다. 그래서 항상 그렇듯이 무조건 데이터 형 변환 또는 인코딩 등에 대한 문제로 파악이 되어 여러 뻘짓을 몇 시간 동안 했었다. response = table.put_item( Item={ 'idx': body['idx'], ------------------> str( body['idx'] ), 'score': body['score'] } ) 저런 식으로 문자열로 바꿔보기도 하고 뭐 이.. 2024. 3. 29.
[AWS]17. 웹 Serverless Architecture 구성 목차 DynamoDB 생성 Lambda 함수 생성 DynamoDB Stream 이벤트 트리거 추가 API Gateway 생성 결과 확인 및 원리 * SNS 솔루션 등 구체적인 생성 방법이나 IAM 권한 정책 할당은 생략함 1. DynamoDB 생성 파티션 키 타입은 테이블 목적에 따라서 설정하면 된다. (다른 구체적인 설정이 필요하면 클래스 선택(standard, standard-IA) 하면 됨) 이후에 이제 DynamoDB Stream을 생성해야 하는데 먼저 Lambda 함수를 생성해줘야 한다. 2. Lambda 함수 생성 import json from decimal import Decimal import boto3 REGION = 'ap-northeast-2' dynamodb = boto3.resou.. 2024. 3. 19.
[AWS]16. S3 업로드 이벤트 트리거 Lambda 함수로 SNS 필터 [AWS]15. OwnCloud와 S3 연동 (feat. SNS Topic) 필요하다고 느낀 점: 프로젝트를 진행할 때 서로 작업했던 내용을 합치면서 진행해야 하는데 직접 만나서 하지 못하는 경우에는 단톡방에서 파일을 첨부했다는 메시지를 계속 보내면서 작업해 jamong1014.tistory.com S3 업로드 이벤트 발생 시 SNS 솔루션을 통해 업로드 로그 기록을 받을 수 있었다. 하지만 가독성이 너무 안좋아 필요한 정보만 뽑아서 보기 위해서는 Lambda 함수를 통해 필요한 부분만 필터링하는 것과 SNS를 보내는 코드를 작성하고 이벤트 트리거로 S3 버킷을 연동해줘야 한다. SNS 프로토콜은 SMS가 지원되는 리전으로 바꾸어서 진행하였다. 목차 Lambda 함수 정책 생성 Lambda 생성 이벤트 .. 2024. 3. 13.
[AWS]15. OwnCloud와 S3 연동 (feat. SNS Topic) 필요하다고 느낀 점:프로젝트를 진행할 때 서로 작업했던 내용을 합치면서 진행해야 하는데 직접 만나서 하지 못하는 경우에는 단톡방에서 파일을 첨부했다는 메시지를 계속 보내면서 작업해야 하는데 이것이 은근 번거롭다 생각하여 구축한 솔루션 프로젝트 작업 클라우드는 S3 스토리지를 확장하여 OwnCloud로 제공하고 S3 파일 업로드 시 이벤트 알림을 통해 SNS 프로토콜(SMS, EMAIL, HTTP, HTTPS, SQS 등등)로 업로드 이벤트 로그를 전송할 수 있음. 목차OwnCloud설치 및 Cloudflare 적용 (생략)IAM 사용자 정책 설정(access/secret key 발급)OwnCloud에서는 S3 외부 스토리지가 files_external 앱에 번들로 제공되지 않기 때문에 Market에서 따.. 2024. 3. 13.
[AWS]14. Cloudfront 단일 배포로 웹 서비스 구현 (Route53, ELB, Auto Scaling, S3, RDB) 원리 사용자가 Route53 DNS 접속 Cloudfront에서 생성한 캐싱서버로 라우팅 Cloudfront의 단일 배포로 정적 데이터는 S3 버킷에 동적 데이터(PHP)는 EC2를 기반한 로드밸런싱을 통해 접속 ELB에서 발생한 액세스 로그 또한 S3 버킷에 저장 가정 S3 버킷과 ELB 및 Auto Scaling Group이 구현된 상태 RDB 구축 실습 Cloudfront 배포 생성 Route53 정책 생성 및 Cloudfront 배포 원본 설정 편집(OAI 생성) Cloudfront 동작 설정 및 편집 S3 버킷 액세스 로그 설정 동작 모습 1. Cloudfront 배포 생성 사전에 구축한 ELB 영역을 선택해 주고 나머지는 그대로 냅둬도 된다. HTTP/HTTPS 어차피 ACM 인증서를 통해 R.. 2024. 1. 24.