翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Python アプリケーションを使用して Amazon DynamoDB の PynamoDB モデルと CRUD 関数を自動的に生成する DynamoDB
Vijit Vashishtha、Dheeraj Alimchandani、Dhananjay Karanjkar、Amazon Web Services
概要
Amazon DynamoDB データベースオペレーションを効率的に実行するために、エンティティと作成、読み取り、更新、削除 (CRUD) オペレーション関数を要求するのが一般的です。PynamoDB は、Python 3 をサポートする Python ベースのインターフェイスです。また、Amazon DynamoDB トランザクションのサポート、属性値の自動シリアル化と逆シリアル化、Flask や Django などの一般的な Python フレームワークとの互換性などの機能も提供します。このパターンは、PynamoDB モデルと CRUD オペレーション関数の自動作成を合理化するライブラリを提供することで、Python と DynamoDB を使用するデベロッパーに役立ちます。 PynamoDB データベーステーブルに不可欠な CRUD 関数を生成しますが、Amazon DynamoDB テーブルから PynamoDB モデルと CRUD 関数をリバースエンジニアリングすることもできます。 DynamoDB このパターンは、Python ベースのアプリケーションを使用してデータベース操作を簡素化するように設計されています。
このソリューションの主な機能は次のとおりです。
- PynamoDB モデルへの JSON スキーマ – JSON スキーマファイルをインポートして Python で PynamoDB モデルを自動的に生成します。 
- CRUD 関数の生成 – DynamoDB テーブルで CRUD オペレーションを実行する関数を自動的に生成します。 
- DynamoDB からのリバースエンジニアリング – PynamoDB オブジェクトリレーショナルマッピング (ORM) を使用して、既存の Amazon DynamoDB テーブルの PynamoDB モデルと CRUD 関数をリバースエンジニアリングします。 
前提条件と制限
前提条件
アーキテクチャ
ターゲットテクノロジースタック
- JSON スクリプト 
- Python アプリケーション 
- PynamoDB モデル 
- Amazon DynamoDB データベースインスタンス 
ターゲット アーキテクチャ

- 入力 JSON スキーマファイルを作成します。この JSON スキーマファイルは、 および CRUD 関数から PynamoDB モデルを作成するそれぞれの DynamoDB テーブルの属性を表します。 PynamoDB これには、次の 3 つの重要なキーが含まれています。 - name– ターゲット DynamoDB テーブルの名前。
- region– テーブル AWS リージョン がホストされている 。
- attributes– パーティションキー (ハッシュ属性とも呼ばれます)、ソートキー、ローカルセカンダリインデックス、グローバルセカンダリインデックス、非キー属性など、ターゲットテーブルの一部である属性。このツールは、アプリケーションがターゲットテーブルから直接キー属性を取得するため、入力スキーマがキー以外の属性のみを提供することを想定しています。JSON スキーマファイルで属性を指定する方法の例については、このパターンの追加情報「追加情報」セクションを参照してください。
 
- Python アプリケーションを実行し、JSON スキーマファイルを入力として指定します。 
- Python アプリケーションは JSON スキーマファイルを読み取ります。 
- Python アプリケーションは DynamoDB テーブルに接続して、スキーマとデータ型を取得します。アプリケーションは describe_table - オペレーションを実行し、テーブルのキー属性とインデックス属性を取得します。 
- Python アプリケーションは、JSON スキーマファイルと DynamoDB テーブルの属性を組み合わせます。Jinja テンプレートエンジンを使用して、PynamoDB モデルと対応する CRUD 関数を生成します。 
- PynamoDB モデルにアクセスして、DynamoDB テーブルで CRUD オペレーションを実行します。 
ツール
AWS のサービス
- Amazon DynamoDB は、フルマネージド NoSQL データベースサービスです。高速かつ予測可能でスケーラブルなパフォーマンスを提供します。 
その他のツール
コードリポジトリ
このパターンのコードは、GitHub 自動生成 PynamoDB モデルと CRUD 関数
コントローラーパッケージ
コントローラー Python パッケージには、PynamoDB モデルと CRUD 関数の生成に役立つ主要なアプリケーションロジックが含まれています。以下の要素が含まれます。
- input_json_validator.py– この Python スクリプトは、入力 JSON スキーマファイルを検証し、ターゲット DynamoDB テーブルのリストと各テーブルに必要な属性を含む Python オブジェクトを作成します。
- dynamo_connection.py– このスクリプトは DynamoDB テーブルへの接続を確立し、- describe_tableオペレーションを使用してPynamoDB モデルの作成に必要な属性を抽出します。
- generate_model.py– このスクリプトには、入力 JSON スキーマファイルと- describe_tableオペレーションに基づいて PynamoDB モデル- GenerateModelを作成する Python クラスが含まれています。
- generate_crud.py– JSON スキーマファイルで定義されている DynamoDB テーブルの場合、このスクリプトは- GenerateCrudオペレーションを使用して Python クラスを作成します。
テンプレート
この Python ディレクトリには、次の Jinja テンプレートが含まれています。
- model.jinja– この Jinja テンプレートには、PynamoDB モデルスクリプトを生成するためのテンプレート式が含まれています。
- crud.jinja– この Jinja テンプレートには、CRUD 関数スクリプトを生成するためのテンプレート式が含まれています。
エピック
| タスク | 説明 | 必要なスキル | 
|---|---|---|
| リポジトリをクローン作成します。 | 次のコマンドを入力して、PynamoDB モデルと CRUD 関数の自動生成 
 | アプリ開発者 | 
| Python 環境をセットアップします。 | 
 | アプリ開発者 | 
| タスク | 説明 | 必要なスキル | 
|---|---|---|
| JSON スキーマファイルを変更します。 | 
 | アプリ開発者 | 
| Python アプリケーションを実行します。 | 次のコマンドを入力して、PynamoDB モデルと CRUD 関数を生成します。ここで、  
 | アプリ開発者 | 
| タスク | 説明 | 必要なスキル | 
|---|---|---|
| 生成された PynamoDB モデルを検証します。 | 
 | アプリ開発者 | 
| 生成された CRUD 関数を検証します。 | 
 | アプリ開発者 | 
関連リソース
- Amazon DynamoDB のコアコンポーネント (DynamoDB ドキュメント)DynamoDB 
- セカンダリインデックスによるデータアクセスの改善 (DynamoDB ドキュメント) 
追加情報
JSON スキーマファイルの属性例
[ { "name": "test_table", "region": "ap-south-1", "attributes": [ { "name": "id", "type": "UnicodeAttribute" }, { "name": "name", "type": "UnicodeAttribute" }, { "name": "age", "type": "NumberAttribute" } ] } ]