[英]AWS deploy Cloudfront with api gateway
最近我试图部署一个 lambda function 和一个 Cloudfront 发行版以及一个带有 SAM 的 CloudFormation yaml 模板。 但是,由于在实际部署之前我没有 API 网关的 ID,因此我被 CloudFormation 中的DomainName
卡住了。
因此,我尝试使用 .Sub .Sub "${ServerlessRestApi}.execute-api:${AWS:.Region}.amazonaws.com/Prod/"
作为DomainName
将 API 网关与 CF 分发链接,但我得到以下信息错误:
Resource handler returned message: "Invalid request provided: The parameter origin name must be a domain name.
我的代码如下所示:
AWSTemplateFormatVersion: 2010-09-09
Description: >-
cf-apigw-lambda-dynamodb
Transform:
- AWS::Serverless-2016-10-31
Resources:
getHeadersFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/get-items.getItemsHandler
Runtime: nodejs14.x
Architectures:
- x86_64
MemorySize: 128
Timeout: 100
Description: Get all items
Events:
Api:
Type: Api
Properties:
Path: /items
Method: GET
CloudfrontDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
Origins:
- DomainName: !Sub "${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
Id: ApiOrigin
CustomOriginConfig:
HTTPPort: 80
HTTPSPort: 443
OriginProtocolPolicy: https-only
Enabled: true
DefaultCacheBehavior:
TargetOriginId: ApiOrigin
ViewerProtocolPolicy: redirect-to-https
CachePolicyId: c17edf1f-cb61-49d6-979d-39f05ba95f91
OriginRequestPolicyId: c57eds1f-c8d1-4544-b8ce-6f4307e30d2e
Outputs:
WebEndpoint:
Description: "API Gateway endpoint URL for Prod stage"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
您不能在DomainName
中包含/Prod/
DomainName: !Sub "${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.