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

4분 분량
0

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

간략한 설명

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

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

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

해결 방법

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

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.    [새 데이터 원본] 페이지의 [새 데이터 원본 생성하기]에서 다음 옵션을 선택합니다. [데이터 원본 이름]에 설명하는 이름을 입력합니다. **데이터 소스 유형(Data source type)**에는 **Amazon DynamoDB 테이블(Amazon DynamoDB table)**을 선택합니다. **리전(Region)**에는 사용자의 DynamoDB 테이블이 포함된 리전을 선택합니다. **테이블 이름(Table name)**에는 방금 생성한 테이블을 선택합니다.

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

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)