AWS:使用Cloud Formation与现有密钥对部署堆栈

时间:2014-03-13 20:21:06

标签: amazon-web-services ssh amazon-ec2

我几天前就开始使用AWS了。

我想使用Cloud Formation服务来部署堆栈,然后能够SSH到已部署的实例。在创建模板时,我没有看到包含密钥对的选项。

根据this,我需要从一开始就拥有一对密钥。

如何使用密钥对部署堆栈,以便在部署后可以将其SSH到其中?

我还尝试通过在参数:

下添加KeyName部分来更改文本文件中的模板
"Parameters" : {
"AccessControl" : {
  "Description" : " The IP address range that can be used to access the CloudFormer tool. NOTE: We highly recommend that you specify a customized address range to lock down the tool.",
  "Type": "String",
  "MinLength": "9",
  "MaxLength": "18",
  "Default": "0.0.0.0/0",
  "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})",
  "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x."
}  

"KeyName" : {
  "Description" : " Name of an existing EC2 KeyPair to enable SSH access to the instances",
  "Type": "String",
  "MinLength": "1",
  "MaxLength": "64",
  "AllowedPattern": "[-_ a-zA-Z0-9]*",
  "ConstraintDescription": "Can contain only alphanumeric characters, spaces, dashes, and underscores."
}

这会导致以下错误:"模板验证错误:模板格式错误:JSON格式不正确。"

我希望能够远程进入Linux和Windows实例。

2 个答案:

答案 0 :(得分:1)

你可以使用"默认"指定默认密钥名称

    "KeyPair" : {
        "Type" : "String",
        "Default" : "MyKeyName",
        "Description" : "Enter a keypair for this instance"
    }

然后在"属性"

    "Properties": {
        "KeyName": { "Ref": "KeyPair" },

答案 1 :(得分:0)

您需要创建密钥,然后使用密钥的名称作为Cloud Formation脚本的参数。

JSON错误可能是由于AccessControl属性值关闭后缺少逗号。

http://jsonlint.com/处有一个JSON验证器会突出显示这些类型的格式错误。