@ttoss/appsync-api v0.20.4
@ttoss/appsync-api
This package provides a opinionated way to create an AppSync API using @ttoss/graphql-api API.
Installation
pnpm add @ttoss/appsync-api @ttoss/graphql-api graphqlGetting Started
You can create and deploy an AppSync API in four steps:
Create a
schemaComposerobject usinggraphql-compose, that the next steps will use to create the API.Create a
cloudformation.tsfile that exports a CloudFormation template usingcreateApiTemplate:
import { createApiTemplate } from '@ttoss/appsync-api';
import { schemaComposer } from './schemaComposer';
const template = createApiTemplate({
schemaComposer,
dataSource: {
roleArn: {
'Fn::ImportValue': 'AppSyncLambdaDataSourceIAMRoleArn',
},
},
lambdaFunction: {
roleArn: {
'Fn::ImportValue': 'AppSyncLambdaFunctionIAMRoleArn',
},
},
});
export default template;- Create a
lambda.tsfile that exports a Lambda handler function usingcreateAppSyncResolverHandler:
import { createAppSyncResolverHandler } from '@ttoss/appsync-api';
import { schemaComposer } from './schemaComposer';
export const handler = createAppSyncResolverHandler({ schemaComposer });- Add
graphqlto thelambdaExternalsarray oncarlin.yml:
lambdaExternals:
- graphqlNow you can deploy your API using carlin deploy:
carlin deployAPI
Resolvers Context
The createAppSyncResolverHandler function adds the context object to the resolvers. This object contains the following properties:
handler- AWS Lambda context object.request- AppSync request object (see Request section).identity- AppSync identity object (see Identity section).
Custom domain name
You can add a custom domain name to your API using the customDomain option.
import { createApiTemplate } from '@ttoss/appsync-api';
export const handler = createApiTemplate({
schemaComposer,
customDomain: {
domainName: 'api.example.com', // required
certificateArn: {
'Fn::ImportValue': 'AppSyncDomainCertificateArn',
}, // required
},
});If your domain is on Route53, you can use the option customDomain.hostedZoneName to create the required DNS records.
import { createApiTemplate } from '@ttoss/appsync-api';
export const template = createApiTemplate({
schemaComposer,
customDomain: {
domainName: 'api.example.com', // required
certificateArn: {
'Fn::ImportValue': 'AppSyncDomainCertificateArn',
}, // required
hostedZoneName: 'example.com.', // optional
},
});8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago