Как мне объявить CloudFront внутри serverless.yaml, который Ii создал на консоли AWS? - PullRequest
0 голосов
/ 12 октября 2019

Моя идея - создать один 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
...