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