数据库安全组只能与使用 API 版本的 VPC 数据库实例关联
Posted
技术标签:
【中文标题】数据库安全组只能与使用 API 版本的 VPC 数据库实例关联【英文标题】:DB Security Groups can only be associated with VPC DB Instances using API versions 【发布时间】:2015-06-08 15:38:55 【问题描述】:我有以下代码在 aws 中创建 RDS 实例:
import boto.rds
REGION="us-east-1"
INSTANCE_TYPE="db.t1.micro"
ID = "mysql-db-instance-database-test2"
USERNAME="root"
PASSWORD = "pass"
DB_PORT = 3306
DB_SIZE = 5
DB_ENGINE = "MySQL5.1"
DB_NAME = "databasetest2"
SECGROUP_HANDLE="default"
print "Connecting to RDS"
conn = boto.rds.connect_to_region(REGION)
print "Creating a RDS Instance"
instance = conn.create_dbinstance(ID, DB_SIZE, INSTANCE_TYPE, USERNAME, PASSWORD, port=DB_PORT, engine=DB_ENGINE,db_name=DB_NAME, security_groups = [SECGROUP_HANDLE],)
print instance
但我总是遇到与安全组相关的错误:
数据库安全组只能与使用 API 版本 2012-01-15 到 2012-09-17 的 VPC 数据库实例相关联。
谁能帮忙解决这个问题?
如果我使用 vpc_security_groups 而不是 security_groups 我有:
<Message>Invalid security group , groupId= f, u, d, t, e, a, l, groupName=.</Message>
【问题讨论】:
这将有助于查看堆栈跟踪和确切的错误消息。基于this similar thread,我有一种预感,您会遗漏一些错误消息(即某些特定的 API 版本)... 感谢您的评论。我忘记了完整的信息,但现在我用它更新了问题! 【参考方案1】:VPC 中的 RDS 实例不能是 RDS 安全组的成员。相反,VPC 中的 RDS 应位于 VPC 安全组中。在 boto 中,使用 vpc_security_groups
参数(以 VPC 安全组 ID 作为其值)而不是 security_groups
参数。对于create_dbinstance()
,另请参阅boto RDS docs。
【讨论】:
Upaang 的回答也很有趣。您可以改用版本 2,在这种情况下,create_dbinstance()
保持相同的功能,但 vpc_security_groups
参数已更改为 vpc_security_group_ids
。
感谢您的回答。但我不明白为什么我有这个 vpc 错误。我没有使用任何 vpc,我的问题代码中没有任何与 vpc 相关的内容,只有我遇到的错误。但我尝试使用 vpc_security_groups 而不是 security_groups 但不起作用!
我也有这个:TypeError: create_dbinstance() got an unexpected keyword argument 'vpc_security_group_ids'【参考方案2】:
Boto 正在将 RDSConnection 从版本 1 迁移到版本 2。您可以查看 this -
之前我们可以使用get_all_dbinstances()
获取所有db_instances,但现在我们只能使用describe_db_instances()
获取。
尝试使用vpc_security_group()
。
新版RDS即RDS2的官方文档为here。
【讨论】:
【参考方案3】:这可能有效。我的脚本没有收到错误,但我的客户是。我猜这是因为我有一个默认的 VPC 安全组,AWS 正在默默地使用它,而他没有。
boto.rds.RDSConnection.APIVersion = '2012-09-17'
想法是,由于此 API 在指定范围内(在末尾),因此错误将不适用。
我的想法来自https://github.com/boto/boto/issues/2923
【讨论】:
以上是关于数据库安全组只能与使用 API 版本的 VPC 数据库实例关联的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk:将数据库安全组迁移到 VPC 安全组