如何为Serverless Lambda创建子域名?部署遇AWS错误求助
排查Serverless Domain Manager配置Lambda自定义域名的AWS错误
我来帮你梳理下这个问题的排查思路,先把你的配置和操作步骤明确下来,再逐一分析可能触发AWS错误的原因:
你的当前配置与操作
Serverless.yml配置片段
plugins: - serverless-domain-manager custom: customDomain: domainName: transcoder.iflix-dev.com basePath: '' stage: ${self:provider.stage} createRoute53Record: true
执行的操作命令
- 第一步:
sls create_domain -s development -v - 第二步:
sls deploy -s development -v
常见AWS错误排查方向
下面是这类场景下最容易遇到的问题,你可以逐一核对:
1. 域名与证书配置问题
- 首先确认
transcoder.iflix-dev.com已经在你的AWS Route 53托管区内,或者你已经完成了ACM证书的DNS验证(如果使用ACM证书的话)。 - 划重点:如果是用CloudFront(serverless-domain-manager默认会用),你的ACM证书必须部署在us-east-1(弗吉尼亚北部)区域,哪怕你的Lambda在其他区域,这是CloudFront的硬性要求。
2. IAM权限不足
serverless-domain-manager需要足够的权限来操作AWS资源,比如创建CloudFront分配、修改Route53记录、查询ACM证书等。检查你的部署角色是否包含以下关键权限:
- ACM相关:
acm:ListCertificates、acm:DescribeCertificate - CloudFront相关:
cloudfront:CreateDistribution、cloudfront:GetDistribution、cloudfront:UpdateDistribution - Route53相关:
route53:ListHostedZones、route53:ChangeResourceRecordSets - Lambda相关:
lambda:GetFunction、lambda:AddPermission
3. 域名资源冲突
检查这个自定义域名是否已经被其他CloudFront分配、API Gateway自定义域名占用了——AWS不允许同一个域名绑定到多个不同的资源上。如果之前执行create_domain失败过,可能残留了未完成的资源,建议去AWS控制台手动清理相关的CloudFront分配或Route53记录后再重试。
4. 阶段(Stage)配置不匹配
确保你的provider.stage确实设置为development,或者可以先把stage字段直接硬编码为development测试下,避免变量解析错误导致的配置不一致。
5. 插件版本兼容性
老版本的serverless-domain-manager可能和最新的Serverless Framework或AWS API存在兼容性问题,建议更新到最新稳定版:
npm update serverless-domain-manager --save-dev
实用调试技巧
你已经用了-v(verbose模式)来执行命令,这很好!仔细查看输出里的具体错误信息,AWS通常会给出明确的错误代码(比如AccessDenied、InvalidCertificate),根据这些错误代码去查AWS官方文档,能更快定位问题根源。
内容的提问来源于stack exchange,提问作者Chandan Kumar
相关产品推荐
相关产品推荐

