Amplify+AppSyncの話です。
AppSyncのフィールドにリゾルバを付けるに当たって、少し詰まったので備忘録
Amplify push
でAPIを作っていく際、amplify/backend/api/appName/stacks
配下にCloudFormationのテンプレートを置かないと、AppSyncのコンソールからリゾルバを追加してもAmplify push
を叩いたタイミングで消えちゃいます。
なんでamplify/backend/api/appName/stacks
配下にリゾルバ追加用のテンプレートを追加することに
下記のようなスキーマのhoge
にリゾルバを当てたい場合、
type Sample @model{
hoge: String!
huga: String!#こいつにリゾルバを当てたい
hogehoge: String!
}
CloudFormationのテンプレートで追加する場合、"Resources"の下に下記を追加することで
Amplify push
時にリゾルバを追加することができました。
"hugaField": {
"Type": "AWS::AppSync::Resolver",
"Properties": {
"ApiId": {
"Ref": "AppSyncApiId"
},
"DataSourceName": "SampleTable",
"TypeName": "Sample",
"FieldName": "huga",
"RequestMappingTemplateS3Location":"リクエストマッピングテンプレート",
"ResponseMappingTemplateS3Location":"レスポンスマッピングテンプレート"
}
}
CloudFormationからQueryにリゾルバを付与するやり方を考えてみれば当たり前のことでした。。