서버 없는 AWS AppSync GraphQL에 대한 설명

11815 단어 aws
서버 없는 AWS 영웅입니다. 오늘 Serverless Days Virtual에서 널리 환영받는 30분 AWS AppSync 강연을 발표했습니다.내가 보기에, 나는 이전에 엉망진창인 서버 없는 GraphQL 강연을 한 적이 있는데, 나는 다음 좋은 강연이 어떤 모습인지 기억하고 싶다.
다음은 그의 강연이다(1시간 54분 시작).
이것은 그의 것이다 slides
이것은 내가 그에 대해 강연한 기록이다.

AppSync에 대한 설명


요구 사항:
  • 짧은 기간
  • 확장 가능
  • 실시간
  • GraphQL을 선택해야 하는 이유


    Facebook/FQL의 표준 기원 이야기입니다.만약 네가 페이스북이 아니라면, 너는 왜 신경을 쓰느냐?
    하면, 만약, 만약...
  • 다중 플랫폼(예를 들어 웹 및 모바일)의 클라이언트는 서로 다른 데이터 수요를 가진다
  • 백엔드는 서로 다른 출처의 클라이언트에게 데이터 서비스를 제공
  • 프런트엔드/백엔드의 복잡한 상태 및 캐시 관리
  • HTTP 폭포로 인한 이동 페이지 속도가 느리다
  • 그런 다음 GraphQL의 특징을 활용할 수 있습니다.
  • 데이터 형태 정의
  • 레벨
  • 강함
  • 하나의 프로토콜일 뿐 스토리지가 지정되어 있지 않음
  • 내 성
  • 무료 버전
  • 쿼리, 돌연변이, 구독 지원
  • 왜 서버가 없습니까?


    따라서 GraphQL을 수동으로 확장/배포하여 백엔드의 모든 부분을 닫을 필요가 없습니다.

    AppSync가 서버 없는 GraphQL에 사용되는 이유


    API 게이트웨이 + AWS Lambda 함수 내에서 GraphQL 백엔드를 작성할 수 있습니다...하지만 AppSync를 사용하면 훨씬 쉽습니다.
    그런 다음 워크플로우는 다음과 같이 됩니다.
  • GraphQL 모드 정의
  • DynamoDB 데이터 소스 및 연결 분석기 자동 제공
  • gql 조회와 돌연변이 작성
  • 프런트엔드
  • 와 연결

    AWS가 AWS AppSync를 사용하는 이유


    AWS 웹 콘솔에서 Guided Schema Wizard AppSync를 설정할 수 있습니다...그러나 IaC 의 경우 Amplify, CloudFormation 또는 CDK를 사용해야 합니다.
    확대 - 모든 설정을 (고급) 3개의 명령으로 축소합니다.
    $ amplify init
    $ amplify add api
    $ amplify push
    
    Amplify CLI 또한 자동으로 조회, 변체, 구독과 유형을 생성하여 전방 응용 프로그램에서 사용할 수 있습니다!
    항상 확대부터 시작하여 CloudFormation 또는 CDK로 이동할 수 있습니다.
    export class AppsyncCdkAppStack extends cdk.Stack {
      constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props);
    
        // Creates the AppSync API
        const api = new appsync.GraphqlApi(this, 'Api', {
          name: 'cdk-notes-appsync-api',
          schema: appsync.Schema.fromAsset('graphql/schema.graphql'),
        });
    
        // Prints out the AppSync GraphQL endpoint to the terminal
        new cdk.CfnOutput(this, "GraphQLAPIURL", {
         value: api.graphqlUrl
        });
      }
    } 
    

    실시간 구독


    AppSync를 사용하면 지정된 데이터의 일부를 실시간으로 사용할 수 있습니다.
    type Subscription {
        addedPost: Post
        @aws_subscribe(mutations: ["addPost"])
        updatedPost: Post
        @aws_subscribe(mutations: ["updatePost"])
        deletedPost: Post
        @aws_subscribe(mutations: ["deletePost"])
    }
    
    그리고 확장성이 있어야 합니다.GraphQL Subscriptions :
    AppSync is load tested up to 10 million active websockets

    검색


    . GraphQL 작업은 단순 검색, 복잡한 검색 및 매핑, 전체 텍스트 검색, 모호/키워드 검색, 심지어AppSync supports Amazon Elasticsearch를 지원합니다.

    지리 검색 기존 백엔드 에이전트


    너는 를 설정할 수 있다. 이렇게 하면 너는 완전히 다시 쓸 필요가 없다.

    AppSync 및 AWS Lambda 해상도 보안: 권한 부여, 역할, 권한


    4가지 authz:

  • 는 미경험증의 API 절류에 사용되며 주로 개발 또는 공공 API에 사용된다.API 키를 365일 간격으로 수동으로 회전합니다.
  • API_KEY

  • AWS_IAM: OIDC를 준수하는 서비스가 제공하는 OpenID 연결(OIDC) 토큰을 강제로 실행합니다.

  • OPENID_CONNECT: Amazon Cognito 사용자 풀에서 제공하는 OIDC 토큰을 강제로 실행합니다.
  • 마지막으로 많은 그룹 기반 컨트롤을 제공하여 응용 프로그램을 다세입자로 만들었다.다른 사용자 그룹에서 사용할 수 있는 필드와 작업을 미세 조정할 수 있습니다.
    type Query {
       posts:[Post!]!
       @aws_auth(cognito_groups: ["Bloggers", "Readers"])
    }
    
    type Mutation {
       addPost(id:ID!, title:String!):Post!
       @aws_auth(cognito_groups: ["Bloggers"])
    }
    
    보다 세분화된 사용 권한을 얻으려면 다음과 같이 하십시오.

  • AMAZON_COGNITO_USER_POOLS(현재 Resolver Mapping Templates 또는 VTL에 쓰여 있지만 다른 옵션은 진행 중입니다.)
  • 재사용 가능 검사(예: 권한 부여 검사) 사용 가능Direct Lambda Resolvers 구성
  • 파이프 분해기 캐시 및 오프라인 데이터 동기화



    나는 이전에 이 글을 쓴 적이 있다. 테스트


    슬로보단은 이것이 미래 회담의 주제라고 말했다.그러나 amplify mock 기본 을 제공합니다.

    부분 시뮬레이션 이벤트 소스/CQR

    client -> mutation -> event storage -> eventbridge -> business logic -> subscription -> back to client를 수행해야 하는 경우 OLAP 워크로드에 사용할 다른 프로세스를 사용합니다.AppSync는 이러한 모든 작업을 처리할 수 있습니다.

    그의 총결산

  • GraphQL로 프런트엔드 및 백엔드 연결이 간편해짐
  • AppSync로 GraphQL 관리가 간편해짐
  • 서버가 없는 GraphQL은 좋은 선택입니다.
  • 초도 주석


    저는 스케치 노트를 좋아합니다!:

    좋은 웹페이지 즐겨찾기