3
2

はじめに

サーバーレス大好きエンジニアです!
Amplify Gen2ではSQLデータベースを利用することができます。
実際に使ってみて、登録時に失敗したポイントを共有したいと思います。

目次

  1. Amplify Gen2とは?
  2. 登録方法
  3. 失敗したこと
  4. 成功した場合
  5. まとめ

1. Amplify Gen2とは?

TypeScriptを使用してフルスタックアプリケーションを構築するための新たなAWS Amplifyが登場しました。
バックエンドリソースの作成がCLIからCDKに変更されたことで、より拡張性が高くなりました。
また、今までのAmplifyでは実現できなかった機能が追加され、その中でSQLデータベースの使用が可能になったことを知り、使ってみることにしました。

2. 登録方法

今回はMySQLの接続方法について書いていきます。
たった2つのコマンドで接続することができます。

まず、以下のコマンドでsandboxのシークレットを設定します。

npx ampx sandbox secret set SQL_CONNECTION_STRING

ここではSQL_CONNECTION_STRINGというシークレットを登録します。以下のようにSQLの情報を入力してください。

npx ampx sandbox secret set SQL_CONNECTION_STRING
? Enter secret value: mysql://user:password@hostname:port/db-name

次に以下のコマンドを実行するとデータベース接続が完了し、AmplifyでSQLを利用することができます。

npx ampx generate schema-from-database --connection-uri-secret SQL_CONNECTION_STRING --out amplify/data/schema.sql.ts

3. 失敗したこと

3.1 接続するリンクの情報がそもそも違う

mysql://user:password@hostname:port/db-nameの入力を間違えると以下のようなエラーが発生します。

Unable to connect to the database

3.2 データベースの登録をしていない

データベースが見つからないというエラーが起きます。

Error: Unknown database

この問題は、SQL内でデータベースを作成することで解決できます。

CREATE DATABASE hoge

3.3 スキーマの定義がされていない

既存のMySQLからスキーマをインポートするので、テーブル設計を事前にしておく必要があります。

Error: Imported SQL schema is empty.

また、PRIMARY KEYを設定しない場合もエラーが発生します。

Error: No valid tables found. Make sure at least one table has a primary key.

以下のようにテーブル定義とPRIMARY KEYの設定を行います。

CREATE TABLE Users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3.4 認証設定

RDSの設定を正しく行わない場合、以下のエラーが発生します。

AccessDenied: no identity-based policy allows the rds:DescribeDBProxies action

4. 成功した場合

成功すると、以下のようなログが出力されます。

✔ Successfully fetched the database schema.

5. まとめ

認証とSQLの初期データを適切に登録すれば問題なく接続できます。
参考になれば幸いです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2