내용으로 건너뛰기

클라이언트측 뮤테이션이 수행되지 않는 외부 데이터베이스 업데이트를 AWS AppSync 구독자에게 알리려면 어떻게 해야 합니까?

5분 분량
0

클라이언트 측 뮤테이션을 통해 수행되지 않는 외부 데이터베이스 변경이 발생하는 경우 내 앱의 클라이언트가 실시간으로 업데이트되어야 합니다. AWS AppSync를 사용하여 구독자에게 이러한 변경 사항을 알리려면 어떻게 해야 합니까?

간략한 설명

데이터 소스를 직접적으로 호출하지 않고도 로컬 해석기를 사용하여 구독자에게 외부 데이터베이스 변경 사항을 실시간으로 알릴 수 있습니다. 예를 들어 로컬 해석기는 항공사 앱과 같이 정보를 정기적으로 업데이트하는 앱에 유용합니다.

해결 방법 섹션의 단계를 완료하여 예제 GraphQL API를 생성하십시오. GraphQL API는 Amazon DynamoDB 테이블 데이터 소스에 데이터가 기록될 때 구독자에게 실시간으로 업데이트합니다.

해결 방법

마법사를 사용하여 GraphQL API를 생성

AWS AppSync 가이드 스키마 마법사를 사용하여 새 GraphQL API를 생성할 수 있습니다. 자세한 내용은 GraphQL API 설계 중을 참조하십시오.

1.    AWS AppSync 콘솔을 엽니다.

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

3.    시작하기 페이지의 API 사용자 지정 또는 Amazon DynamoDB에서 가져오기에서 마법사를 사용하여 생성을 선택한 다음 시작을 선택합니다.

4.    모델 생성 페이지에서 다음을 따릅니다.
       모델 이름 지정에서 모델 이름을 입력합니다. 이 예에서는 Book이 이름입니다.
       모델 필드 구성에서 앱의 데이터 유형을 정의합니다. 이 예제 설정에서는 기본 필드 이름(idtitle)과 유형을 유지합니다.
       (선택 사항)**모델 테이블 구성(선택 사항)**을 확장하여 색인을 추가합니다.
       생성을 선택합니다.

5.    리소스 생성 페이지에서 API의 이름을 입력합니다. 그런 다음, 생성을 선택합니다. AWS AppSync는 API를 생성하고 API의 쿼리 페이지를 엽니다.

테스트 구독 생성

1.    AWS AppSync 콘솔을 엽니다.

2.    API의 쿼리 페이지로 이동한 다음 복제된 브라우저 탭 또는 창을 엽니다.

3.    복제 브라우저 탭 또는 창에서 쿼리 편집기의 내용을 지우고 다음 쿼리를 입력하십시오.

subscription onCreateBook {
  onCreateBook {
    id
    title
  }
}

이전 쿼리는 createBook 뮤테이션에 대한 구독을 생성합니다.

4.    재생 버튼(쿼리 실행)을 선택합니다. 복제된 브라우저 탭 또는 창은 createBook 뮤테이션을 구독합니다.

5.    원래 브라우저 탭 또는 창에서 재생 버튼(쿼리 실행)을 선택한 다음 createBook을 선택하여 뮤테이션을 실행합니다. 결과는 원본 및 복제(구독) 모두의 브라우저 탭 또는 창에 표시됩니다.

6.    구독이 표시되면 복제된 브라우저 탭 또는 창을 닫습니다.

None 형식의 데이터 소스 만들기

None 데이터 소스 유형은 요청 매핑 템플릿응답 매핑 템플릿에 직접 전달합니다.

1.    원래 브라우저 탭 또는 창에서 AWS AppSync 콘솔을 엽니다.

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

3.    데이터 원본 생성을 선택합니다.

4.    새 데이터 원본 페이지의 새 데이터 원본 생성에서 다음 단계를 완료합니다.
       데이터 원본 이름에 이름을 입력합니다. 예: real_time_data.
       데이터 원본 유형에서 없음을 선택합니다.

5.    생성을 선택합니다.

자세한 내용은 데이터 원본 첨부를 참조하십시오.

스키마에 뮤테이션 추가

관리자가 사용하거나 스키마를 업데이트할 때 시작할 수 있는 두 번째 뮤테이션을 생성합니다.

데이터베이스 업데이트를 없음 유형 데이터 소스에 전달하는 변이로 스키마를 업데이트합니다.

1.    AWS AppSync 콘솔을 엽니다.

2.    왼쪽 탐색 창에서 스키마를 선택합니다.

