Cloudformation无法找到区域Opsworks堆栈

时间:2017-06-05 07:29:07

标签: json amazon-web-services stack amazon-cloudformation aws-opsworks

我有一个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" }
      }
    }
  },
}

1 个答案:

答案 0 :(得分:0)

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

  

只能在创建资源的区域中管理资源。在一个区域端点中创建的资源不可用,也不能克隆到另一个区域端点。

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/

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

相关问题