2014-01-21 5 views
0

Я пытаюсь создать развертывание командной строки для моего файла войны на Elastic Beanstalk. Он работает до сих пор. Но моя последняя проблема заключается в том, чтобы открыть порт 3306 для моей базы данных RDS MySQL, которую мое приложение может подключиться к нему. Мой сценарий развертывания можно найти по адресу: https://github.com/sven-hornberg-1314-fhb/Web106/blob/master/deploy.pyОткрытый порт для MySQL Amazon RDS с python или CLI

Я использую boto 2.23.0, Python 2.7.5+, connRds (соединение с RDS работает), dbeb - это мое имя базы данных.

Сначала я создал группу EC2 сначала с моим vpcid. и удалось открыть порт 3306 для этой группы.

.create_security_group(name=group_name, description=descriptionval,vpc_id=vpcid) 

Далее я создал группу RDS над моей связи RDS

connRds.create_dbsecurity_group(self.rdsSecurityGroup, 'rdsgroup') 

Мой следующий шаг, чтобы обновить группу RDS со следующими строками кода. Во-первых, я получаю определенную группу безопасности EC2 и попытаться выполнить метод Авторизоваться

connRds = boto.rds.connect_to_region(self.region, 
     aws_access_key_id=self.awsAccessKey, 
     aws_secret_access_key=self.awsSecretKey 
    ) 

    instances = connRds.get_all_dbinstances('dbeb') 
    db = instances[0] 


    rdsgp = connRds.get_all_dbsecurity_groups()[1] 
    myEC = connEc2.get_all_security_groups([self.ec2SecurityGroup])[0] 

    rdsgp.authorize(ec2_group=sgEc2) 

я получаю несколько ошибок, а также с другим кодом я размещаете спустя, первое сообщение об ошибке:

<ErrorResponse xmlns="http://rds.amazonaws.com/doc/2013-05-15/"> 
<Error> 
<Type>Sender</Type> 
<Code>InvalidParameterValue</Code> 
<Message>VPC DB Security Groups cannot be modified with this API version. Please use an API version between 2012-01-15 and 2012-10-31 to modify this group.</Message> 
</Error> 
<RequestId>e48f8443-82bc-11e3-9861-6bf67b1543ed</RequestId> 
</ErrorResponse> 

Мой другой попробуйте это изменить группу на объекте БД:

instances = connRds.get_all_dbinstances('dbeb') 
db = instances[0] 
db.modify(security_groups=[sgEc2]) 

Но приводит к другой ошибке: Невозможно применить членство DB групп безопасности к БД Instance в VPC. Вместо этого используйте группы безопасности VPC.

Но я думал, что создаю группу VPC, передав параметр vpc_id? Есть ли у вас какие-либо намеки или другие способы открыть порт по командной строке? (Он должен быть над API или CLI)

+0

http://docs.aws.amazon.com/AmazonRDS/latest/APIReference /API_AuthorizeDBSecurityGroupIngress.html AuthorizeDBSecurityGroupIngress? есть ли эквивалентный метод в boto? – svenhornberg

ответ

1

Cannot apply DB Security Group membership to DB Instance in VPC.Please use VPC Security Groups instead

Всегда помните эмпирическое правило, , когда у вас есть ваш материал работает внутри VPC, то только группы безопасности VPC преобладают.

Другие индивидуальные группы безопасности, например. Группа безопасности RDS, группы безопасности RedShift ... и т. Д. Действительны только для файлов, работающих в EC2-Classic, что означает, вне VPC.

Итак, вы пытаетесь применить EC2-Classic (другими словами, RDS Security Group) к экземпляру RDS, который работает внутри VPC. Это неправильно и, следовательно, вы получаете вышеупомянутую ошибку.

+0

Моя группа Ec2, похоже, является группой VPC, над веб-интерфейсом я могу выбрать эту группу для моей группы безопасности rds. : /, Я попробую его в java, чтобы проверить, работает ли его Спасибо, но я думаю, что это ошибка, может быть, это то же самое, что и здесь https://github.com/boto/boto/issues/561? Даже с идентификатором i я получаю ошибку, данные api устарели db = connRds.create_dbinstance (self.dbName, 5, "db.t1.micro", self.dbUser, self.dbUserPassword, security_groups = [sgEc2.id]) , тогда я получаю сообщение об ошибке, что у меня устаревший вызов api. Я поднял вопрос в github. https://github.com/boto/boto/issues/2010 – svenhornberg

Смежные вопросы