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 を完了します。
- Squid Console を開き、DynamoDB と使用する application を選択します。
- Connectors tab をクリックし、Available connectors をクリックします。
- DynamoDB connector を選択します。
- 次の 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:ListTablesdynamodb:DescribeTabledynamodb:Scandynamodb: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 します。
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 Type | Squid Type |
|---|---|
| S(string) | string |
| N(number) | number |
| B(binary) | string(base64) |
| BOOL | boolean |
| L(list) | array |
| M(map) | map |
| SS、NS、BS(set) | array |
| NULL | null |
Squid で data を操作する方法については、Client SDK documentationを参照してください。