如何設定 AWS AppSync 結構描述以處理 DynamoDB 的巢狀 JSON 資料?
我希望 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 資料。
相關資訊
相關內容
- 已提問 3 個月前lg...
- 已提問 1 年前lg...
- 已提問 4 個月前lg...
- 已提問 21 天前lg...
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 個月前
- AWS 官方已更新 3 年前