Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HIGOBASHI.AWS 第5回「AngularとAWS AppSyncで作るサーバーレスア...

HIGOBASHI.AWS 第5回「AngularとAWS AppSyncで作るサーバーレスアプリケーション」

HIGOBASHI.AWSで発表したスライドです。

yuji nishimura

July 27, 2018
Tweet

More Decks by yuji nishimura

Other Decks in Technology

Transcript

  1. ♣自己紹介   • 西村祐二(27) • サーバーレス開発部所属 • 元情シス、インフラエンジニア •

    入社1年2ヶ月 • AWS歴1年2ヶ月 • 東京から大阪にUターン転職 • 前職はISPの会社で顧客システムの運用・保守
  2. リクエスト例   query { getBlog( id:”1” ){ title category

    } } サーバ側 クライアント レスポンス type Query { getBlog(id:ID):[blog] } type blog { id: ID! author: String title: String category: String createdAt: Int! } } スキーマ、型定義 { “title”: “hoge”, “category”: “AWS” } 必要な情報だけ リクエスト リクエストした データのみ返却
  3. 例   ‣デモアプリのリゾルバ(リクエスト) ‣mutationがきたら、DynamoDBで UpdateItemするようにリゾルバ設定してい るだけ { "version" :

    "2017-02-28", "operation" : "UpdateItem", "key" : { "id" : { "S" : "${context.arguments.id}" } }, "update" : { "expression" : "ADD #votefield :plusOne", "expressionNames" : { "#votefield" : "vote" }, "expressionValues" : { ":plusOne" : { "N" : 1 } } } }
  4. AWS AppSyncの制限(2018/7/27時点)   リソース デフォルト制限 リージョンあたりのAPIの最大数 アカウントあたり25 APIキーの最大数 APIあたり50

    スキーマドキュメントの最大サイズ 1MB GraphQLクエリの最大実行時間 10秒(APG29秒) req/resのマッピングテンプレートの 最大サイズ 64KB サブスクリプションの 最大ペイロードサイズ 128KB マッピングテンプレートにおける foreach…endループの最大数 1,000
  5.   ϦιʔελΠϓ આ໌ "84"QQ4ZOD(SBQI2-"QJ σʔλιʔεͷ؍఺Ͱɺ"QQ4ZOD"1*Λఆٛ "84"QQ4ZOD"QJ,FZ σʔλιʔεʹΞΫηε͢ΔͨΊʹඞཁͳ ΞΫηεΩʔΛఆٛ "84"QQ4ZOD(SBQI2-4DIFNB

    (SBQI2-εΩʔϚΛఆٛ "84"QQ4ZOD%BUB4PVSDF σʔλιʔεΛఆٛ "84"QQ4ZOD3FTPMWFS εΩʔϚͱσʔλιʔεΛࢀর͢Δ͜ͱʹ ΑΓϦκϧόΛఆٛ
  6.   ‣テンプレートの中にスキーマが混在するので メンテナンス時のことを考慮する必要あり AppSyncSchema: Type: "AWS::AppSync::GraphQLSchema" DependsOn: - AppSyncGraphQLApi

    Properties: ApiId: !GetAtt AppSyncGraphQLApi.ApiId Definition: | schema { query: Query mutation: Mutation } type Query { singlePost(id: ID!): Post allPosts: [Post] } type Mutation { putPost(id: ID!, title: String!): Post }
  7. ログの設定   ‣Cloudformationでも有効にできるので設定 にしておく ‣ログレベルも設定可能 Type: "AWS::AppSync::GraphQLApi" Properties: UserPoolConfig:

    UserPoolConfig OpenIDConnectConfig : OpenIDConnectConfig Name: String AuthenticationType: String LogConfig: LogConfig CloudWatchLogsRoleArn: String FieldLogLevel: String