Amazon Web Services 한국 블로그
AWS AppSync 정식 출시
데이터 기반의 웹 및 모바일 애플리케이션을 빌드하거나 빌드하기를 원하는데 실시간 업데이트와 오프라인 작업 기능이 필요한 경우 AWS AppSync가 유용합니다. AWS re:Invent 2017에서 미리보기 형식으로 발표된 AWS AppSync는 iOS, 안드로이드, JavaScript 및 React Native 애플리케이션에서 사용하도록 설계되었습니다. 자세한 설명은 여기에서 참조할 수 있습니다.
AWS AppSync는 표준화된 오픈 쿼리 언어인 GraphQL을 기반으로 하므로 애플리케이션에서 클라우드에서 필요한 데이터를 정확하게 요청할 수 있습니다.
미리보기 기간이 끝나고 이제 애플리케이션 개발 프로세스를 간소화하고 효율화할 6가지 새로운 기능을 갖춘 AWS AppSync가 운영 환경에 설치할 수 있는 버전으로 정식 출시되었다는 것을 발표하게 되어 기쁩니다.
- 콘솔 로그 액세스 – 이제 AWS AppSync Console에서 GraphQL query, mutation, subscription을 테스트할 때 생성되는 CloudWatch Logs 항목을 확인할 수 있습니다.
- 모의 데이터를 사용한 콘솔 테스트 – 이제 콘솔에서 테스트용으로 모의 컨텍스트 객체를 생성하고 사용할 수 있습니다.
- Subscription Resolver – 이제 query 및 mutate 요청과 마찬가지로 AWS AppSync Subscription 요청을 위한 Resolver를 생성할 수 있습니다.
- DynamoDB에 대한 배치 GraphQL 작업 – 이제 하나 이상의 테이블에 걸쳐 resolver 함수에 DynamoDB의 배치 작업(BatchGetItem 및 BatchWriteItem)을 사용할 수 있습니다.
- CloudWatch 지원 – 이제 Amazon CloudWatch Metrics 및 CloudWatch Logs를 사용하여 AWS AppSync API에 대한 호출을 모니터링할 수 있습니다.
- CloudFormation 지원 – 이제 AWS CloudFormation 템플릿을 사용하여 스키마, 데이터 원본 및 Resolver를 정의할 수 있습니다.
AppSync 소개
새로운 기능을 자세히 설명하기 전에 먼저 콘솔부터 차례로 AWS AppSync API를 생성하는 프로세스를 살펴보겠습니다. Create API를 클릭하여 시작합니다.
API의 이름을 입력하고 데모용으로 사용하기 위해 Sample schema를 선택합니다.
이 스키마는 일련의 GraphQL 객체 유형을 정의합니다. 각 객체 유형에는 선택적 인수를 사용한 일련의 필드가 있습니다.
직접 API를 생성하는 경우 이 단계에서 스키마를 입력합니다. 여기서는 샘플을 사용하므로 스키마를 입력할 필요가 없습니다. 어느 경우든 Create를 클릭하여 계속 진행합니다.
GraphQL 스키마 유형은 데이터에 대한 작업의 진입점을 정의합니다. 특정 스키마 대신 저장된 모든 데이터는 다음 진입점 중 하나로 시작하는 경로를 사용하여 액세스할 수 있어야 합니다. 콘솔에서 API의 엔드포인트와 키가 자동으로 입력됩니다.
또한 단계별 지침과 완벽하게 작동하며 복제할 수 있는 일련의 샘플 애플리케이션도 제공됩니다.
Create를 클릭하면 AWS AppSync에서 한 쌍의 Amazon DynamoDB 테이블이 자동으로 생성됩니다. Data Sources를 클릭하면 해당 테이블을 볼 수 있습니다.
또한 스키마를 표시 및 수정하고, query를 실행하며, API의 다양한 설정을 수정할 수 있습니다.
이제 새 기능을 하나씩 자세히 살펴보겠습니다.
콘솔 로그 액세스
이전에도 AWS AppSync Console에서 query를 실행하고 결과를 확인할 수 있었지만, 이제 관련 로그 항목까지 액세스할 수 있습니다. 로그 항목을 보려면 아래의 설명과 같이 로그를 활성화하고, LOGS를 연 다음 확인란을 선택합니다. 다음은 새 이벤트를 추가하는 간단한 mutation query입니다. query를 입력하고 화살표를 클릭하여 테스트합니다.
VIEW IN CLOUDWATCH를 클릭하면 자세하게 볼 수 있습니다.
자세히 알아보려면 Resolver 테스트 및 디버그를 참조하십시오.
모의 데이터를 사용한 콘솔 테스트
이제 콘솔에서 컨텍스트 객체를 생성할 수 있습니다. 컨텍스트 객체는 테스트 목적으로 Resolver 중 하나로 전달됩니다. 스키마에 testResolver
항목을 추가합니다.
그런 다음 Schema 페이지의 오른쪽에서 해당 항목을 찾아 Attach를 클릭합니다.
데이터 원본을 선택하고(테스트용이며 실제 원본은 액세스되지 않음) Put item 매핑 템플릿을 사용합니다.
그런 다음 Select test context를 클릭하고, Create New Context를 선택하고, 테스트 컨텐츠에 이름을 지정한 후, Save를 클릭합니다(그림에서 보듯이 테스트 컨텍스트에는 query의 인수와 결과의 각 필드에 반환될 값이 포함되어 있음).
새 Resolver를 저장한 후 Test를 클릭하여 요청과 응답을 확인합니다.
Subscription Resolver
AWS AppSync 애플리케이션에서는 @aws_subscribe
GraphQL 스키마 명령을 사용하고 Subscription 유형을 정의하여 모든 데이터 원본의 변경 사항을 모니터링할 수 있습니다. AWS AppSync 클라이언트 SDK는 웹소켓을 통한 MQTT를 사용하여 AWS AppSync에 연결하며 각 mutation의 다음에 애플리케이션에 알립니다. 이제 GraphQL 페이로드를 기반 스토리지 시스템에 필요한 프로토콜로 변환하는 Resolver를 subscription 필드에 연결하고, 클라이언트가 연결을 시도할 때 권한 부여 검사를 수행할 수 있습니다. 이를 통해 query, mutation, subscription 모두에 대해 동일한 세부적인 권한 부여 루틴을 수행할 수 있습니다.
이 기능에 대해 자세히 알아보려면 실시간 데이터를 참조하십시오.
배치 GraphQL 작업
이제 Resolver가 리전에 있는 하나 이상의 테이블에 걸쳐 DynamoDB 배치 작업을 사용할 수 있습니다. 따라서 단일 query에 여러 키를 사용하고, 여러 테이블의 레코드를 읽고, 여러 테이블에 대량으로 레코드를 쓰며, 상황에 따라 여러 테이블에 걸쳐 레코드를 쓰거나 삭제할 수 있습니다.
이 기능을 사용하려면 테이블에 액세스하는 데 사용하는 IAM 역할에 DynamoDB의 BatchGetItem
및 BatchPutItem
함수에 대한 액세스 권한이 있습니다.
자세히 알아보려면 DynamoDB 배치 Resolver 튜토리얼을 참조하십시오.
CloudWatch Logs 지원
이제 API 요청을 CloudWatch Logs에 로깅하도록 AWS AppSync를 설정할 수 있습니다. Settings와 Enable logs를 차례로 클릭한 다음 IAM 역할과 로그 수준을 선택합니다.
CloudFormation 지원
템플릿에 다음 CloudFormation 리소스 유형을 사용하여 AWS AppSync 리소스를 정의할 수 있습니다.
AWS::AppSync::GraphQLApi
– 데이터 원본(Amazon Elasticsearch Service 도메인 또는 DynamoDB 테이블)과 관련하여 AppSync API를 정의합니다.
AWS::AppSync::ApiKey
– 데이터 원본에 액세스하는 데 필요한 액세스 키를 정의합니다.
AWS::AppSync::GraphQLSchema
– GraphQL 스키마를 정의합니다.
AWS::AppSync::DataSource
– 데이터 원본을 정의합니다.
AWS::AppSync::Resolver
– 스키마와 데이터 원본을 참조하여 Resolver를 정의하고 요청을 위한 매핑 템플릿을 포함합니다.
다음은 YAML 형식의 간단한 스키마 정의입니다.
정식 출시
이 새로운 기능을 바로 오늘부터 사용할 수 있습니다! 유용한 블로그 게시물과 기타 리소스를 몇 가지 소개해 드리겠습니다.
- AWS AppSync 홈 페이지 및 개발자 안내서
- AWS AppSync 소개 – 실시간 및 오프라인 기능을 갖춘 데이터 기반 앱 빌드.
- 손쉬운 모바일 서비스 데이터 처리, AWS AppSync – 동영상
- App Sync, 모바일 개발을 위한 GraphQL as a Service – 동영상
- (영문) AWS AppSync 및 GraphQL 소개 – 동영상
- (영문) 서버리스로 확장성과 신뢰성이 뛰어난 GraphQL 엔드포인트 실행
- (영문) Golang Lambda 소스를 사용한 AWS AppSync GraphQL API
- (영문) AWS Amplify JavaScript 라이브러리.
— Jeff;