我想通过Lambda
部署API-gateway
+ CloudFront
+ serverless framework
。
Lambda
中定义API-gateway
可以部署 function
和serverless.yml
,对于CloudFront
,我定义resources
。
但是,对于CloudFront
,我必须定义DomainName
属性,该属性应由尚未部署的API-gateway
端点填充。
Resources:
ApiDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
Origins:
- Id: ApiGateway
DomainName: "api-gateway endpoint"
结果,我必须遵循这些步骤。
Lambda
+ API-gateway
。API-gateway
端点。CloudFront
资源添加到serverless.yml
,其DominName
属性指向API-gateway
端点。CloudFront
。有什么办法可以一次全部部署(CloudFront
+ API-gateway
+ Lambda
)?
(但我不想提供API-gateway
DNS)
答案 0 :(得分:1)
您可以使用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's页面。
答案 1 :(得分:1)
您可以引用无服务器创建的任何资源,使用的方式与在cloudformation中引用资源的方式相同。
无服务器框架创建cloudformation模板以进行部署 -SLS包 -cd .serverless -cat cloudformation-template-update-stack.json
您可以获得sls为您创建的资源的名称
DomainName:
Fn::Join:
- "."
- - Ref: ApiGatewayRestApi
- execute-api
- - Ref: AWS::Region
- amazonaws.com