-
Notifications
You must be signed in to change notification settings - Fork 0
/
cloudformation.yml
101 lines (93 loc) · 2.68 KB
/
cloudformation.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
AWSTemplateFormatVersion: '2010-09-09'
Resources:
AppSyncGraphQLApi:
Type: AWS::AppSync::GraphQLApi
Description: AppSync GraphQLApi
Properties:
AuthenticationType: API_KEY
Name: AWSAppSyncBackendCoolChatAPI
AppSyncApiKey:
Type: AWS::AppSync::ApiKey
Properties:
ApiId: !GetAtt AppSyncGraphQLApi.ApiId
NoneAppSyncDataSource:
Type: AWS::AppSync::DataSource
Properties:
ApiId: !GetAtt AppSyncGraphQLApi.ApiId
Name: NoneAppSyncDataSource
Description: AppSync none data source
Type: NONE
### Definition of SchemaGraphQL
AppSyncGraphQLSchema:
Type: AWS::AppSync::GraphQLSchema
DependsOn: AppSyncGraphQLApi
Properties:
ApiId: !GetAtt AppSyncGraphQLApi.ApiId
Definition: |
type Message {
author: String!
dateTime: AWSDateTime!
content: String!
}
type Query {
oldMessages: [Message!]
}
type Mutation {
sendMessage(author: String!, content: String!): Message!
}
type Subscription {
sentMessage: Message
@aws_subscribe(mutations: ["sendMessage"])
}
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
QueryOldMessagesAppSyncResolver:
Type: AWS::AppSync::Resolver
DependsOn: AppSyncGraphQLSchema
Properties:
ApiId: !GetAtt AppSyncGraphQLApi.ApiId
FieldName: oldMessages
TypeName: Query
DataSourceName: !GetAtt NoneAppSyncDataSource.Name
RequestMappingTemplate: |
{
"version": "2017-02-28",
"payload": ""
}
ResponseMappingTemplate: |
#set($messages = [])
$util.qr($messages.add({
"author": "Pedro",
"content": "Hello World",
"dateTime": "2019-07-27T10:06:00Z"
}))
$util.qr($messages.add({
"author": "arantespp",
"content": "Hi, Pedro",
"dateTime": "2019-07-27T10:16:02Z"
}))
$util.toJson($messages)
MutationSendMessageAppSyncResolver:
Type: AWS::AppSync::Resolver
DependsOn: AppSyncGraphQLSchema
Properties:
ApiId: !GetAtt AppSyncGraphQLApi.ApiId
FieldName: sendMessage
TypeName: Mutation
DataSourceName: !GetAtt NoneAppSyncDataSource.Name
RequestMappingTemplate: |
{
"version": "2017-02-28",
"payload": $utils.toJson($ctx.args)
}
ResponseMappingTemplate: |
#set($ctx.result.dateTime = $util.time.nowISO8601())
$util.toJson($ctx.result)
Outputs:
ApiKey:
Value: !GetAtt AppSyncApiKey.ApiKey
Url:
Value: !GetAtt AppSyncGraphQLApi.GraphQLUrl