我在CloudFormation模板中定义了以下安全组:
<?php
$xml=simplexml_load_file("wallpaper.xml") or die("Error: Cannot create object");
foreach (array_chunk($xml->children, 25, true) as $array) {
foreach ($array as $wall)
{
echo "<a href='" . $wall->url . "' target='_blank'><img src='"$wall->thumbnail . "' alt='Wallpaper' /></a> \n";
}
echo '<div id="banner">Test</div>';}
?>
我还定义了一个Elastic Beanstalk环境,其中包含OptionSettings中的以下内容:
"APIInstanceSG": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "Security Group for Application EC2 Instances,
"VpcId": "vpc-10a75377",
"Tags": [{
"Key": "Name",
"Value": "APIInstanceSG" }
}]
}
}
当我使用此模板创建堆栈时,安全组是在CloudFormation尝试创建EB环境之前创建的,但是当它尝试创建EB环境时,它会出现以下错误:
配置验证例外:无效的选项值:&#39; sg-994fcbe4&#39; (命名空间:&#39; aws:autoscaling:launchconfiguration&#39;,OptionName:&#39; SecurityGroups&#39;):安全组&#39; sg-994fcbe4&#39;不存在
Elastic Beanstalk Environment配置如下:
{
"Namespace": "aws:autoscaling:launchconfiguration",
"OptionName": "SecurityGroups",
"Value": { "Ref": "APIInstanceSG" }
}
答案 0 :(得分:10)
在查看您的AWS :: ElasticBeanstalk :: Environment资源后,我能够重现您遇到的错误。正如Marc Young在对您的问题的评论中建议的那样,您没有为您的环境指定VPC。由于您的安全组位于VPC中,因此无法从同一VPC中的资源访问它。
要解决此问题,您必须将以下配置选项添加到您的环境中:
{
"Namespace" : "aws:ec2:vpc",
"OptionName" : "VPCId",
"Value" : "vpc-10a75377"
},
如果指定VPC,则使用更新的模板创建堆栈将失败,并显示一条错误消息,指出您还需要指定环境子网,因此您必须添加以下选项:
{
"Namespace" : "aws:ec2:vpc",
"OptionName" : "Subnets",
"Value" : <insert the subnet for your instances here>
},
{
"Namespace" : "aws:ec2:vpc",
"OptionName" : "ELBSubnets",
"Value" : <insert the subnet for your load balancer here>
}
您可以在Elastic Beanstalk CloudFormation sample templates中查看VPC中Beanstalk应用程序的工作示例。
答案 1 :(得分:0)
要克服这个问题:
您需要从AWS CLI更改EB安全组,您无法从AWS Web Console更改。
考虑到您已经拥有AWS CLI installed ,如果您想要更改安全组,则需要执行此命令:
aws elasticbeanstalk update-environment –environment-name –option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=””
答案 2 :(得分:0)
您应该在LC定义中设置DependsOn属性,以确保在堆栈创建期间它存在于SG之前。否则你不能保证引用会起作用。
"APIInstanceSG": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "Security Group for Application EC2 Instances,
"VpcId": "vpc-10a75377",
"Tags": [{
"Key": "Name",
"Value": "APIInstanceSG" }
}]
},
"DependsOn" : "APIInstanceSG"
}
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html
答案 3 :(得分:0)
在您的模板中,而不是
"DependsOn" : "RDSInstance"
写:
"DependsOn": ["APIInstanceSG", "RDSInstance"]
更多信息:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html