如何为goFaas配置自定义域名:Route53与API Gateway完整配置
2026/6/16 21:51:30 网站建设 项目流程

如何为goFaas配置自定义域名:Route53与API Gateway完整配置

【免费下载链接】gofaasA boilerplate Go and AWS Lambda app. Demonstrates an expert configuration of 10+ AWS services to support running Go functions-as-a-service (FaaS).项目地址: https://gitcode.com/gh_mirrors/go/gofaas

goFaas是一个基于Go语言和AWS Lambda的无服务器应用框架,它展示了10+ AWS服务的专业配置,以支持运行Go函数即服务(FaaS)。本文将详细介绍如何为goFaas配置自定义域名,通过Route53和API Gateway实现完整的域名映射与HTTPS配置,让你的无服务器应用拥有专业的访问地址。

为什么需要自定义域名?

当我们准备将goFaas应用投入生产环境时,默认的API Gateway URL(如https://x19vpdk568.execute-api.us-east-1.amazonaws.com/Prod)既不专业也不易记。配置自定义域名(如https://api.gofaas.net)可以提升品牌形象,简化用户访问,并支持HTTPS加密传输。

AWS通过CloudFront CDN实现自定义域名支持,同时提供免费的SSL证书自动生成与续期服务,解决了传统SSL配置的成本和维护难题。

准备工作:CloudFormation配置

goFaas使用CloudFormation模板来自动化AWS资源配置。我们需要在模板中添加参数和条件,以便根据需要创建自定义域名相关资源。

关键配置解析

在项目的template.yml文件中,包含了以下关键配置:

  • 参数(Parameters):定义ApiDomainName参数,用于指定自定义域名
  • 条件(Conditions):仅当ApiDomainName参数被设置时,才创建相关资源
  • 资源(Resources):包括ACM证书、API Gateway域名和路径映射

核心配置代码如下:

Conditions: ApiDomainNameSpecified: !Not [!Equals [!Ref ApiDomainName, ""]] Parameters: ApiDomainName: Default: "" Type: String Resources: ApiGatewayCertificate: Condition: ApiDomainNameSpecified Properties: DomainName: !Ref ApiDomainName Type: AWS::CertificateManager::Certificate ApiGatewayDomainName: Condition: ApiDomainNameSpecified Properties: CertificateArn: !Ref ApiGatewayCertificate DomainName: !Ref ApiDomainName Type: AWS::ApiGateway::DomainName ApiGatewayMapping: Condition: ApiDomainNameSpecified Properties: DomainName: !Ref ApiGatewayDomainName RestApiId: !Ref ServerlessRestApi Stage: !Ref ServerlessRestApiProdStage Type: AWS::ApiGateway::BasePathMapping

部署自定义域名配置

完成模板配置后,使用以下命令部署应用并指定自定义域名参数:

$ make deploy PARAMS="ApiDomainName=api.gofaas.net" ... ApiUrl https://api.gofaas.net ApiDistributionDomainName d2bwnae7bzw1t6.cloudfront.net

重要注意事项

  1. 证书验证:AWS Certificate Manager (ACM)会向域名管理员邮箱发送验证邮件,需要点击邮件中的链接完成验证,否则部署会失败并回滚。

  2. 部署时间:CloudFront分发网络的创建可能需要15分钟或更长时间,请耐心等待AWS在全球范围内部署基础设施。

Route53 DNS配置步骤

部署完成后,需要在Route53中创建DNS记录,将自定义域名映射到CloudFront分发域名。

配置CNAME记录

  1. 登录AWS控制台,导航到Route53服务
  2. 选择你的域名托管区域
  3. 点击"创建记录集"
  4. 填写以下信息:
    • 名称:输入子域名(如api
    • 类型:选择CNAME
    • :输入部署输出的ApiDistributionDomainName(如d2bwnae7bzw1t6.cloudfront.net
    • TTL:建议设置为300秒(5分钟)

自动化DNS配置(可选)

对于更高级的配置,可以在CloudFormation模板中添加AWS::Route53::RecordSet资源,实现DNS记录的自动化创建。

API Gateway CORS配置

为确保自定义域名下的API能够正常处理跨域请求,需要在API Gateway中配置CORS(跨域资源共享)。

配置CORS响应头

在API Gateway控制台中,为你的API资源配置以下响应头:

  • Access-Control-Allow-Headers:Accept, Authorization, Content-Type
  • Access-Control-Allow-Methods:GET, OPTIONS
  • Access-Control-Allow-Origin:https://your-custom-domain.com

这些设置确保浏览器能够安全地从你的自定义域名发起API请求。

验证配置

等待DNS记录生效(通常需要几分钟到几小时)后,可以使用curl命令验证配置是否成功:

$ curl https://api.gofaas.net <html><body><h1>gofaas dashboard</h1></body></html>

如果返回goFaas仪表板页面,则表示自定义域名配置成功!

总结

通过本文的步骤,你已经成功为goFaas应用配置了自定义域名,主要收获包括:

  • 使用CloudFormation自动化配置AWS资源
  • 通过ACM获取免费的SSL证书并自动续期
  • 利用CloudFront全球CDN加速API访问
  • 在Route53中配置DNS记录实现域名映射
  • 正确设置CORS确保跨域请求正常工作

现在,你的goFaas应用拥有了专业的自定义域名,用户可以通过https://api.yourdomain.com轻松访问,同时享受HTTPS加密和全球CDN带来的性能提升。

更多详细信息,请参考项目官方文档:docs/custom-domains.md

【免费下载链接】gofaasA boilerplate Go and AWS Lambda app. Demonstrates an expert configuration of 10+ AWS services to support running Go functions-as-a-service (FaaS).项目地址: https://gitcode.com/gh_mirrors/go/gofaas

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询