AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: Notify subscribers of database updates Parameters: CognitoUserPoolName: Type: String Default: "ServerlessPatternsCognitoUserPool" CognitoUserPoolClientName: Type: String Default: "ServerlessPatternsCognitoUserPoolClient" AppSyncName: Type: String Default: "ServerlessPatternsAppsync" # AuthStack parameters Client: Description: Client website for authentication redirects and cors (must start with https://) Type: String Default: https://myapp.com Resources: # Creates a nested stack with the required Cognito requirements AuthStack: Type: AWS::Serverless::Application Properties: Location: ./auth.yaml Parameters: ClientDomain: !Ref Client GraphQLApi: ## AppSync API Type: AWS::AppSync::GraphQLApi Properties: Name: !Ref AppSyncName AuthenticationType: AMAZON_COGNITO_USER_POOLS UserPoolConfig: UserPoolId: !GetAtt AuthStack.Outputs.UserPoolId AwsRegion: !Sub "${AWS::Region}" DefaultAction: ALLOW AdditionalAuthenticationProviders: - AuthenticationType: API_KEY - AuthenticationType: AWS_IAM GraphQLApiKey: ## API Key for AppSync Type: AWS::AppSync::ApiKey Properties: ApiId: !GetAtt GraphQLApi.ApiId GraphQLSchema: ## Schema for sample backend for frontend Type: AWS::AppSync::GraphQLSchema Properties: ApiId: !GetAtt GraphQLApi.ApiId DefinitionS3Location: "./schema.graphql" NoneDataSource: ## Local data source for AppSync Type: AWS::AppSync::DataSource Properties: ApiId: !GetAtt GraphQLApi.ApiId Name: NoneDataSource Type: NONE PublishStatusUpdateMutationResolver: ## Resolver for putStatusUpdate mutation Type: AWS::AppSync::Resolver Properties: ApiId: !GetAtt GraphQLApi.ApiId TypeName: Mutation FieldName: publishStatusUpdate DataSourceName: !GetAtt NoneDataSource.Name RequestMappingTemplate: | { "version": "2018-05-29", "payload": $util.toJson($ctx.args) } ResponseMappingTemplate: | $util.toJson($ctx.result) Outputs: AppSyncEndpoint: Value: !GetAtt GraphQLApi.GraphQLUrl Description: The https endpoint of an AppSync API AppSyncApiId: Value: !GetAtt GraphQLApi.ApiId Description: The id of an AppSync API AppSyncApiKey: Value: !GetAtt GraphQLApiKey.ApiKey Description: The apikey of an AppSync API