1

我有一个Cloudformation模板,它通过添加少量资源来修改Opsworks堆栈。Cloudformation找不到地区Opsworks堆栈

Opsworks stack被部署在该区域eu-west-1这是API endpoint region,以及,它显示了在堆叠的名称的侧面:Regional

当我运行Cloudformation template(我给堆栈ID作为参数)我得到这个错误:

Unable to find stack with ID xxxxxxx

我猜Cloudformation只能看到opsworks资源,这是在美国东1地区?

我试着改变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

看起来你需要将它们移动到同一区域。

Resources can be managed only in the region in which they are created. Resources that are created in one regional endpoint are not available, nor can they be cloned to, another regional endpoint.

http://docs.aws.amazon.com/general/latest/gr/rande.html#opsworks_region

https://aws.amazon.com/about-aws/whats-new/2016/08/aws-opsworks-adds-nine-regional-endpoints-and-asia-pacific-seoul-region-support/

层缺少stackID参数。

{ 
"Type": "AWS::OpsWorks::Layer", 
"Properties": { 
"Attributes" : { String:String }, 
"AutoAssignElasticIps" : Boolean, 
"AutoAssignPublicIps" : Boolean, 
"CustomInstanceProfileArn" : String, 
"CustomJson" : JSON object, 
"CustomRecipes" : Recipes, 
"CustomSecurityGroupIds" : [ String, ... ], 
"EnableAutoHealing" : Boolean, 
"InstallUpdatesOnBoot" : Boolean, 
"LifecycleEventConfiguration" :     LifeCycleEventConfiguration, 
"LoadBasedAutoScaling" : LoadBasedAutoScaling, 
"Name" : String, 
"Packages" : [ String, ... ], 
"Shortname" : String, 
"StackId" : String, 
"Type" : String, 
"VolumeConfigurations" : [ VolumeConfiguration, ... ] 
} 
    } 

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html

+0

我的默认区域是'欧盟 - 西1'和cloudformation堆栈是在'欧盟 - 西1'和相同opsworks端点是'欧盟 - 西1'。他们都在同一地区,但云信息无法找到opsworks资源。 – Somar

+0

你可以发布你的cloudformation吗? – strongjz

+0

完成,问题被编辑 – Somar

相关问题