DynamoDB에서 중첩된 JSON 데이터를 처리하도록 AWS AppSync 스키마를 구성하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2021년 1월 11일

AWS AppSync 스키마를 사용하여 중첩된 JSON 데이터가 있는 Amazon DynamoDB 테이블에서 응답을 가져오려 합니다. 어떻게 해야 하나요?

간략한 설명

DynamoDB에서 중첩된 JSON 데이터를 처리할 AWS AppSync 스키마를 사용하려면 다음을 수행합니다.

  • 중첩된 JSON 데이터 항목을 DynamoDB 테이블에 추가합니다.
  • AppSync API를 생성하여 데이터 원본을 연결합니다.
  • AppSync API에서 중첩된 JSON 스키마를 구성합니다.
  • 확인자를 getItems 쿼리에 연결합니다.
  • 새 테스트 쿼리를 생성합니다.

중요: 필드 이름이 중첩된 JSON 데이터에 매핑되지 않은 경우 AWS AppSync 스키마는 DynamoDB에 대한 응답으로 null 값을 전달합니다.

해결 방법

DynamoDB 테이블에 중첩된 JSON 데이터 항목 추가

1.    AWS DynamoDB 콘솔을 엽니다.

2.    [테이블 생성]을 선택합니다.

3.    [테이블 이름] 필드에 설명하는 이름을 입력합니다.

4.    [기본 키] 필드에 필드 이름을 입력합니다. 예: id

5.    [생성]을 선택합니다.

6.    [항목] 탭을 선택한 후 [항목 생성]을 선택합니다.

7.    [항목 생성] 대화 상자의 왼쪽 상단 드롭다운 목록에서 [텍스트]를 선택합니다.

참고: 드롭다운 목록의 기본 선택값은 [트리]입니다.

8.    다음 중첩된 JSON 레코드를 텍스트 항목에 복사하여 붙여넣고 [저장]을 선택합니다.

중요: 텍스트 상자의 미리 채워진 내용을 중첩된 JSON 레코드로 덮어씁니다.

중첩 JSON 레코드의 예

{
    "id": "123",
    "product": {
        "model": {
            "property": {
                "battery": "li-ion",
                "device": "iOT-Device",
                "pressure": "1012",
                "up_time": "02:12:34"
            }
        }
    },
    "status": "In-Stock"
}

참고: 자세한 내용은 테이블 생성을 참조하세요.

AppSync API 생성 및 데이터 원본 연결

1.    AWS AppSync 콘솔을 엽니다.

2.    [API 생성]을 선택합니다.

3.    [시작하기] 페이지의 [API 사용자 지정 또는 Amazon DynamoDB에서 가져오기]에서 [처음부터 빌드]를 선택합니다.

4.    [시작]을 선택합니다.

5.    [API 이름] 필드에 API 이름을 입력합니다.

6.    [생성]을 선택합니다.

7.    왼쪽 탐색 창에서 [데이터 원본]을 선택합니다.

8.    [데이터 원본 생성]을 선택합니다.

9.    [새 데이터 원본] 페이지의 [새 데이터 원본 생성하기]에서 다음 옵션을 선택합니다. [데이터 원본 이름]에 설명하는 이름을 입력합니다. [데이터 원본 유형]에는 [Amazon DynamoDB 테이블]을 선택합니다. [리전]에는 사용자의 DynamoDB 테이블이 포함된 리전을 선택합니다. [테이블 이름]에는 방금 생성한 테이블을 선택합니다.

중요: 다른 모든 옵션은 기본값으로 둡니다.

10.    [생성]을 선택합니다.

참고: 자세한 내용은 데이터 원본 연결하기를 참조하세요.

AppSync API에서 중첩된 JSON 스키마 구성

1.    AWS AppSync 콘솔의 왼쪽 탐색 창에서 [스키마]를 선택합니다.

2.    다음 중첩된 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 콘솔에서, API의 [스키마] 페이지에 있는 [확인자] 하위의 [쿼리]까지 스크롤합니다. 또는 [필터 유형] 필드에 [쿼리]를 입력합니다.

2.    [getItems(...): allData] 옆 [확인자] 아래에 있는 [연결]을 선택합니다.

3.    [새 확인자 생성] 페이지의 [데이터 원본 이름]에서 이전에 생성한 DynamoDB 테이블 이름을 선택합니다.

중요: DynamoDB getItem 작업에 대한 기본 매핑 템플릿을 변경하지 마세요.

4.    [확인자 저장]을 선택합니다.

요청 매핑 템플릿 예

{
    "version": "2017-02-28",
    "operation": "GetItem",
    "key": {
        "ID": $util.dynamodb.toDynamoDBJson($ctx.args.ID),
    }
}

응답 매핑 템플릿 예

$util.toJson($ctx.result)

참고: 자세한 내용은 확인자 구성을 참조하세요.

새 테스트 쿼리 생성

1.    AWS AppSync 콘솔의 왼쪽 탐색 창에서 [쿼리]를 선택합니다.

2.    API의 [쿼리] 페이지에 있는 [쿼리 편집기]에서 다음 쿼리를 복사하여 붙여 넣습니다.

테스트 쿼리 예

query getItem {
    getItems(id:"123") {
      id
      product{
          model{
            property{
            pressure 
            device
            battery
            up_time
          }
        }
      }
      status
    }
  }

3.    재생 아이콘을 선택하거나 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"
    }
  }
}

이렇게 하면 AppSync GraphQL 작업을 통해 Amazon DynamoDB 테이블에서 중첩된 JSON 데이터를 가져올 수 있습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?