我有以下代码在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>
答案 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在指定范围内(在最后),所以错误将不适用。
得到了这个想法