AWS AppSync
AWS AppSync (appsync) on fakecloud: the complete 74-operation surface (100% conformance) — GraphQL APIs, data sources, resolvers, functions, schema types, API caches, domain names, Event APIs, and source-API associations. restJson1.
fakecloud implements AWS AppSync as a restJson1 service. All 74 operations ship with 100% conformance against AWS's own Smithy model, backed by account-partitioned state that persists across restarts in persistent mode. AppSync signs SigV4 with the appsync scope; every operation is a RESTful <METHOD> /v1|/v2/... route with path labels (e.g. POST /v1/apis, GET /v1/apis/{apiId}, POST /v1/apis/{apiId}/types/{typeName}/resolvers), routed by its HTTP method and @http URI template.
This is a faithful control plane + schema state, not a set of stubs: every resource is created, stored, and read back with the exact wire shapes AWS returns, and every sub-resource operation validates its parent API.
GraphQL APIs
CreateGraphqlApimints anapiId, anarn:aws:appsync:<region>:<account>:apis/<apiId>ARN, the GRAPHQL + REALTIME endpointuris(and matchingdns), and echoes the auth configuration for any of the five authentication types —API_KEY,AWS_IAM,AMAZON_COGNITO_USER_POOLS,OPENID_CONNECT,AWS_LAMBDA— includingadditionalAuthenticationProviders,userPoolConfig,openIDConnectConfig,lambdaAuthorizerConfig,logConfig, and the introspection / query-depth / resolver-count limits.GetGraphqlApi/ListGraphqlApis/UpdateGraphqlApi/DeleteGraphqlApiround-trip the stored API. Deleting an API cascades to its keys, data sources, resolvers, functions, types, cache, schema, and environment variables.
Sub-resources
- API keys (
CreateApiKey/ListApiKeys/UpdateApiKey/DeleteApiKey) withexpires/deletesepoch bounds. - Data sources (
CreateDataSource/Get/List/Update/Delete) for everyDataSourceType—AWS_LAMBDA,AMAZON_DYNAMODB,AMAZON_OPENSEARCH_SERVICE,AMAZON_ELASTICSEARCH,HTTP,RELATIONAL_DATABASE,AMAZON_EVENTBRIDGE,AMAZON_BEDROCK_RUNTIME,NONE— with the type-specific config (dynamodbConfig,lambdaConfig,httpConfig, ...) echoed verbatim. - Resolvers (
CreateResolver/Get/List/ListResolversByFunction/Update/Delete) attached to atype.field,UNITorPIPELINEkind, with VTL request/response mapping templates orAPPSYNC_JScode+runtime. - Functions (
CreateFunction/Get/List/Update/Delete). - Schema types (
CreateType/Get/List/Update/Delete), SDL or JSONformat. - API caches (
CreateApiCache/Get/Update/Delete/FlushApiCache) and environment variables (PutGraphqlApiEnvironmentVariables/GetGraphqlApiEnvironmentVariables). - Custom domain names (
CreateDomainName/Get/List/Update/Delete) and API associations (AssociateApi/GetApiAssociation/DisassociateApi). - Event APIs (
CreateApi/GetApi/ListApis/UpdateApi/DeleteApi) and channel namespaces (CreateChannelNamespaceand its Get/List/Update/Delete). - Source-API associations (
AssociateSourceGraphqlApi/AssociateMergedGraphqlApi/GetSourceApiAssociation/ListSourceApiAssociations/UpdateSourceApiAssociation/DisassociateSourceGraphqlApi/DisassociateMergedGraphqlApi/StartSchemaMerge/ListTypesByAssociation).
Schema lifecycle
StartSchemaCreation ingests a base64-encoded SDL schema document and stores it. GetSchemaCreationStatus settles the async lifecycle from PROCESSING to SUCCESS on read (the same state-machine-on-read pattern other async fakecloud operations use). GetIntrospectionSchema returns a representation derived from the stored SDL: the SDL verbatim for format=SDL, or a deterministic JSON projection listing the declared type names for format=JSON.
Validation and errors
Model-derived validation rejects contract violations with the error codes each operation declares — BadRequestException universally (missing required members, out-of-range integers, invalid enums, over-length strings), plus NotFoundException (a sub-resource op whose parent API — or the addressed resource — does not exist), ConcurrentModificationException, and ConflictException (a duplicate channel namespace). State is account-partitioned and persists across restarts in persistent mode.
Honest limitations
- GraphQL query execution is not implemented. fakecloud models the AppSync control plane and schema state; it does not resolve GraphQL queries or subscriptions against the configured data sources. This is the faithful control plane such an execution engine would build on, and it is a candidate for a later batch.
EvaluateCode/EvaluateMappingTemplaterun a documented evaluation subset. They validate that the code/template and thecontextare well-formed and deterministically render the context'sarguments(the overwhelmingly common$util.toJson($ctx.arguments)shape), returning the model'serroroutput member on a malformed context. They do not run a full VTL orAPPSYNC_JSinterpreter.- Data-source introspection (
StartDataSourceIntrospection/GetDataSourceIntrospection) returns job metadata; it does not introspect a live relational database.