我尝试为我的war文件创建一个命令行部署到Elastic Beanstalk。它到目前为止工作。但我的最后一个问题是为我的RDS MySQL数据库打开端口3306,我的应用程序可以连接到它。我的部署脚本位于:https://github.com/sven-hornberg-1314-fhb/Web106/blob/master/deploy.py
下我正在使用boto 2.23.0,Python 2.7.5 +,connRds(与RDS的连接正在工作),dbeb是我的数据库名称。
首先,我首先用我的vpcid创建了一个EC2组。并设法为该组打开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>
我的另一个尝试是更改db对象上的组:
instances = connRds.get_all_dbinstances('dbeb')
db = instances[0]
db.modify(security_groups=[sgEc2])
但导致其他错误:无法将数据库安全组成员身份应用于VPC中的数据库实例。请改用VPC安全组。
但是我想通过传递vpc_id参数来创建一个VPC组? 您是否有任何提示或其他方法通过命令行打开端口? (必须通过API或CLI)
答案 0 :(得分:1)
无法将数据库安全组成员身份应用于VPC中的数据库实例。请改用VPC安全组
当你在VPC中运行你的东西时,总是记住一个经验法则 ,然后只有VPC安全组占上风。
其他个别安全组,例如RDS安全组,RedShift安全组等仅对在EC2-Classic
中运行的内容有效,这意味着在VPC之外。
因此,您实际上是在尝试将EC2-Classic(换句话说,RDS安全组)应用于在VPC内运行的RDS实例。这是错误的,因此您收到了上述错误。
答案 1 :(得分:0)
似乎是一个bug,让它与java一起工作 https://gist.github.com/sven-hornberg-1314-fhb/8560467