AWS - DynamoDB GSI
·
Platform/AWS
[ GSI 개념 ]DyanmoDB는 기본키(PK) 기준으로 데이터를 조회하며 다양한 쿼리 패턴을 위해서는 추가적으로 인덱스가 필요합니다.  예를 들어 PK = user_id 로 지정했는데 age로 조회하고 싶을 경우,작은 테이블에선 조회가 가능할지 모르지만 저장된 데이터가 클 경우 에러 혹은 검색이 되지 않습니다.이럴 때 GSI나 LSI를 사용하면 데이터 복제 없이도 새로운 쿼리 경로를 생성할 수 있습니다. 아래는 DynamoDB에서 지원하는 인덱스 2가지 입니다. Global Secondary Index : 기본 키와 관계없이 다른 파키션 키와 정렬 키를 사용하는 인덱스Local Secondary Index : 기본 파키션 키는 유지하고 다른 정렬 키를 사용하는 인덱스 [ PK와 SK의 역할 ]Dyna..
AWS - DynamoDB Pagination과 Where절
·
Platform/AWS
DynamoDB Pagination 기본 개념DynamoDB는 Scan 또는 Query 작업을 수행할 때 모든 데이터를 한 번에 반환하지 않고, 페이지 단위로 나누어 데이터를 반환합니다.주요 개념Limit : 한 번의 요청에서 반환할 최대 항목 수LastEvaluatedKey 현재 페이지의 마지막 항목 (다음 페이지 조회 시 사용)ExclusiveStartKey 다음 페이지의 조회 시작점 (이전 LastEvaluatedKey 값) 전체 데이터 조회 예제따라서 일반적인 RDBMS의 "Select * From Users"와 같은 query로는 모든 데이터를 조회할 수 가 없습니다.아래는 DynamoDB에서 1만개의 데이터를 페이지네이션으로 전체 데이터를 조회하는 예제입니다.import boto3# Dynam..
AWS - REST API 설정 가이드
·
Platform/AWS
REST API 생성- API 생성 버튼 클릭 후, REST API의 구축 클릭 리소스 생성- 좌측 리소스 클릭 후, 리소스 생성 버튼 클릭- Configure as proxy resource : 프록시 리소스 사용https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html- Enable API Gateway CORS : cross-origin HTTP 요청을 제한하는 브라우저 보안 기능https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/how-to-cors.html 메소드 생성- DELETE, GET, HEAD,..
Python - AWS Athena 쿼리실행방법 PyAthena vs Boto3
·
Programming/Python
python에서 AWS Athena의 query를 활용하는데는 보편적으로 2가지 방법이 있다.하나는 pyathena 라이브러리의 connect.cursor()를 사용하는 방법이고, 다른 하나는 Boto3의 start_query_execution API를 사용하는 방법이다.  pyathena.connect 사용pyathena는 AWS Athena와의 상호작용을 단순화한 라이브러리로,SQL 쿼리 실행 및 결과 조회를 간편하게 할 수 있다.from pyathena import connectimport pandas as pd# Athena에 연결conn = connect( s3_staging_dir='s3://your-bucket/path/', # 쿼리 결과를 저장할 S3 버킷 경로 region_n..
AWS - Lambda VPC를 사용하여 고정 IP 주소 생성
·
Platform/AWS
[1] 구현 아키텍처- Lambda는 VPC의 프라이빗 서브넷에서 실행되므로 외부(인터넷)에 접근할 수 없습니다.- 따라서 NAT Gateway를 사용하여 내부서브넷과 통신을 할 수 있게 합니다.- 아래 이미지의 빨간색 부분이 고정 IP 적용을 위한 차이점입니다. 참조 : 2024.08.11 - [Platform/AWS] - AWS - 네트워트(Network) 개념 AWS - 네트워트(Network) 개념1. AWS 네트워크 다이어그램AWS에서 내부 서비스를 접근할 때, 또는 외부 인터넷을 사용할 때 다이어그램을 요약하자면 아래와 같습니다.많이 복잡하지만, 아래 다른 네트워크 개념을 보고 다시wave35.tistory.com  [2] VPC 생성- VPC 대시보드에서 우측상단의 'VPC 생성' 버튼을 눌..
AWS - Lambda Runtime 실행환경
·
Platform/AWS
Lambda 실행 환경- Lambda는 안전하고 격리된 런타임 환경을 제공하는 실행 환경에서 함수를 호출- 실행 환경은 함수를 실행하는 데 필요한 리소스를 관리- 내/외부 익스텐션(extension)을 통해 실행환경 수명주기 지원  실행환경 수명주기(Lifecycle) 3단계Init리소스로 실행 환경을 만듬함수와 모든 계층(Layer)을 로드하고 S3에서 함수의 코드를 다운로드런타임&익스텐션을 초기화, 함수의 초기화 코드(기본 핸들러 외부의 코드)를 실행 Invoke함수 핸들러를 호출, 함수의 실행 완료 시킴 ShutdownLambda 함수가 일정 기간 동안 호출을 받지 않으면 이 단계가 트리거 됨Lambda는 런타임을 종료하고 익스텐션이 완전히 중지되도록 알림을 보낸 다음 환경을 제거모든 메모리와 시스..
AWS - Lambda Warm and Cold Start
·
Platform/AWS
Cold Start(콜드 스타트)Cold Start는 AWS Lambda 함수가 처음 호출되거나 오랜 시간 동안 호출되지 않다가 다시 호출될 때 발생하는 초기화 과정입니다. 초기화 과정AWS Lambda는 함수가 실행될 때마다 내부적으로 새로운 컨테이너(Execution Environment)를 생성합니다.이 과정에는 함수의 코드 및 라이브러리를 로드하고, 런타임 환경을 초기화하며, 네트워크 설정 및 보안 그룹 등을 설정하는 시간이 필요합니다.이 초기화 단계가 다소 시간이 걸리기 때문에, 첫 호출 시 지연(latency)이 발생할 수 있습니다. 실행단계  Warm Start(웜 스타트)Warm Start는 함수가 호출될 때 이미 생성된 컨테이너가 재사용되는 경우를 말합니다.Warm Start를 조정하여 ..
AWS - Athena Tuning 가이드
·
Platform/AWS
AthenaFaceBook에서 개발한 오픈소스 인메모리 분산쿼리엔진 Presto를 사용 파티셔닝- WHERE절 사용시 파티셔닝된 컬럼사용을 우선시하여 쿼리비용 감소- 쿼리당 파티션을 100개로 제한- 파티션 수가 너무 많으면 파티션 메타데이터를 처리하는데 오버헤드가 증가해, 비용과 쿼리속도 저하- 테이블당 최대 20,000개 파티션- 파티션 수가 너무 적을 시, 참조하는 파티션이 중복되면 파티션의 이점을 살리지 못함- 데이터가 없는 파티션은, 제거하여 관리 파일 압축과 크기- 파일압축으로 데이터가 작을 수록 쿼리속도와 S3에서 Athena까지 네트워크 트랙픽 감소- Parquet, ORC 파일 사용 권장- 파일사이즈가 작을 경우(128MB 이하), 읽기과정에서 생기는 오버헤드가 많이 일어남- 파일사이즈가..
wave35
'AWS' 태그의 글 목록