AppSync용 맞춤 도메인 이름을 설정하는 방법
7321 단어 serverlessgraphqlawsappsync
멋진 새 AppSync API는
XYZ.appsync-api.us-east-1.amazonaws.com/graphql
에서 사용할 수 있지만 dev.example.com/graphql
가 훨씬 더 기억하기 쉽고 유익하기 때문에 사람들이 대신 자체 도메인을 사용하기를 원합니다.이 게시물에서는 이를 수행할 수 있는 두 가지 방법을 살펴보겠습니다.
클라우드프론트
이것이 제가 선호하는 방식입니다. 설정하기 쉽고 실행 비용이 저렴합니다.
AppSync API 리소스가
GraphQlApi
라고 가정합니다(서버리스 프레임워크에서 serverless-appsync-plugin을 사용하는 경우 이것이 사용할 논리 ID입니다). 트래픽을 AppSync API로 라우팅하도록 구성해야 하는 CloudFormation 리소스입니다.AppSyncDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
Origins:
- Id: AppSync
DomainName:
Fn::Select:
- '2'
- Fn::Split:
- "/"
- Fn::GetAtt:
- GraphQlApi
- GraphQLUrl
CustomOriginConfig:
HTTPPort: 80
HTTPSPort: 443
OriginProtocolPolicy: https-only
OriginSSLProtocols:
- TLSv1
- TLSv1.1
- TLSv1.2
OriginPath: ''
Enabled: true
HttpVersion: http2
Comment: CloudFront distribution for the Patient AppSync API
Aliases:
- <INSERT DOMAIN NAME HERE, e.g. dev.example.com>
PriceClass: PriceClass_100
DefaultCacheBehavior:
AllowedMethods:
- HEAD
- OPTIONS
- GET
- DELETE
- POST
- PUT
- PATCH
CachedMethods:
- HEAD
- OPTIONS
- GET
ForwardedValues:
QueryString: true
Headers:
- x-api-key
- Authorization
Cookies:
Forward: all
MinTTL: 0
DefaultTTL: 0
TargetOriginId: AppSync
ViewerProtocolPolicy: redirect-to-https
Compress: true
CustomErrorResponses: []
ViewerCertificate:
AcmCertificateArn: <INSERT ARN HERE>
SslSupportMethod: sni-only
Serverless framework 을 사용하는 경우 serverless-appsync-cloudfront 플러그인도 확인해야 합니다. 그것은 당신을 위해 일을 훨씬 쉽게 만들 수 있습니다. 그러나 작성 당시에는 앞서 언급한
GraphQlApi
와 함께 사용하기 위해 AppSync API의 논리적 ID(예상serverless-appsync-plugin
)를 가정합니다.API 게이트웨이
이를 수행할 수 있는 또 다른 방법은 API 게이트웨이를 사용하는 것입니다. 트래픽을 AppSync API로 라우팅하는 HTTP 프록시를 설정한 다음 API Gateway에서 사용자 지정 도메인 이름을 구성할 수 있습니다.
CloudFront를 사용할 때보다 이 접근 방식은 설정하는 데 더 많은 작업이 필요하며 모든 요청이 API 게이트웨이를 거쳐야 하기 때문에 CloudFront를 사용할 때보다 더 많은 비용과 대기 시간이 발생합니다.
서버리스 프레임워크를 사용하는 경우 또 다른 걸림돌은 Lambda 함수 없이 API 게이트웨이를 쉽게 선언할 수 없다는 것입니다. 다행히 SAM의 매크로
AWS::Serverless-2016–10–31
를 에서와 같이 serverless.yml
로 가져오면 이 문제를 해결할 수 있습니다. 이를 통해 SAM의AWS::Serverless::Api 리소스 유형을 사용하여 API 게이트웨이를 구성할 수 있습니다.ApiGateway:
Type: AWS::Serverless::Api
Properties:
Name: AppSyncApiProxy
StageName: dev
OpenApiVersion: "3.0.1"
DefinitionBody:
openapi: "3.0.1"
paths:
/{proxy+}:
"x-amazon-apigateway-any-method":
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: proxy
in: path
required: true
type: string
x-amazon-apigateway-integration:
uri:
Fn::Join:
- ''
- - 'https://'
- Fn::Select:
- '2'
- Fn::Split:
- "/"
- Fn::GetAtt:
- GraphQlApi
- GraphQLUrl
- '/{proxy}'
passthroughBehavior: when_no_match
httpMethod: ANY
type: http_proxy
requestParameters:
integration.request.path.proxy : method.request.path.proxy
EndpointConfiguration: REGIONAL
ApiGatewayDomainName:
Type: AWS::ApiGateway::DomainName
Properties:
DomainName: <INSERT DOMAIN NAME>
EndpointConfiguration:
Types:
- REGIONAL
RegionalCertificateArn: <INSERT ARN HERE>
ApiGatewayBasePathMapping:
Type: AWS::ApiGateway::BasePathMapping
DependsOn:
- ApiGatewayDomainName
Properties:
DomainName: <INSERT DOMAIN NAME>
RestApiId: !Ref ApiGateway
Stage: !Ref ApiGateway.Stage
여기서 주목해야 할 한 가지는 기본적으로 SAM이
Stage
라는 API 게이트웨이 단계를 생성한다는 것입니다. 이는 SAM의 오래된 버그인 것으로 보이며 해결 방법은 OpenApiVersion
를 3.0.1
로 설정하는 것입니다.Route53
이 두 접근 방식의 마지막 단계로 호스팅 영역에서 이들에 대한 Route53 레코드를 구성해야 합니다.
CloudFront의 경우 다음과 같은 것이 필요합니다.
API 게이트웨이의 경우 사용자 지정 도메인(API 게이트웨이에서)에 대한
API Gateway domain name
를 캡처하고 이에 대해 Route53 레코드를 구성해야 합니다.CloudFormation을 사용하여 이를 구성할 수도 있습니다.
요약
이 두 접근 방식을 모두 사용하여 AppSync에 대한 사용자 지정 도메인 이름(예:
dev.example.com
)을 생성할 수 있습니다. 발신자는 dev.example.com/graphql
를 통해 AppSync API에 액세스할 수 있으며 훨씬 더 사용자 친화적이고 기억하기 쉽습니다.위에서 언급했듯이 CloudFront 접근 방식을 선호하는 이유는 구성이 더 쉽고 비용 오버헤드가 무시할 수 있을 정도이기 때문입니다.
실습 튜토리얼을 통해 GraphQL 및 AppSync를 배우고 싶다면 제 new AppSync course에서 AppSync, Lambda, DynamoDB, Cognito 및 Vue.js의 조합을 사용하여 Twitter 복제본을 빌드하는 방법을 확인하십시오. 다양한 GraphQL 모델링 기술, 리졸버 디버깅 방법, CI/CD, 모니터링 및 경고 등에 대해 배우게 됩니다.
Reference
이 문제에 관하여(AppSync용 맞춤 도메인 이름을 설정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-heroes/how-to-set-up-custom-domain-names-for-appsync-143g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)