我有一个Cloudformation
模板,可以通过添加少量资源来修改Opsworks
堆栈。
Opsworks stack
部署在eu-west-1
区域API endpoint region
,它显示在堆栈名称的旁边:Regional
。
当我运行Cloudformation template
时(我将堆栈ID作为参数)我收到此错误:
Unable to find stack with ID xxxxxxx
我猜Cloudformation只能看到us-east-1区域的opsworks资源?
我尝试更改了Cloudformation的区域并部署了模板,但堆栈仍未完成。
如何让Cloudformation
在所有地区搜索堆栈?
我应该克隆opsworks堆栈并将端点更改为us-east-1区域吗?
什么是最好的解决方案?
模板
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Add a layer to an existing stack",
"Mappings": {
"Region2Principal": {
"eu-west-1": {
"EC2Principal": "ec2.amazonaws.com",
"OpsWorksPrincipal": "opsworks.amazonaws.com"
}
},
},
"Parameters": {
"Environment" : {
"Description": "The Environnement variable ",
"Type": "String",
"Default": "dev",
"AllowedValues" : ["test", "prod"]
},
"InstanceType": {
"Type": "String",
"Default": "m4.large",
"AllowedValues" : ["t2.micro", "m1.small", "m1.large","m4.large","m4.xlarge","m4.2xlarge","m4.4xlarge","m4.10xlarge","m4.16xlarge","c4.large" , "c4.xlarge" ,"c4.2xlarge" , "c4.4xlarge","c4.8xlarge" , "c3.large" , "c3.xlarge", "c3.2xlarge", "c3.4xlarge" ,"c3.8xlarge"],
"ConstraintDescription": "must be a valid EC2 instance type"
},
"StackID": {
"Type": "String",
"Description": "ID of the existing opsworks stack to edit"
},
"vpcId": {
"Description": "VPC id of corresponding to the Environment",
"Type": "String"
},
"subnetIds" :{
"Description": "list of sunbnets in the chosen VPC",
"Type": "List<AWS::EC2::Subnet::Id>"
},
"ScriptSG":{
"Description": "script security group",
"Type" : "String"
},
"SG": {
"Description": " layer security group",
"Type": "String"
}
},
"Resources":{
"Layer": {
"Type": "AWS::OpsWorks::Layer",
"Properties": {
"AutoAssignElasticIps" : false,
"AutoAssignPublicIps" : true
}
},
"SInstance1": {
"Type": "AWS::OpsWorks::Instance",
"Properties": {
"Hostname": "S1",
"AutoScalingType": "timer",
"TimeBasedAutoScaling" : {
"Friday" : { "0" : "on", "6" : "on", "12" : "on", "18" : "on" },
"Monday" : { "0" : "on", "6" : "on", "12" : "on", "18" : "on" }
},
"RootDeviceType": "ebs",
"StackId": {"Ref": "StackID"},
"LayerIds": [{"Ref": "Layer"}],
"InstanceType": {"Ref" : "InstanceType"}
}
},
"Instance2": {
"Type": "AWS::OpsWorks::Instance",
"Properties": {
"Hostname": "S2",
"AutoScalingType": "timer",
"TimeBasedAutoScaling" : {
"Saturday": { "0" : "on", "6" : "on", "12" : "on", "18" : "on" },
"Sunday" : { "0" : "on", "6" : "on", "12" : "on", "18" : "on" },
"Thursday": { "0" : "on", "6" : "on", "12" : "on", "18" : "on" },
"Tuesday" : { "0" : "on", "6" : "on", "12" : "on", "18" : "on" },
"Wednesday":{ "0" : "on", "6" : "on", "12" : "on", "18" : "on" }
},
"RootDeviceType": "ebs",
"StackId": {"Ref": "StackID"},
"LayerIds": [{"Ref": "Layer"}],
"InstanceType": {"Ref" : "InstanceType"}
}
},
"ELB": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"ConnectionDrainingPolicy" : {
"Enabled" : true,
"Timeout" : 300
},
"ConnectionSettings" : {
"IdleTimeout" : 60
},
"CrossZone" : true,
"HealthCheck" : {
"HealthyThreshold" : "3",
"Interval" : "30",
"Target" : "HTTP:80/ping",
"Timeout" : "5",
"UnhealthyThreshold" : "2"
},
"LoadBalancerName": "loadBalancer",
"Listeners" : [{
"InstancePort" : "80",
"InstanceProtocol" : "HTTP",
"LoadBalancerPort" : "80",
"Protocol" : "HTTP"
}],
"Scheme" : "internal",
"SecurityGroups" : [{ "Ref" : "ELBSecurityGroup" }],
"Subnets" : { "Ref" : "subnetIds"}
}
},
"ELBAttach":{
"Type": "AWS::OpsWorks::ElasticLoadBalancerAttachment",
"Properties": {
"ElasticLoadBalancerName" : {"Ref" : "ELB"},
"LayerId" : {"Ref" : "Layer" }
}
}
},
}
答案 0 :(得分:0)
看起来您需要将它们移动到同一区域。
只能在创建资源的区域中管理资源。在一个区域端点中创建的资源不可用,也不能克隆到另一个区域端点。
http://docs.aws.amazon.com/general/latest/gr/rande.html#opsworks_region
Layer缺少stackID参数。
.image {
display: -webkit-flex;
display: flex;
-webkit-justify-content: center;
justify-content: center;
}
.info {
height: auto;
width: auto;
max-width: 1500px;
max-height: 666px;
}
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html