如何为goFaas配置自定义域名:Route53与API Gateway完整配置
如何为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重要注意事项
证书验证:AWS Certificate Manager (ACM)会向域名管理员邮箱发送验证邮件,需要点击邮件中的链接完成验证,否则部署会失败并回滚。
部署时间:CloudFront分发网络的创建可能需要15分钟或更长时间,请耐心等待AWS在全球范围内部署基础设施。
Route53 DNS配置步骤
部署完成后,需要在Route53中创建DNS记录,将自定义域名映射到CloudFront分发域名。
配置CNAME记录
- 登录AWS控制台,导航到Route53服务
- 选择你的域名托管区域
- 点击"创建记录集"
- 填写以下信息:
- 名称:输入子域名(如
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-TypeAccess-Control-Allow-Methods:GET, OPTIONSAccess-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),仅供参考