Моя идея - создать один CloudFront для множества ветвей функций.
CloudFront(created on AWS console)
/ \
feature_branch1 feature_branch2
Пример:
Я создал CloudFront с именем cname example.com
, и для каждой новой развернутой ветви я создам новый источник и шаблон пути. Так что, когда я нажму example.com/feature_branch_name, он будет знать, какой сегмент S3 ударить. Пока что я создал его вручную и отлично работает, но я не знаю, как объявить этот CloudFront в моем serverless.yaml
Это мой AWS::CloudFront::Distribution
:
WebAppCloudFrontDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
Comment: Courier Phoenix - ${env:BRANCH}
Origins:
- DomainName: example-${env:BRANCH}-assets.s3.amazonaws.com
Id: example-${env:BRANCH}-assets
S3OriginConfig: {}
- DomainName: ${self:custom.apiEndpoint}
Id: example-${env:BRANCH}-lambda
OriginPath: '/${env:BRANCH}'
CustomOriginConfig:
OriginProtocolPolicy: https-only
Enabled: 'true'
HttpVersion: http2
DefaultCacheBehavior:
DefaultTTL: 120
Compress: 'true'
TargetOriginId: example-${env:BRANCH}-lambda
ViewerProtocolPolicy: redirect-to-https
ForwardedValues:
QueryString: 'false'
Cookies:
Forward: none
CacheBehaviors:
- AllowedMethods:
- GET
- HEAD
TargetOriginId: example-${env:BRANCH}-assets
Compress: 'true'
PathPattern: '/_next/static/*'
ForwardedValues:
QueryString: 'false'
Cookies:
Forward: none
ViewerProtocolPolicy: redirect-to-https
- AllowedMethods:
- GET
- HEAD
TargetOriginId: example-${env:BRANCH}-assets
Compress: 'true'
PathPattern: '/static/*'
ForwardedValues:
QueryString: 'false'
Cookies:
Forward: none
ViewerProtocolPolicy: redirect-to-https