Добавление и обновление записей DNS в Route 53 в Cloudfront с помощью Serverless Framework

В настоящее время я работаю над расширением этого репо. Он содержит исходный код для развертывания веб-приложения sapper / svelte с Serverless Framework на AWS. Я думаю о том, как расширить serverless.yml, чтобы включить маршрутизацию DNS Route53 в Cloudfront, но я не могу осмыслить это. Плагин serverless-domain-manager, похоже, разработан для Route53 to API Gateway маршрутизации, но я развертываю свое приложение только с Cloudfront, корзиной S3 и обработчиком Lambda @ Edge, выполняющим рендеринг приложения на стороне сервера.


person SearchingSolutions    schedule 20.08.2019    source источник


Ответы (1)


Я сделал нечто подобное здесь >.

Я обрезал serverless.yml для соответствующих частей:

WebAppCloudFrontDistribution:
    Type: AWS::CloudFront::Distribution
    DependsOn:
      - WebAppS3Bucket
    Properties:
    DistributionConfig:
        ### content trimmed
        Aliases:
          - 'www.example.com'
        ### content trimmed
        ViewerCertificate:
          AcmCertificateArn: 'CertificateArn' # in the linked repo I'm using a plugin to auto generate the certificate
          SslSupportMethod: sni-only
WebsiteDNSName:
    Type: AWS::Route53::RecordSetGroup
    Properties:
    HostedZoneId: 'HostedZoneId' # Taken from the AWS Console
    RecordSets:
      - Name: 'www.example.com'
        Type: A
        AliasTarget:
            HostedZoneId: Z2FDTNDATAQYW2
            DNSName: !GetAtt [WebAppCloudFrontDistribution, DomainName]
            EvaluateTargetHealth: false
person Erez    schedule 21.08.2019
comment
Простите за очень поздний ответ, но когда я добавляю ваш фрагмент из репозитория в свой проект, я получаю следующее предупреждение во время развертывания: A valid file to satisfy the declaration 'file(certinfo.yml):CertificateArn' could not be found.. Почему это не работает? (Обнаружен в месте получения сертификата зрителя, AcmCertificateArn: ${file(${self:custom.cert}):CertificateArn}). - person SearchingSolutions; 31.08.2019
comment
Вам нужно будет запустить serverless create-cert --stage $STAGE, чтобы сначала создать файл сертификата с помощью подключаемого модуля. Вы увидите предупреждение при запуске serverless create-cert, но можете проигнорировать его, поскольку файл будет сгенерирован после выполнения команды. Затем, как только вы запустите serverless deploy, файл станет доступен. - person Erez; 31.08.2019
comment
Мне любопытно: как я могу сделать так, чтобы без сервера перенаправлял example.com на www.example.com? - person SearchingSolutions; 01.09.2019
comment
Я думаю, вы сможете использовать - Name: 'example.com' - person Erez; 01.09.2019