我希望 AWS AppSync 結構描述能夠從具有巢狀 JSON 資料的 Amazon DynamoDB 資料表擷取回應。該如何操作?
簡短說明
若要取得 AWS AppSync 結構描述以處理 DynamoDB 的巢狀 JSON 資料,請執行下列動作:
- 將巢狀 JSON 資料項目新增至 DynamoDB 資料表。
- 建立 AWS AppSync API 並連接資料來源。
- 在 AWS AppSync API 設定巢狀 JSON 結構描述。
- 將解析程式連接至 getItems 查詢。
- 建立新的測試查詢。
**重要事項:**如果欄位名稱未對應至巢狀 JSON 資料,則 AWS AppSync 結構描述會在回應中傳遞 null 值給 DynamoDB。
解決方法
將巢狀 JSON 資料項目新增至 DynamoDB 資料表
1. 開啟 Amazon DynamoDB 主控台。
2. 選擇建立資料表。
3. 在資料表名稱欄位輸入敘述名稱。
4. 在分割區索引鍵欄位輸入欄位名稱。例如:id。
5. 選擇建立資料表。新資料表會顯示在主控台的資料表頁面。
6. 在名稱欄位選擇新資料表名稱。資料表的概觀頁面隨即開啟。
7. 選擇動作下拉式清單。然後,選擇建立項目。建立項目頁面隨即開啟。
8. 選擇 JSON 按鈕。
9. 將下列巢狀 JSON 記錄複製並貼到 JSON 編輯器,然後選擇儲存:
**重要事項:**請確定您使用巢狀 JSON 記錄覆寫 JSON 編輯器預先填入的內容。
巢狀 JSON 記錄範例
{
"id": "123",
"product": {
"model": {
"property": {
"battery": "li-ion",
"device": "iOT-Device",
"pressure": "1012",
"up_time": "02:12:34"
}
}
},
"status": "In-Stock"
}
如需詳細資訊,請參閱建立資料表。
建立 AWS AppSync API 並連接資料來源
1. 開啟 AWS AppSync 主控台。
2. 選擇建立 API。
3. 在**「開始使用」頁面的自訂您的 API 或從 Amazon DynamoDB 匯入下,選擇從頭開始建置**。
4. 選擇開始。
5. 在 API 名稱欄位輸入 API 名稱。
6. 選擇建立。
7. 在左側導覽窗格選擇資料來源。
8. 選擇建立資料來源。
9. 在新的資料來源頁面的建立新的資料來源下,選擇下列選項: 對於資料來源名稱,請輸入敘述名稱。對於資料來源類型,請選擇 Amazon DynamoDB 資料表。對於區域,請選擇包含 DynamoDB 資料表的區域。對於資料表名稱,請選擇您剛建立的資料表。
**重要事項:**請將所有其他選項保留為預設值。
10. 選擇建立。
如需詳細資訊,請參閱連接資料來源。
在 AWS AppSync API 設定巢狀 JSON 結構描述
1. 開啟 AWS AppSync 主控台。
2. 在左側導覽窗格選擇結構描述。
3. 將下列巢狀 JSON 結構描述複製並貼到 JSON 編輯器,然後選擇儲存結構描述:
**重要事項:**請確定您使用巢狀 JSON 結構描述覆寫 JSON 編輯器預先填入的內容。
巢狀 JSON 結構描述範例
type Query {
getItems(id: String!): allData
}
type allData {
id: String!
product: toModel
status: String
}
type items {
battery: String
device: String
pressure: String
up_time: String
}
schema {
query: Query
}
type toModel {
model: toProperties
}
type toProperties {
property: items
}
如需詳細資訊,請參閱設計結構描述。
將解析程式連接至 getItems 查詢
1. 開啟 AWS AppSync 主控台。
2. 在 API 結構描述頁面的解析程式下,捲動至查詢。
注意:或者,您可以在篩選條件類型欄位輸入查詢。
3. 在 getItems(...): allData 旁的解析程式下選擇連接。
4. 在建立新的解析程式頁面,針對資料來源名稱選擇您建立的 DynamoDB 資料表名稱。
**重要事項:**請勿變更 DynamoDB GetItem 操作的預設映射範本。
5. 選擇儲存解析程式。
請求映射範本範例
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
}
}
回應映射範本範例
$util.toJson($ctx.result)
如需詳細資訊,請參閱設定解析程式。
建立新的測試查詢
1. 開啟 AWS AppSync 主控台。
2. 在左側導覽窗格選擇查詢。
3. 在 API 查詢頁面的查詢編輯器中,複製並貼上下列查詢:
測試查詢範例
query getItem {
getItems(id:"123") {
id
product{
model{
property{
pressure
device
battery
up_time
}
}
}
status
}
}
4. 若要執行測試查詢,請選擇播放圖示,或按下 Ctrl/Cmd + Enter。
測試查詢結果範例
{
"data": {
"getItems": {
"id": "123",
"product": {
"model": {
"property": {
"pressure": "1012",
"device": "iOT-Device",
"battery": "li-ion",
"up_time": "02:12:34"
}
}
},
"status": "In-Stock"
}
}
}
您現在可以透過 AWS AppSync GraphQL 操作,從 Amazon DynamoDB 資料表擷取任何巢狀 JSON 資料。
相關資訊
Amazon DynamoDB 支援的資料類型及命名規則
設定 getPost 解析程式 (DynamoDB GetItem)