我正在尝试创建一个CloudFormation模板,该模板接受可选的SSH密钥对作为参数。我想使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="clock" data-time="h">
<button class="clock_plus">+</button>
<span class="clock_sep">:</span>
<span class="clock_h">00</span>
<button class="clock_minus">-</button>
</div>
<div class="clock" data-time="m">
<button class="clock_plus">+</button>
<span class="clock_sep">:</span>
<span class="clock_m">00</span>
<button class="clock_minus">-</button>
</div>
<div class="clock" data-time="s">
<button class="clock_plus">+</button>
<span class="clock_s">00</span>
<button class="clock_minus">-</button>
</div>
类型,因此CloudFormation界面为用户提供了可用键的列表,如图所示。
我遇到的问题是可选部分。如果用户将选择留空,则使用默认值但不认为有效。我明白了:
AWS::EC2::KeyPair::KeyName
有没有办法定义一个可以留空但是具有非泛型类型的参数?
以下是显示问题的示例模板:
Parameter validation failed: parameter value for parameter name SSHKey does not exist. Rollback requested by user.
答案 0 :(得分:2)
请根据您的情况找到模板。
{
"Parameters":{
"SSHKey":{
"Type":"AWS::EC2::KeyPair::KeyName",
"Description":"select the keypair SSH",
"Default":""
},
"KeyPairRequired":{
"Type":"String",
"AllowedValues":[
"yes",
"no"
],
"Description":"Select yes/no whether to Add key pair to instance or not."
}
},
"Conditions":{
"CreateLCWithKeyPair":{
"Fn::Equals":[
{
"Ref":"KeyPairRequired"
},
"yes"
]
},
"CreateLCWithoutKeyPair":{
"Fn::Equals":[
{
"Ref":"KeyPairRequired"
},
"no"
]
}
},
"Resources":{
"LaunchConfigWithKey":{
"Condition":"CreateLCWithKeyPair",
"Type":"AWS::AutoScaling::LaunchConfiguration",
"Properties":{
"ImageId":"ami-9eb4b1e5",
"InstanceType":"t2.micro",
"KeyName":{
"Ref":"SSHKey"
},
"BlockDeviceMappings":[
{
"DeviceName":"/dev/xvda",
"Ebs":{
"VolumeSize":"8"
}
}
]
}
},
"LaunchConfigWithoutKey":{
"Condition":"CreateLCWithoutKeyPair",
"Type":"AWS::AutoScaling::LaunchConfiguration",
"Properties":{
"ImageId":"ami-9eb4b1e5",
"InstanceType":"t2.micro",
"BlockDeviceMappings":[
{
"DeviceName":"/dev/xvda",
"Ebs":{
"VolumeSize":"8"
}
}
]
}
}
}
}
答案 1 :(得分:1)
AWS::EC2::KeyPair::KeyName
参数属于特定于AWS的参数类型,根据AWS文档和建议,模板用户必须指定其帐户中的现有AWS值。
无法在您的CloudFormation模板中保留SSHKey为空。请参考CloudFormation Parameter Syntax。在该文档的AWS Specific Parameter Types部分下,您将找到以下内容:
对于特定于AWS的参数类型,模板用户必须指定现有参数 其帐户中的AWS值。 AWS CloudFormation支持 遵循AWS特定类型
答案 2 :(得分:1)
如果您的帐户中有少量SSH密钥,并且您不经常更改它们,那么您可以做的一件事就是使用setcookie("cookielogin[userLoginRemembered]", $dataLoginQuery['USERID'] , $time + (60*60*24*7));
,其中包含Type: String
属性。例如:
AllowedValues
这意味着您必须在添加新SSH密钥时更新模板,但添加与您提到的类似的精美Dropdown,并且可以选择不按您的要求配置密钥。