서버/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. 이전 1 2 3 4 5 다음