我想通过Lambda
+ API-gateway
+ CloudFront
部署serverless framework
。
Lambda
和API-gateway
可以通过在serverless.yml
中定义function
来部署,而对于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)
发布于 2018-06-19 15:18:13
您可以使用serverless-api-cloudfront
,它自动创建正确配置的AWS CloudFront发行版,将流量路由到API。要使用它,很简单,您必须使用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页面。
发布于 2019-05-15 12:18:47
您可以引用由无服务器创建的任何资源,方法与在cloudformation中引用它们的方式相同。
Serverless框架创建要部署的cloudformation模板- Sls包- cd .serverless - cat cloudformation template -update-stack.json
您可以获得sls为您创建的资源的名称。
DomainName:
Fn::Join:
- "."
- - Ref: ApiGatewayRestApi
- execute-api
- - Ref: AWS::Region
- amazonaws.com
https://stackoverflow.com/questions/50931730
复制