首页 > 解决方案 > 一次通过无服务器框架部署 Lambda + API-gateway + CloudFront

问题描述

我想通过Lambda++API-gateway部署。CloudFrontserverless framework

Lambda并且API-gateway可以通过定义functioninserverless.yml和 for CloudFrontI define来部署resources

但是,对于CloudFront,我必须定义DomainName应该用API-gateway尚未部署的端点填充的属性。

Resources:
  ApiDistribution:
    Type: AWS::CloudFront::Distribution
    Properties:
      DistributionConfig:
        Origins:
        - Id: ApiGateway
          DomainName: "api-gateway endpoint"

结果,我必须按照步骤操作。

  1. 部署Lambda+ API-gateway
  2. 检查API-gateway端点。
  3. CloudFront资源添加到指向端点serverless.yml的属性中。DominNameAPI-gateway
  4. 部署CloudFront.

有没有办法一次部署所有(CloudFront++ API-gatewayLambda?(但我不想给API-gatewayDNS)

标签: amazon-web-servicesserverless-framework

解决方案


您可以使用serverless-api-cloudfront它自动创建正确配置的 AWS CloudFront 分配,将流量路由到 API Gateway。要使用它,很简单,您必须使用 安装它npm i --save-dev serverless-api-cloudfront,然后您必须在serverless.yml文件中添加:

plugins:
  - serverless-api-cloudfront

custom:
  apiCloudFront:
    domain: my-custom-domain.com
    certificate: arn:aws:acm:us-east-1:000000000000:certificate/00000000-1111-2222-3333-444444444444
    waf: 00000000-0000-0000-0000-000000000000
    compress: true
    logging:
      bucket: my-bucket.s3.amazonaws.com
      prefix: my-prefix
    cookies: none
    headers:
      - x-api-key
    querystring:
      - page
      - per_page

如果你想了解它是如何工作的,以及其他可能的配置,你可以访问他们的Github页面。


推荐阅读