尝试使用AWS的API Gateway + Lambda来实现GraphQL

在研究如何在无服务器架构中使用GraphQL时,我发现了serverless framework的一个示例,所以我打算运行一下看看。

无服务器的GraphQL API


    インストール

安装Serverless框架,并安装Serverless-GraphQL-API。

npm install serverless -g
git clone https://github.com/boazdejong/serverless-graphql-api
cd serverless-graphql-api
npm install

资源的区域设置为默认值(us-east-1)。
如果需要,请将serverless.yml的区域修改为运行的区域。

      6 provider:
      7   name: aws
      8   runtime: nodejs4.3
      9   iamRoleStatements:
     10     - Effect: Allow
     11       Action: 
     12         - dynamodb:DescribeTable
     13         - dynamodb:Query
     14         - dynamodb:Scan
     15         - dynamodb:GetItem
     16         - dynamodb:PutItem
     17         - dynamodb:UpdateItem
     18         - dynamodb:DeleteItem
     19       Resource: arn:aws:dynamodb:us-east-1:*:*

如果要将区域更改为东京区域,请在第9行添加 region: ap-northeast-1,将第19行中的us-east-1更改为ap-northeast-1。


    デプロイ
npm run deploy

当部署完成部署后,将输出如下内容。

Serverless: Stack update finished...
Service Information
service: graphql-api
stage: dev
region: us-west-1
api keys:
  None
endpoints:
  POST - https://xxxxxxx.execute-api.us-west-1.amazonaws.com/dev/graphql
functions:
  graphql: graphql-api-dev-graphql

Stack Outputs
GraphqlLambdaFunctionQualifiedArn: arn:aws:lambda:us-west-1:nnnnnnnnnn:function:graphql-api-dev-graphql:2
ServiceEndpoint: https://xxxxxxx.execute-api.us-west-1.amazonaws.com/dev
ServerlessDeploymentBucketName: graphql-api-dev-serverlessdeploymentbucket-xxxxxxxxx 

请使用应用程序GraphiQL.app等访问Service Information的endpoints,并确认其正常工作。

这次尝试的是一个使用Apollo的graphql-server-lambda架构实现的无服务器GraphQL API。

广告
将在 10 秒后关闭
bannerAds