首页
/ AWS CLI中RDS Custom SQL Server引擎版本创建问题解析

AWS CLI中RDS Custom SQL Server引擎版本创建问题解析

2025-05-14 00:02:43作者:魏献源Searcher

问题背景

在使用AWS CLI创建RDS Custom for SQL Server的自定义引擎版本(CEV)时,开发者可能会遇到"InternalFailure"错误。这个问题主要出现在尝试通过create-custom-db-engine-version命令创建自定义SQL Server引擎版本时,系统返回内部错误提示。

错误表现

当执行类似以下命令时:

aws rds create-custom-db-engine-version --engine custom-sqlserver-ee --engine-version 15.00.4365.2.dev_cev --image-id ami-xxxxxx --description "Custom SQL Server EE 15.00.4365.2 CEV Developer"

系统会返回错误信息:

An error occurred (InternalFailure) when calling the CreateCustomDBEngineVersion operation (reached max retries: 2): An internal error has occurred. Please try your query again at a later time.

根本原因

这个问题实际上与AWS RDS服务的后端API实现有关,而非AWS CLI工具本身的问题。核心原因是系统缺少必要的服务关联角色(SLR),特别是名为"AWSServiceRoleForRDSCustom"的角色,该角色是RDS Custom功能正常运行所必需的。

解决方案

经过AWS团队确认,目前有以下临时解决方案:

  1. 先创建RPEV实例:首先需要创建一个RPEV(Ready-Only Replica)实例,这一步会自动创建所需的服务关联角色。

  2. 重试CEV创建:在RPEV实例创建完成后,再次尝试创建自定义引擎版本。

  3. 清理资源:成功创建CEV后,可以删除第一步创建的RPEV实例。

技术细节

RDS Custom功能依赖于多个IAM角色和权限,其中"AWSServiceRoleForRDSCustom"角色尤为关键。这个角色允许RDS服务代表您调用其他AWS服务,如EC2和Systems Manager等。在正常情况下,当首次使用RDS Custom功能时,系统应该自动创建这个角色。但在某些情况下,这个自动创建过程可能会失败或延迟。

未来改进

AWS团队已经确认这是一个已知问题,并正在开发永久性修复方案。修复后,用户将不再需要通过创建临时RPEV实例的方式来解决问题,可以直接创建自定义引擎版本。

最佳实践建议

对于需要使用RDS Custom功能的开发者,建议:

  1. 在正式环境部署前,先在测试环境验证自定义引擎版本的创建过程。

  2. 监控IAM角色的创建情况,确保所有必要的服务关联角色都已存在。

  3. 如果遇到类似问题,可以检查CloudTrail日志获取更详细的错误信息。

  4. 保持AWS CLI工具和SDK的版本更新,以获取最新的功能改进和错误修复。

通过理解这个问题的背景和解决方案,开发者可以更顺利地使用AWS RDS Custom功能,为SQL Server工作负载创建自定义的数据库引擎版本。

登录后查看全文
热门项目推荐
相关项目推荐