Группы безопасности БД могут быть связаны только с экземплярами БД VPC с использованием версий API
У меня есть этот код ниже, чтобы создать экземпляр RDS в AWS:
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
Но у меня всегда есть эта ошибка, связанная с группами безопасности:
Группы безопасности БД могут быть связаны только с экземплярами БД VPC с использованием версий API с 2012-01-15 по 2012-09-17.
Может кто-нибудь, пожалуйста, помогите решить эту проблему?
Если я использую vpc_security_groups вместо security_groups, я получаю:
<Message>Invalid security group , groupId= f, u, d, t, e, a, l, groupName=.</Message>
3 ответа
Экземпляры RDS в VPC не могут быть членами групп безопасности RDS. Вместо этого RDS внутри VPC должен находиться в группе безопасности VPC. В бото используйте vpc_security_groups
параметр (с идентификатором группы безопасности VPC в качестве значения), а не security_groups
параметр. Смотрите также документы boto RDS для create_dbinstance()
,
Boto переносит RDSConnection из версии 1 в версию 2. Вы можете проверить это - раньше мы могли получить все db_instances, используя get_all_dbinstances()
но теперь мы можем получить только с помощью describe_db_instances()
, Попробуйте использовать vpc_security_group()
, Официальный документ для новой версии RDS, то есть RDS2 здесь.
Это может сработать. Я не получаю ошибку с моим сценарием, но мой клиент. Я предполагаю, что это потому, что у меня есть группа безопасности VPC по умолчанию, которую AWS использует молча, а он - нет.
boto.rds.RDSConnection.APIVersion = '2012-09-17'
идея заключается в том, что, поскольку этот API находится в пределах (в конце) указанного диапазона, ошибка не будет применена.
Я получил идею от https://github.com/boto/boto/issues/2923