3.    스키마 편집기의 **유형 뮤테이션{**에서 다음 명령을 추가하여 외부 업데이트를 위한 새 뮤테이션 유형을 생성합니다.

createBookExt(input: CreateBookInput!): Book

4.    스키마 편집기의 **유형 구독{**입력에서 다음 줄을 찾습니다.

onCreateBook(id: ID, title: String): Book
        @aws_subscribe(mutations: ["createBook"])

5.    뮤테이션 목록에 **“createBookExt”**를 추가합니다.

onCreateBook(id: ID, title: String): Book
        @aws_subscribe(mutations: ["createBook", "createBookExt"])

6.    스키마 저장을 선택합니다.

자세한 내용은 스키마 설계 중을 참조하십시오.

뮤테이션에 해석기 추가

1.    AWS AppSync 콘솔을 엽니다.

2.    API의 스키마 페이지의 해석기에서 뮤테이션까지 아래로 스크롤합니다. 또는 필터 유형뮤테이션을 입력합니다.

3.    createBookExt(...): Book옆의 해석기에서 첨부를 선택합니다.

4.    새 해석기 생성 페이지에서 데이터 원본 이름에 대해 앞서 생성한 없음 유형 데이터 원본의 이름을 선택합니다. 예: real_time_data.

5.    요청 매핑 템플릿 구성에서 요청 함수를 찾습니다.

export function request(ctx) {
    return {};
}

6.    ctx.args를 반환하도록 함수를 수정합니다.

export function request(ctx) {
    return ctx.args;
}

7.    생성을 선택합니다.

자세한 내용은 해석기 (VTL) 구성을 참조하십시오.

새 테스트 구독 생성

1.    AWS AppSync 콘솔을 엽니다.

2.    왼쪽 탐색 창에서 쿼리를 선택합니다.

3.    API의 쿼리 페이지에서 복제된 브라우저 탭 또는 창을 엽니다.

4.    복제 브라우저 탭 또는 창에서 쿼리 편집기의 내용을 지우고 다음 쿼리를 입력하십시오.

subscription onCreateBook {
  onCreateBook {
    id
    title
  }
}

5.    재생 버튼(쿼리 실행)을 선택합니다. 복제된 브라우저 탭 또는 창이 이제 createBookcreateBookExt 뮤테이션을 모두 구독합니다.

새 테스트 뮤테이션 생성

1.    API의 ** 쿼리** 페이지에 있는 원래 브라우저 탭 또는 창에서 쿼리 편집기의 콘텐츠를 지웁니다. 그런 후 다음 쿼리를 입력합니다.

mutation createBook($createbookinput: CreateBookInput!) {
  createBook(input: $createbookinput) {
    id
    title
  }
}

편집기 하단의 쿼리 변수 섹션에서 내용을 지우고 다음 쿼리를 입력합니다.

{
  "createbookinput": {
    "title": "My New Book"
  }
}

이전 쿼리는 createBook 뮤테이션을 사용해 새 예약을 생성합니다.

2.    재생 버튼(쿼리 실행)을 선택합니다.

3.    복제(구독) 브라우저 탭 또는 창에서 구독자가 실시간으로 업데이트를 수신하는지 확인하십시오.

(선택 사항) 예제 사용 사례 참조

클라이언트 앱을 빌드하고 이러한 개념을 적용할 때 가격 및 비행 시간을 제공하는 항공사 앱 구축의 다음 예를 사용할 수 있습니다.

다음 단계는 DynamoDB 테이블에서 항공편 세부 정보가 변경될 때 구독 클라이언트에 알리는 방법을 보여줍니다.

1.    DynamoDB 스트림을 트리거로 사용하는 AWS Lambda 함수를 생성합니다. DynamoDB 테이블이 업데이트되면 Lambda 함수를 간접적으로 호출합니다. 자세한 내용을 보려면 Amazon DynamoDB에서 AWS Lambda 사용을 참조하십시오.

2.    Lambda 함수 코드에 적절한 업데이트를 필터링하고 AWS AppSync에 대한 변형 호출을 수행하는 로직을 포함합니다. 그러면 AWS AppSync가 구독을 통해 구독자에게 알립니다. 자세한 내용은 자습서: AWS Lambda 해석기를 참조하십시오.

3.    AWS AppSync에서 로컬 해석기를 사용하여 새 뮤테이션 필드(예: publishPrice)를 추가합니다.

4.    구독 필드에서 해당 뮤테이션(예: onPriceUpdate)을 구독합니다.

예제 스키마

type flightDetails {
  id: ID!
  src: String!
  destn: String!
  price : Int
}

type Mutation {
   # A local resolver targeting a None data source that publishes the message to subscribed clients.
  publishPrice(price: Int): flightDetails
}

type Subscription {
  # Notified whenever *publishPrice* is called.
  onPriceUpdate: Message
    @aws_subscribe(mutations: ["publishPrice"])
}

type Query { ... }

자세한 내용은 스키마 설계 중을 참조하십시오.

5.    DynamoDB 스트림을 활성화로 사용하는 다른 AWS Lambda 함수를 생성합니다. 이 함수에서 publishPrice 뮤테이션을 직접적으로 호출합니다. publishPrice 뮤테이션에는 로컬 해석기가 있기 때문에 데이터가 DynamoDB에 다시 기록되지 않습니다. 이 방법을 사용하면 AWS AppSync를 PubSub 브로커로 사용할 수 있습니다.

자세한 내용과 다른 예제 사용 사례는 자습서: 로컬 해석기를 참조하십시오.


관련 정보

해석기 자습서(VTL)

쿼리 및 뮤테이션 실행

해석기 매핑 템플릿 참조(VTL)

AWS 공식업데이트됨 3년 전
댓글 없음