Top View


Author Choi Jiho

AWS Amplifyを使ってみて感じたこと1

2023/08/31

Amplifyのapiは楽

  • DynamoDBを使いますが、HasManyぽい挙動ができます。schema.graphqlに以下を書くとHasManyのように利用できます

    type Table1
      @model {
      id: ID!
      group: String!
      name: String!
      table2s: [Table2]
        @hasMany(indexName: "table2sByTable1", fields: ["id"])
    }
    
    type Table2
      @model {
      id: ID!
      group: String!
      Table1Id: ID!
        @index(name: "table2sByTable1", sortKeyFields: ["name"])
      name: String!
    }
    
  • 「Cognitoでログインしたユーザーだけxxさせる」とか簡単に作れます

    type Mutation {
      createSome(
        someParam: String
      ): createSomeResponse
        @function(name: "createSome-${env}")
        @auth(rules: [{ allow: private, provider: userPools }])
    }
    
  • 「特定Cognitoグループだけxxさせる」とか簡単に作れます

    type Table1
      @model
      @auth(rules: [{ allow: groups, groupsField: "group" }]) {
      id: ID!
      group: String!
      name: String!
    }
    
  • Next.jsが参照できるGraphQLファイルを自動生成してくれます、TypeScriptのtypeも自動生成してくれます

  • Next.js側でsubscribeが簡単にできます。例題コードは公式の方でも確認できます。

Amplifyのapiでよくない

  • depthの設定をちゃんとしないとHasManyを全部取得できません。defaultは2なので、値取得したら「あれ?切れた?」になります

    • 以下のように子供のモデル名にitemsがnestされます。

    • これが孫ぐらいになったら以下の maxDepth を増やす必要があります。

  • Next.js側で自動生成してくれるGraphQLやTypeScriptのtypeを使うためディレクトリ構成調整が必要

    • 赤線のところが追加されます。よってNext.jsのディレクトリ構成も少し調整が必要です

Amplifyのstorageで楽

  • 1つまでならすく追加できます

Amplifyのstorageでよくない

  • 2つ以上作れない。Amplifyの仕様かと思われます。

    • customでCDKかCloudFormationを使って2つ以上作ることができます

次回は

function、custom、override、その他に関して書きます

Choi Jiho

Choi Jiho

Company : Fusic CO., LTD Program Language : PHP, Go, Ruby