Serverless部署AWS DynamoDB时tableName正则校验失败问题排查
问题原因
DynamoDB表名有严格的字符限制,仅允许包含大小写英文字母、数字、下划线、英文句号、中划线,对应校验正则为[a-zA-Z0-9_.-]+。从报错信息可以看到,你实际传入的表名是users-table-dev',末尾多了一个非法的单引号,因此触发校验失败。
修复步骤
- 检查
serverless.yml中custom块下的tableName配置,去掉外层多余的单引号(外层单引号容易在YAML解析时引发引号拼接错误),修改为:
custom: tableName: users-table-${self:provider.stage} # 其他原有custom配置保持不变
- 检查
resources.Resources.UsersDynamoDBTable.Properties下的TableName配置,确认变量引用时没有在末尾额外拼接单引号,保持如下写法即可:
TableName: ${self:custom.tableName}
- 配置修改完成后,先执行
serverless print命令查看框架解析后的最终配置,确认输出的表名值为users-table-dev、无多余特殊字符后,再执行部署命令即可。
额外注意
你当前配置中使用的python3.6运行时已被AWS Lambda官方停止支持,建议后续升级到python3.9及以上稳定版本,避免触发运行时不支持的部署错误。
内容的提问来源于stack exchange,提问作者Abhishek Kumar
相关产品推荐
相关产品推荐

