파이프라인 해석기(VTL) - AWS AppSync

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

파이프라인 해석기(VTL)

참고

이제는 APPSYNC_JS 런타임과 해당 문서를 주로 지원합니다. 여기에서 APPSYNC_JS 런타임과 해당 안내서를 사용해 보세요.

AWS AppSync는 GraphQL 필드에서 해석기를 실행합니다. 경우에 따라 애플리케이션 사용 시 단일 GraphQL 필드를 해석하기 위해 여러 작업을 실행해야 합니다. 이제, 파이프라인 해석기를 사용해 개발자는 함수라고 하는 작업을 작성하고 순서대로 실행할 수 있습니다. 파이프라인 해석기는 예를 들어, 필드에 필요한 데이터를 가져오기 전에 권한 부여를 확인해야 하는 애플리케이션에 유용합니다.

파이프라인 해석기는 이전 매핑 템플릿, 이후 매핑 템플릿과 함수 목록으로 구성됩니다. 각 함수에는 데이터 원본에 대해 실행되는 요청응답 매핑 템플릿이 있습니다. 파이프라인 해석기는 함수 목록에 실행을 위임하기 때문에 자신은 어떠한 데이터 원본에도 연결되지 않습니다. 단위 해석기와 함수는 데이터 원본에 대해 작업을 실행하는 기본 요소입니다. 자세한 내용은 해석기 매핑 템플릿 개요를 참조하세요.

파이프라인 해석기 생성

AWS AppSync 콘솔에서 스키마 페이지로 이동합니다.

다음 스키마를 저장합니다.

schema { query: Query mutation: Mutation } type Mutation { signUp(input: Signup): User } type Query { getUser(id: ID!): User } input Signup { username: String! email: String! } type User { id: ID! username: String email: AWSEmail }

변형 유형의 signUp 필드에 파이프라인 해석기를 연결하겠습니다. 오른쪽에 있는 변형 유형에서 signUp 변형 필드 옆에 있는 연결을 선택합니다. 해석기 생성 페이지에서 작업을 클릭한 다음 런타임 업데이트를 클릭합니다. Pipeline Resolver를 선택하고 VTL을 선택한 다음 업데이트를 선택합니다. 이 페이지에는 사전 매핑 템플릿 텍스트 영역, 함수 섹션 및 사후 매핑 템플릿 텍스트 영역, 이렇게 3가지 섹션이 있어야 합니다.

파이프라인 해석기는 사용자를 등록해 먼저 입력된 이메일 주소를 확인한 다음 사용자를 시스템에 저장합니다. 이메일 검증을 validateEmail 함수 내에 캡슐화하고 사용자를 saveUser 함수 내에 저장할 것입니다. validateEmail 함수가 먼저 실행되고, 이메일이 유효한 경우 saveUser 함수가 실행됩니다.

다음과 같이 실행 흐름이 진행됩니다.

  1. Mutation.signUp 해석기 요청 매핑 템플릿

  2. validateEmail 함수

  3. saveUser 함수

  4. Mutation.signUp 해석기 응답 매핑 템플릿

API의 다른 해석기 내에서 validateEmail 함수를 다시 사용할 것입니다. GraphQL 필드 간에 변경되기 때문에 $ctx.args에는 액세스하지 않도록 하겠습니다. 대신 $ctx.stash를 사용해 signUp(input: Signup) 입력 필드 인수의 이메일 속성을 저장할 수 있습니다.

사전 매핑 템플릿:

## store email input field into a generic email key $util.qr($ctx.stash.put("email", $ctx.args.input.email)) {}

콘솔은 사용할 기본 패스스루 사후 매핑 템플릿을 제공합니다.

$util.toJson($ctx.result)

생성 또는 저장을 선택하여 해석기를 업데이트합니다.

함수 생성

파이프라인 해석기 페이지의 함수 섹션에서 함수 추가를 클릭하고 새 함수 생성을 클릭합니다. 해석기 페이지를 거치지 않고 함수를 생성할 수 있는데, 이렇게 하려면 AWS AppSync 콘솔에서 함수 페이지로 이동합니다. 함수 생성 버튼을 선택합니다. 이메일이 유효하고 특정 도메인에서 전송되는지 확인하는 함수를 생성합니다. 이메일이 유효하지 않으면 함수에서 오류가 발생합니다. 이메일이 유효할 경우 제공된 입력을 전달합니다.

새 함수 페이지에서 작업을 선택한 다음 런타임 업데이트를 선택합니다. VTL을 선택하고 업데이트를 선택합니다. 없음 유형의 데이터 원본을 생성했는지 확인합니다. 데이터 원본 이름 목록에서 이 데이터 원본을 선택합니다. 함수 이름validateEmail을 입력합니다. 함수 코드 영역에서 다음 스니펫으로 모든 내용을 덮어씁니다.

#set($valid = $util.matches("^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(myvaliddomain)\.com", $ctx.stash.email)) #if (!$valid) $util.error("$ctx.stash.email is not a valid email.") #end { "payload": { "email": $util.toJson(${ctx.stash.email}) } }

이 내용을 응답 매핑 템플릿에 붙여넣습니다.

$util.toJson($ctx.result)

선택 항목을 검토한 다음 생성을 선택합니다. 방금 validateEmail 함수를 생성했습니다. 이 단계를 반복하여 다음 요청 및 응답 매핑 템플릿으로 saveUser 함수를 생성합니다(단순화를 위해 없음 데이터 원본을 사용하고 함수가 실행된 후 사용자가 시스템에 저장된 것으로 가장함).

요청 매핑 템플릿

## $ctx.prev.result contains the signup input values. We could have also ## used $ctx.args.input. { "payload": $util.toJson($ctx.prev.result) }

응답 매핑 템플릿:

## an id is required so let's add a unique random identifier to the output $util.qr($ctx.result.put("id", $util.autoId())) $util.toJson($ctx.result)

방금 saveUser 함수를 생성했습니다.

파이프라인 해석기에 함수 추가

파이프라인 해석기에 방금 생성한 함수가 자동으로 추가되어야 합니다. 그렇지 않거나 함수 페이지를 통해 함수를 생성한 경우, 해석기 페이지에서 함수 추가를 클릭하여 연결할 수 있습니다. 해석기에 validateEmailsaveUser 함수를 모두 추가합니다. validateEmail 함수는 saveUser 함수 앞에 배치해야 합니다. 함수를 더 추가할 때 위로 이동아래로 이동 옵션을 사용해 함수 실행 순서를 다시 정리할 수 있습니다. 변경 사항을 검토한 후 저장을 선택합니다.

쿼리 실행

AWS AppSync 콘솔에서 쿼리 페이지로 이동합니다. 탐색기에서 변형을 사용하고 있는지 확인합니다. 그렇지 않다면 드롭다운 목록에서 Mutation을 선택한 다음 +를 선택합니다. 다음 쿼리를 입력합니다.

mutation { signUp(input: { email: "nadia@myvaliddomain.com" username: "nadia" }) { id email } }

다음과 유사하게 반환되어야 합니다.

{ "data": { "signUp": { "id": "256b6cc2-4694-46f4-a55e-8cb14cc5d7fc", "email": "nadia@myvaliddomain.com" } } }

파이프라인 해석기를 사용하여 성공적으로 사용자를 등록했고, 입력한 이메일을 검증했습니다. 파이프라인 해석기에 대해 집중적으로 설명하는 자습서 전체를 살펴보려면 자습서: 파이프라인 해석기를 참조하십시오.