如何将VPC的ID作为参数传递给Cluster.template以设置为默认值?

时间:2017-04-21 15:17:32

标签: amazon-web-services amazon-cloudformation

我正在尝试找到一种在Cluster.template JSON文件中设置默认VPC,子网和安全组的方法。

有没有办法使用内置的“Ref”将现有的VPC(或子网/安全组)作为参数传递给模板?

这显然无法奏效:

import {ChartModule} from 'angular2-highcharts';
import {HighchartsStatic} from 'angular2-highcharts/dist/HighchartsService';
import * as highcharts from 'highcharts';

@NgModule({
    declarations: [AppComponent],
    imports: [ChartModule],
    providers: [
    {
        provide: HighchartsStatic,
        useValue: highcharts
    }],
    bootstrap: [AppComponent]
})
export class AppModule {
}

2 个答案:

答案 0 :(得分:1)

要在模板中注入VPC ID,我会执行以下操作。首先删除默认值。

"Parameters": {
    "VpcId": {
       "Type": "AWS::EC2::VPC::Id"
....
}

接下来将要设置VpcId的值放在parameters.json文件中,当您使用cloudformation执行create-stack或update-stack时,请使用参数文件作为输入。

<强> parameters.json

[
  {
    "ParameterKey": "VpcId",
    "ParameterValue": "vpc-123456789"
  }
]

多值参数

如果你有一个带有值列表的参数,你可以按如下方式表示它

"PrivateEC2Subnets": {
  "Type": "CommaDelimitedList",
  "Description": "List of private subnets to run your EC2 instances inside. Note that they must be in the same availability zone that your ELB is configured for. May require you to manually create a private subnet with a specific AZ if your VPC isnt auto-configured."
},

然后在你的外部参数文件中传入一个逗号分隔的列表,如此

  {
    "ParameterKey": "PrivateEC2Subnets",
    "ParameterValue": "subnet-9934670a544,subnet-d74ea349f"
  },

有关不同参数类型的详细信息,请参阅AWS文档http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html,但请注意,在尝试表示外部参数文件中的复杂数据类型列表时,人们会报告问题。据我所知,如果你想从你的cloudformation模板之外的另一个json文件传递值,那么只有CommaDelimitedList可以工作。

答案 1 :(得分:0)

我发现它比我想象的要简单得多......这很有效:

 "Parameters": {
    "VpcId": {
       "Type": "List<AWS::EC2::VPC::Id>",
       "Default":  "vpc-123456789,vpc-987654123" ,
....
}