在其他 CloudFormation 资源的 serverless.yml 文件中引用 AWS API 网关的主机名?
Reference AWS API Gateway's hostname within the serverless.yml file for other CloudFormation resources?
-
amazon-web-services
-
amazon-cloudformation
-
aws-api-gateway
-
serverless-framework
-
serverless-architecture
我正在使用无服务器框架创建一个使用 S3、Lambda 和 API 网关的图像大小调整服务。这类似于概念 here,但是这将使用无服务器来设置和配置整个堆栈。
现在我需要找到一种合适的方法来引用 serverless.yml 文件中生成的 API 网关的主机名。这就是我的资源。 (只是一个片段)
imageBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${env:IMAGE_BUCKET}
WebsiteConfiguration:
RoutingRules:
-
RedirectRule:
Hostname: ${HOSTNAME HERE}
HttpRedirectCode: 302
RoutingRuleCondition:
HttpErrorCodeReturnedEquals: 404
它说 ${HOSTNAME HERE} 我需要成为无服务器框架生成的 API 网关 API 的主机名。
现在,我能想到的最好方法是在某处创建一个 CNAME 别名,然后在我的 API 前面使用它。然后我会将该 CNAME 作为环境变量传递进来,然后在此文件中引用它。但这对我来说并不理想。我希望有人能够将这个项目拉下并能够 运行 它只用一个存储桶名称。有没有办法做到这一点?
主机名不直接由 cloudformation 公开,因此您必须从创建资源的输出值构建它。
无服务器框架的所有资源都遵循一定的命名约定:
AWS - Resources
有了这些信息,您可以通过以下语句创建您的主机名:
imageBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${env:IMAGE_BUCKET}
WebsiteConfiguration:
RoutingRules:
-
RedirectRule:
Hostname:
Fn::Join:
- ""
- - Ref: ApiGatewayRestApi
- ".execute-api."
- Ref: AWS::Region
- ".amazonaws.com"
HttpRedirectCode: 302
RoutingRuleCondition:
HttpErrorCodeReturnedEquals: 404
amazon-web-services
amazon-cloudformation
aws-api-gateway
serverless-framework
serverless-architecture
我正在使用无服务器框架创建一个使用 S3、Lambda 和 API 网关的图像大小调整服务。这类似于概念 here,但是这将使用无服务器来设置和配置整个堆栈。
现在我需要找到一种合适的方法来引用 serverless.yml 文件中生成的 API 网关的主机名。这就是我的资源。 (只是一个片段)
imageBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${env:IMAGE_BUCKET}
WebsiteConfiguration:
RoutingRules:
-
RedirectRule:
Hostname: ${HOSTNAME HERE}
HttpRedirectCode: 302
RoutingRuleCondition:
HttpErrorCodeReturnedEquals: 404
它说 ${HOSTNAME HERE} 我需要成为无服务器框架生成的 API 网关 API 的主机名。
现在,我能想到的最好方法是在某处创建一个 CNAME 别名,然后在我的 API 前面使用它。然后我会将该 CNAME 作为环境变量传递进来,然后在此文件中引用它。但这对我来说并不理想。我希望有人能够将这个项目拉下并能够 运行 它只用一个存储桶名称。有没有办法做到这一点?
主机名不直接由 cloudformation 公开,因此您必须从创建资源的输出值构建它。 无服务器框架的所有资源都遵循一定的命名约定: AWS - Resources
有了这些信息,您可以通过以下语句创建您的主机名:
imageBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${env:IMAGE_BUCKET}
WebsiteConfiguration:
RoutingRules:
-
RedirectRule:
Hostname:
Fn::Join:
- ""
- - Ref: ApiGatewayRestApi
- ".execute-api."
- Ref: AWS::Region
- ".amazonaws.com"
HttpRedirectCode: 302
RoutingRuleCondition:
HttpErrorCodeReturnedEquals: 404