翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
イントロスペクションAPIsによる GraphQL RDS の構築
AWS AppSyncのイントロスペクションユーティリティは、データベーステーブルからモデルを検出し、GraphQL タイプを提案できます。 AWS AppSync コンソールの作成APIウィザードは、Aurora MySQL または PostgreSQL データベースAPIから を即座に生成できます。データの読み取りと書き込みを行うタイプと JavaScript リゾルバーが自動的に作成されます。
AWS AppSync は、Amazon RDS Data を介して Amazon Aurora データベースと直接統合しますAPI。Amazon RDS Data APIは、永続的なデータベース接続を必要とするのではなく、 AWS AppSync に接続して実行するための安全なHTTPエンドポイントを提供します。SQL ステートメント。これを使用して、Aurora の MySQL ワークロードと PostgreSQL ワークロードAPIのリレーショナルデータベースを作成できます。
を使用してリレーショナルデータベースAPI用の を構築する AWS AppSync と、いくつかの利点があります。
-
データベースはクライアントに直接公開されないため、アクセスポイントをデータベース自体から切り離すことができます。
-
さまざまなアプリケーションのニーズAPIsに合わせた専用設計を構築できるため、フロントエンドでのカスタムビジネスロジックが不要になります。これは Backend-For-Frontend (BFF) パターンと一致します。
-
認証とアクセスコントロールは、アクセスを制御するためにさまざまな認証モードを使用して AWS AppSync レイヤーに実装できます。データベースに接続するために、ウェブサーバーのホスティングやプロキシ接続など、追加のコンピューティングリソースは必要ありません。
-
リアルタイム機能はサブスクリプションを介して追加でき、 を介してデータミューテーションが自動的に接続されたクライアントに AppSync プッシュされます。
-
クライアントは、443 などの一般的なポートHTTPSを使用して API 経由で に接続できます。
AWS AppSync は、既存のリレーショナルデータベースAPIsからの構築を容易にします。そのイントロスペクションユーティリティは、データベーステーブルからモデルを検出し、GraphQL の型を提案できます。 AWS AppSync コンソールの作成APIウィザードは、Aurora MySQL または PostgreSQL データベースAPIから を瞬時に生成できます。データの読み取りと JavaScript書き込みを行うタイプとリゾルバーが自動的に作成されます。
AWS AppSync は、リゾルバーでのSQLステートメントの記述を簡素化する統合 JavaScript ユーティリティを提供します。 AWS AppSyncのsql
タグテンプレートは、動的値を持つ静的ステートメントに使用したり、rds
モジュールユーティリティを使用してプログラムでステートメントを構築したりできます。詳細については、データソースのリゾルバー関数リファレンスRDSと組み込みモジュールを参照してください。
イントロスペクション機能を使用する (コンソール)
詳細なチュートリアルと入門ガイドについては、「チュートリアル: Aurora PostgreSQL Serverless with DataAPI」を参照してください。
AWS AppSync コンソールを使用すると、データで設定された既存の Aurora データベースAPIから AWS AppSync GraphQL を数分APIで作成できます。これにより、データベース設定に基づいて運用スキーマが迅速に生成されます。をAPIそのまま使用するか、その上に構築して機能を追加できます。
-
にサインイン AWS Management Console し、AppSyncコンソール
を開きます。 -
ダッシュボード で、「 の作成API」を選択します。
-
-
API オプション で、GraphQL APIsを選択し、Amazon Aurora クラスター で開始し、次に次へ を選択します。
-
API 名を入力します。これは、コンソールAPIの の識別子として使用されます。
-
連絡先の詳細については、 のマネージャーを特定するための連絡先を入力できますAPI。これはオプションのフィールドです。
-
プライベートAPI設定 では、プライベートAPI機能を有効にできます。プライベートには、設定されたVPCエンドポイント () からAPIのみアクセスできますVPCE。詳細については、「プライベートAPIs」を参照してください。
この例では、この機能を有効にすることはお勧めしません。[次へ] 選択して入力を確認します。
-
-
[データベース] ページで [データベースを選択] を選択します。
-
クラスターからデータベースを選択する必要があります。最初のステップは、クラスターが存在する [リージョン] を選択することです。
-
ドロップダウンリストから [Aurora クラスター] を選択します。リソースを使用するAPI前に、対応するデータを作成して有効にする必要があります。
-
次に、データベースの認証情報をサービスに追加する必要があります。これは主に を使用して行われます AWS Secrets Manager。シークレットが存在する [リージョン] を選択します。シークレット情報を取得する方法の詳細については、「シークレットを検索する」または「シークレットの取得」を参照してください。
-
ドロップダウンリストからシークレットを選択します。ユーザーにはデータベースの読み取りアクセス許可が必要であることに注意してください。
-
-
[Import] (インポート) を選択します。
AWS AppSync は、データベースのイントロスペクション、テーブル、列、プライマリキー、インデックスの検出を開始します。検出されたテーブルが GraphQL でサポートできることを確認しますAPI。新しい行の作成をサポートするには、テーブルにプライマリキーが必要です。プライマリキーでは、複数の columns. AWS AppSync maps テーブル列を使用して次のようにフィールドを入力できます。
データ型 フィールドタイプ VARCHAR 文字列 CHAR 文字列 BINARY 文字列 VARBINARY 文字列 TINYBLOB 文字列 TINYTEXT 文字列 TEXT 文字列 BLOB 文字列 MEDIUMTEXT 文字列 MEDIUMBLOB 文字列 LONGTEXT 文字列 LONGBLOB 文字列 BOOL ブール値 BOOLEAN ブール値 BIT Int TINYINT Int SMALLINT Int MEDIUMINT Int INT Int INTEGER Int BIGINT Int YEAR Int FLOAT 浮動小数点数 DOUBLE 浮動小数点数 DECIMAL 浮動小数点数 DEC 浮動小数点数 NUMERIC 浮動小数点数 DATE AWSDate TIMESTAMP 文字列 DATETIME 文字列 TIME AWSTime JSON AWSJson ENUM ENUM -
テーブルの検出が完了すると、[データベース] セクションに情報が入力されます。新しい [データベーステーブル] セクションでは、テーブルからのデータがすでに入力され、スキーマの型に変換されている場合があります。必要なデータの一部が表示されない場合は、[テーブルを追加] を選択し、表示されるモーダルでそれらの型のチェックボックスをクリックして、[追加] を選択することで確認できます。
[データベーステーブル] セクションから型を削除するには、削除する型の横にあるチェックボックスをクリックし、[削除] を選択します。削除した型は、後で再度追加したい場合、[テーブルを追加] モーダルに表示されます。
AWS AppSync はテーブル名をタイプ名として使用しますが、名前は変更できます。例えば、
movies
タイプ名にMovie
。 データベーステーブルセクションでタイプの名前を変更するには、名前を変更するタイプのチェックボックスをクリックし、タイプ名列の鉛筆アイコンをクリックします。選択内容に基づいてスキーマの内容をプレビューするには、[スキーマをプレビュー] を選択します。このスキーマは空にはできないため、少なくとも 1 つのテーブルを型に変換する必要があることに注意してください。また、このスキーマのサイズは 1 MB を超えることはできません。
-
[サービスロール] で、このインポート専用の新しいサービスロールを作成するか、既存のロールを使用するかを選択します。
-
-
[Next (次へ)] を選択します。
-
次に、読み取り専用 API (クエリのみ) を作成するか、データの読み取りと書き込みAPI用の (クエリとミューテーションを含む) を作成するかを選択します。後者は、ミューテーションによってトリガーされるリアルタイムサブスクリプションもサポートします。
-
[Next (次へ)] を選択します。
-
選択肢を確認してから の作成 APIを選択します。 AWS AppSync は を作成し、クエリAPIとミューテーションにリゾルバーをアタッチします。生成された APIは完全に動作し、必要に応じて拡張できます。
イントロスペクション機能の使用 (API)
StartDataSourceIntrospection
イントロスペクションを使用してAPI、プログラムでデータベース内のモデルを検出できます。コマンドの詳細については、StartDataSourceIntrospection
「 の使用」を参照してくださいAPI。
を使用するにはStartDataSourceIntrospection
、Aurora クラスターの Amazon リソースネーム (ARN)、データベース名、シー AWS Secrets Manager クレット を指定しますARN。このコマンドはイントロスペクションプロセスを開始します。GetDataSourceIntrospection
コマンドを使用して結果を取得できます。コマンドが検出されたモデルの Storage Definition Language (SDL) 文字列を返すかどうかを指定できます。これは、検出されたモデルから直接SDLスキーマ定義を生成するのに役立ちます。
例えば、単純なTodos
テーブルに次のデータ定義言語 (DDL) ステートメントがある場合です。
create table if not exists public.todos ( id serial constraint todos_pk primary key, description text, due timestamp, "createdAt" timestamp default now() );
イントロスペクションは、以下のように開始します。
aws appsync start-data-source-introspection \ --rds-data-api-config resourceArn=<cluster-arn>,secretArn=<secret-arn>,databaseName=database
次に、GetDataSourceIntrospection
コマンドを使用して結果を取得します。
aws appsync get-data-source-introspection \ --introspection-id a1234567-8910-abcd-efgh-identifier \ --include-models-sdl
これは次の結果を返します。
{ "introspectionId": "a1234567-8910-abcd-efgh-identifier", "introspectionStatus": "SUCCESS", "introspectionStatusDetail": null, "introspectionResult": { "models": [ { "name": "todos", "fields": [ { "name": "description", "type": { "kind": "Scalar", "name": "String", "type": null, "values": null }, "length": 0 }, { "name": "due", "type": { "kind": "Scalar", "name": "AWSDateTime", "type": null, "values": null }, "length": 0 }, { "name": "id", "type": { "kind": "NonNull", "name": null, "type": { "kind": "Scalar", "name": "Int", "type": null, "values": null }, "values": null }, "length": 0 }, { "name": "createdAt", "type": { "kind": "Scalar", "name": "AWSDateTime", "type": null, "values": null }, "length": 0 } ], "primaryKey": { "name": "PRIMARY_KEY", "fields": [ "id" ] }, "indexes": [], "sdl": "type todos\n{\ndescription: String\n\ndue: AWSDateTime\n\nid: Int!\n\ncreatedAt: AW SDateTime\n}\n" } ], "nextToken": null } }