如何設定 AWS AppSync 結構描述以處理 DynamoDB 的巢狀 JSON 資料?

2 分的閱讀內容
0

我希望 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)