メインコンテンツまでスキップ

DynamoDB

Squid は Amazon DynamoDB database に接続し、Squid application の data source として使用できます。​

DynamoDB は AWS の serverless NoSQL key-value database です。Squid を使用すると、Squid Client SDK を通じて DynamoDB table に query し、AI agent が DynamoDB data を使用して question に answer できるようにします。

注記

DynamoDB connector は現在、read operation をサポートしています。query と document lookup は標準 Squid query API を通じて機能しますが、insert、update、delete、native query はまだサポートされていません。

DynamoDB database を Squid に接続するには、次の step を完了します。

  1. Squid Console を開き、DynamoDB と使用する application を選択します。
  2. Connectors tab をクリックし、Available connectors をクリックします。
  3. DynamoDB connector を選択します。
  4. 次の configuration information を指定します。
  • Connector ID - 簡潔で connector の識別に役立つ ID を選択します。これは後から変更できません。
  • Region - DynamoDB table の AWS region。たとえば us-east-1。
  • Access Key ID - table に access できる IAM user の access key ID。
  • Secret Access Key - 対応する secret access key。private に保つには、Squid Secrets に保存します。
  • Endpoint URL - Optional。DynamoDB Local 用の http://localhost:9001 などの custom endpoint。
  • Tables to Process - Optional。schema discovery に含める table の comma-separated list。regex pattern を指定するには forward slash を使用します(例: /^temp_.*/)。すべての table を含めるには空欄のままにします。

必要な IAM Permission​

IAM user には、公開する table に対する次の permission が必要です。

  • dynamodb:ListTables
  • dynamodb:DescribeTable
  • dynamodb:Scan
  • dynamodb:GetItem

connector は read-only であるため、write permission は必要ありません。

Schema の Discovery​

connector を追加した後、Schema tab を使用して table を discover します。Squid は各 table の key schema を読み取り、最大 100 item を sample して、残りの attribute とその type を infer します。保存前に生成された schema を調整できます。

Data の Query​

connector ID を渡し、他の Squid collection と同様に Client SDK から DynamoDB table に query します。

Client code
const users = await squid
.collection<User>('users', 'YOUR_DYNAMODB_CONNECTOR_ID')
.query()
.eq('status', 'active')
.snapshot();

注意すべき DynamoDB 固有の behavior:

  • query は server-side filter を使用する DynamoDB scan として実行されるため、secondary index を必要とせず、使用もしません。large table では、broad query が低速になり read capacity を消費する可能性があります。
  • limit を設定しない場合、query は最大 1000 item を返します。
  • result は sort されません。DynamoDB は scan order で item を返します。
  • document ID による document lookup は、simple(partition-key-only)primary key を持つ table でサポートされます。composite(partition + sort)key を持つ table は document ID で query できません。

Database の保護​

default では security rule が必要です。production environment では、security rule なしで connector への access を許可しないことが不可欠です。database data の保護について詳しくは、security rules documentationを参照してください。

Datatype Mapping​

次の table は DynamoDB と Squid 間の datatype mapping を示します。

DynamoDB TypeSquid Type
S(string)string
N(number)number
B(binary)string(base64)
BOOLboolean
L(list)array
M(map)map
SS、NS、BS(set)array
NULLnull

Squid で data を操作する方法については、Client SDK documentationを参照してください。