기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Python 애플리케이션을 사용하여 Amazon DynamoDB용 PynamoDB 모델 및 CRUD 함수를 자동으로 생성합니다.
작성자: 비지트 바시슈타 (AWS), 데라즈 알림찬다니 (AWS), 다난제이 카란카르 (AWS)
코드 리포지토리: amazon-reverse-engineer-dynamodb | 환경: PoC 또는 파일럿 | 기술: 소프트웨어 개발 및 테스트, 데이터베이스, DevOps |
워크로드: 오픈 소스 | AWS 서비스: Amazon DynamoDB |
요약
Amazon DynamoDB 데이터베이스 작업을 효율적으로 수행하려면 일반적으로 엔티티와 생성, 읽기, 업데이트 및 삭제 (CRUD) 작업 함수가 필요합니다. PynamoDB는 파이썬 3을 지원하는 파이썬 기반 인터페이스입니다. 또한 Amazon DynamoDB 트랜잭션 지원, 자동 속성 값 직렬화 및 역직렬화, Flask 및 Django와 같은 일반적인 Python 프레임워크와의 호환성 등의 기능을 제공합니다. 이 패턴은 PynamoDB 모델 및 CRUD 작업 함수의 자동 생성을 간소화하는 라이브러리를 제공하여 개발자가 Python과 DynamoDB를 사용하는 데 도움이 됩니다. 데이터베이스 테이블을 위한 필수 CRUD 함수를 생성하는 동시에 Amazon DynamoDB 테이블에서 PynamoDB 모델 및 CRUD 함수를 리버스 엔지니어링할 수도 있습니다. 이 패턴은 Python 기반 응용 프로그램을 사용하여 데이터베이스 작업을 단순화하도록 설계되었습니다.
이 솔루션의 주요 기능은 다음과 같습니다.
JSON 스키마를 PynamoDB 모델로 변환 — JSON 스키마 파일을 가져와서 Python에서 PynamoDB 모델을 자동으로 생성합니다.
CRUD 함수 생성 — DynamoDB 테이블에서 CRUD 작업을 수행하는 함수를 자동으로 생성합니다.
DynamoDB에서의 리버스 엔지니어링 — PynamoDB 객체 관계형 매핑 (ORM) 을 사용하여 기존 Amazon DynamoDB 테이블의 PynamoDB 모델 및 CRUD 함수를 리버스 엔지니어링할 수 있습니다.
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정
Python 버전 3.8 이상, 다운로드
및 설치 ORM을 생성하려는 Amazon DynamoDB 테이블
아키텍처
대상 기술 스택
JSON 스크립트
Python 애플리케이션
PynamoDB 모델
Amazon DynamoDB 데이터베이스 인스턴스
대상 아키텍처
![Python 애플리케이션을 사용하여 DynamoDB 테이블에서 CRUD 함수와 PynamoDB 모델을 생성하는 아키텍처 다이어그램](images/pattern-img/74cc4c73-5c8b-448d-98fb-b681cfa5f860/images/c2c367d6-d88a-4f49-8571-89160539eb08.png)
입력 JSON 스키마 파일을 생성합니다. 이 JSON 스키마 파일은 PynamoDB 모델 및 CRUD 함수를 생성하려는 각 DynamoDB 테이블의 속성을 나타냅니다. 여기에는 다음과 같은 세 가지 중요한 키가 포함되어 있습니다.
name
—대상 DynamoDB 테이블의 이름.region
— 테이블이 호스팅되는 AWS 지역attributes
— 파티션 키 (해시 속성이라고도 함), 정렬 키, 로컬 보조 인덱스, 글로벌 보조 인덱스 및 키가 아닌 모든 속성 등 대상 테이블에 속하는 속성. 이 도구는 애플리케이션이 대상 테이블에서 직접 키 속성을 가져올 때 입력 스키마가 키가 아닌 속성만 제공할 것으로 예상합니다. JSON 스키마 파일에서 속성을 지정하는 방법의 예는 이 패턴의 추가 정보 섹션을 참조하십시오.
Python 애플리케이션을 실행하고 JSON 스키마 파일을 입력으로 제공합니다.
Python 응용 프로그램은 JSON 스키마 파일을 읽습니다.
Python 애플리케이션은 DynamoDB 테이블에 연결하여 스키마와 데이터 형식을 도출합니다. 애플리케이션은 describe_table 작업을 실행하고 테이블의
키 및 인덱스 속성을 가져옵니다. Python 애플리케이션은 JSON 스키마 파일과 DynamoDB 테이블의 속성을 결합합니다. Jinja 템플릿 엔진을 사용하여 PynamoDB 모델 및 해당 CRUD 함수를 생성합니다.
PynamoDB 모델에 액세스하여 DynamoDB 테이블에서 CRUD 작업을 수행할 수 있습니다.
도구
서비스
Amazon DynamoDB는 빠르고 예측 가능하고 확장 가능한 성능을 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다.
기타 도구
Jinja는
템플릿을 최적화된 Python 코드로 컴파일하는 확장 가능한 템플릿 엔진입니다. 이 패턴은 Jinja를 사용하여 템플릿 내에 플레이스홀더와 로직을 삽입하여 동적 콘텐츠를 생성합니다. PynamoDB는 아마존 DynamoDB를
위한 파이썬 기반 인터페이스입니다. Python
은 범용 컴퓨터 프로그래밍 언어입니다.
코드 리포지토리
이 패턴의 코드는 GitHub 자동 생성 PynamoDB
컨트롤러 패키지
컨트롤러 Python 패키지에는 PynamoDB 모델 및 CRUD 함수를 생성하는 데 도움이 되는 기본 애플리케이션 로직이 포함되어 있습니다. 이는 다음을 포함합니다.
input_json_validator.py
— 이 Python 스크립트는 입력 JSON 스키마 파일의 유효성을 검사하고 대상 DynamoDB 테이블 목록과 각 테이블에 필요한 속성을 포함하는 Python 객체를 생성합니다.dynamo_connection.py
— 이 스크립트는 DynamoDB 테이블에 대한 연결을 설정하고 작업을 사용하여describe_table
PynamoDB 모델을 생성하는 데 필요한 속성을 추출합니다.generate_model.py
— 이 스크립트에는 입력 JSON 스키마 파일 및 작업을 기반으로 PynamoDB 모델을 만드는 Python 클래스가GenerateModel
포함되어 있습니다.describe_table
generate_crud.py
— JSON 스키마 파일에 정의된 DynamoDB 테이블의 경우 이 스크립트는 작업을 사용하여 PythonGenerateCrud
클래스를 생성합니다.
템플릿
이 Python 디렉토리에는 다음과 같은 Jinja 템플릿이 포함되어 있습니다.
model.jinja
— 이 Jinja 템플릿에는 PynamoDB 모델 스크립트를 생성하기 위한 템플릿 표현식이 포함되어 있습니다.crud.jinja
— 이 Jinja 템플릿에는 CRUD 함수 스크립트를 생성하기 위한 템플릿 표현식이 포함되어 있습니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
리포지토리를 복제합니다. | 다음 명령을 입력하여 자동 생성 PynamoDB
| 앱 개발자 |
Python 환경을 설정합니다. |
| 앱 개발자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
JSON 스키마 파일을 수정하십시오. |
| 앱 개발자 |
Python 애플리케이션을 실행합니다. | 다음 명령을 입력하여 PynamoDB 모델 및 CRUD 함수를 생성합니다.
| 앱 개발자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
생성된 PynamoDB 모델을 확인합니다. |
| 앱 개발자 |
생성된 CRUD 함수를 확인합니다. |
| 앱 개발자 |
관련 리소스
Amazon DynamoDB의 핵심 구성 요소 (DynamoDB 설명서)
보조 인덱스를 통한 데이터 액세스 개선 (DynamoDB 설명서)
추가 정보
JSON 스키마 파일의 샘플 속성
[ { "name": "test_table", "region": "ap-south-1", "attributes": [ { "name": "id", "type": "UnicodeAttribute" }, { "name": "name", "type": "UnicodeAttribute" }, { "name": "age", "type": "NumberAttribute" } ] } ]