Choi Jiho
AWS Amplifyを使ってみて感じたこと1
2023/08/31
Table of Contents
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
Company : Fusic CO., LTD Program Language : PHP, Go, Ruby