2016-11-30 7 views
0

を持っている必要があります。現在、私はtroposphereを使用して次のJSONを作成できました。エラー 'Parameters:[KeyPair]に値が必要です。私はこの「価値観」が何であるべきか分かりません。パラメータ:[キーペア]私はcloudformationを使用して、私のEC2インスタンスを反映しようとしていた値

私は、エラーを理解するが、溶液何かわかりません。

{ 
    "Outputs": { 
     "InstanceAccess": { 
      "Description": "", 
      "Value": { 
       "Fn::Join": [ 
        "", 
        [ 
         "ssh -i ", 
         { 
          "Ref": "KeyPair" 
         }, 
         " [email protected]", 
         { 
          "Fn::GetAtt": [ 
           "MyInstance", 
           "PublicDnsName" 
          ] 
         } 
        ] 
       ] 
      } 
     } 
    }, 
    "Parameters": { 
     "KeyPair": { 
      "Description": "jj", 
      "Type": "AWS::EC2::KeyPair::launch" 
     } 
    }, 
    "Resources": { 
     "MyInstance": { 
      "Properties": { 
       "ImageId": "< my image id goes here>", 
       "InstanceType": "t1.micro", 
       "KeyName": { 
        "Ref": "KeyPair" 
       }, 
       "SecurityGroups": [ 
        { 
         "Ref": "SecurityGroup" 
        } 
       ] 
      }, 
      "Type": "AWS::EC2::Instance" 
     }, 
     "SecurityGroup": { 
      "Properties": { 
       "GroupDescription": "Allow access to MyInstance", 
       "SecurityGroupIngress": [ 
        { 
         "CidrIp": "0.0.0.0/0", 
         "FromPort": "22", 
         "IpProtocol": "tcp", 
         "ToPort": "22" 
        }, 
        { 
         "CidrIp": "0.0.0.0/0", 
         "FromPort": "80", 
         "IpProtocol": "tcp", 
         "ToPort": "80" 
        }, 
        { 
         "CidrIp": "0.0.0.0/0", 
         "FromPort": "8080", 
         "IpProtocol": "tcp", 
         "ToPort": "8080" 
        }, 
        { 
         "CidrIp": "0.0.0.0/0", 
         "FromPort": "443", 
         "IpProtocol": "tcp", 
         "ToPort": "443" 
        } 
       ] 
      }, 
      "Type": "AWS::EC2::SecurityGroup" 
     } 
    } 
} 

答えて

0

あなたのKeyPairパラメータには有効なタイプが必要です。 CloudFormation User GuideParametersセクションによると、キーペアパラメータのタイプは、AWS :: EC2 ::キーペア::キー名です。だから、次のようになります。あなたは、テンプレートのパラメータとして鍵ペアの名前を宣言した場合

"KeyPair": { 
    "Description": "The name of the keypair to use for SSH access", 
    "Type": "AWS::EC2::KeyPair::KeyName" 
} 

また、あなたが使用してスタックを作成するときに、引数として既存の鍵ペアの名前を渡す必要がありますそのテンプレート。

+0

私は、以前のことを試してみました。あなたの解決策には次のエラーがあります: 'パラメータ:[KeyPair]には値が必要です ' –

+0

Fyi、" launch "は私のkeyPairの名前です。私はどこにでも置く必要がありますか? –

+0

テンプレートにありません。キーペアはパラメータであるため、テンプレートを使用してスタックを作成する場合(たとえば、WebコンソールまたはCLIを使用して)、有効なキーペア名を引数として渡す必要があります。 – rbarni

1

受け入れられた回答を展開するには、パラメータのデフォルト値を追加します。これはまた、あなたが見ていたエラーを解決したでしょう。 KeyPairに静的な値がある場合は、既定の引数を渡すことをお勧めします。引き続き引数を渡すことでデフォルトを上書きすることができます。

"KeyPair": { 
    "Description": "The name of the keypair to use for SSH access", 
    "Type": "AWS::EC2::KeyPair::KeyName", 
    "Default": "launch" 
} 
関連する問題