使用python或CLI为MySQL Amazon RDS打开端口
我尝试为我的war文件创建一个到Elastic Beanstalk的命令行部署。到目前为止,它正在发挥作用。但我的最后一个问题是为我的RDS MySQL数据库打开端口3306,我的应用程序可以连接到它。我的部署脚本可以在以下位置找到: 我使用的是BOTO2.23.0、Python2.7.5+、connRds(与RDS的连接正在工作),dbeb是我的数据库名 首先,我用我的vpcid创建了一个EC2组。并设法为该组打开3306端口使用python或CLI为MySQL Amazon RDS打开端口,python,amazon-web-services,boto,amazon-rds,Python,Amazon Web Services,Boto,Amazon Rds,我尝试为我的war文件创建一个到Elastic Beanstalk的命令行部署。到目前为止,它正在发挥作用。但我的最后一个问题是为我的RDS MySQL数据库打开端口3306,我的应用程序可以连接到它。我的部署脚本可以在以下位置找到: 我使用的是BOTO2.23.0、Python2.7.5+、connRds(与RDS的连接正在工作),dbeb是我的数据库名 首先,我用我的vpcid创建了一个EC2组。并设法为该组打开3306端口 .create_security_group(name=group
.create_security_group(name=group_name, description=descriptionval,vpc_id=vpcid)
接下来,我通过我的RDS连接创建了一个RDS组
connRds.create_dbsecurity_group(self.rdsSecurityGroup, 'rdsgroup')
我的下一步是用下一行代码更新RDS组。首先,我获取已定义的EC2安全组并尝试执行authorize方法
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>
我的另一个尝试是更改db对象上的组:
instances = connRds.get_all_dbinstances('dbeb')
db = instances[0]
db.modify(security_groups=[sgEc2])
但会导致另一个错误:无法将DB安全组成员资格应用于VPC中的DB实例。请改用VPC安全组
但是我想我应该通过传递VPC_id参数来创建一个VPC组?
您是否有任何提示或其他方法可以通过命令行打开端口?
(它必须通过API或CLI)
无法将DB安全组成员资格应用于专有网络中的DB实例。请改用专有网络安全组
始终记住一条经验法则,当您的东西在专有网络中运行时,只有专有网络安全组占优势。
其他单独的安全组(如RDS安全组、红移安全组等)仅对在EC2 Classic
中运行的内容有效,也就是说,在专有网络之外
因此,您实际上是在尝试将EC2 Classic(换句话说,RDS安全组)应用于在VPC内运行的RDS实例。这是错误的,因此您收到了前面提到的错误。似乎是一个bug,让它与java一起工作
可能与此错误有关:AuthorizedSecurityGroupIngress?boto中是否有等效的方法?我的Ec2组似乎是一个VPC组,通过webinterface,我可以为我的rds安全组选择该组。:/,我将在java中试用它,以检查它是否工作,谢谢,但我认为这是一个bug,也许它与这里相同?即使使用ID,我也会得到错误数据,api是过时的db=conrds.create_dbinstance(self.dbName,5,“db.t1.micro”,self.dbUser,self.dbUserPassword,security_groups=[sgEc2.ID]),然后我会得到错误,我有一个过时的api调用。我在github中提出了一个问题。