数据库安全组只能与使用API​​版本的VPC数据库实例相关联

时间:2015-04-03 14:24:49

标签: mysql amazon-web-services boto amazon-rds

我有以下代码在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>

3 个答案:

答案 0 :(得分:8)

VPC中的RDS实例不能是RDS安全组的成员。相反,VPC中的RDS应位于VPC安全组中。在boto中,使用vpc_security_groups参数(使用VPC安全组ID作为其值)而不是security_groups参数。另请参阅create_dbinstance()的{​​{3}}。

答案 1 :(得分:2)

Boto正在将RDSConnection从版本1迁移到版本2.您可以检查this - 之前我们可以使用get_all_dbinstances()获得所有db_instances,但现在我们只能使用describe_db_instances()获取。 尝试使用vpc_security_group()。 新版RDS的官方文档,即RDS2为here

答案 2 :(得分:0)

可能有效。我没有得到我的脚本错误,但我的客户端。我猜这是因为我有一个默认的VPC安全组,AWS正默默使用,而他没有。

boto.rds.RDSConnection.APIVersion = '2012-09-17'

这个想法是因为这个API在指定范围内(在最后),所以错误将不适用。

我从https://github.com/boto/boto/issues/2923

得到了这个想法