Cloudformationを使用してOSとしてAmazonlinuxでt2.microec2インスタンスを作成しようとしています。以下はjsonファイルです(重要な部分)。
"FileName" :{
"Type" : "String",
"Default" : "cf-file.sh",
"AllowedValues": [ "cf-file.sh"]
},
"InstanceType" : {
"Description" : "WebServer EC2 instance type",
"Type" : "String",
"Default" : "t2.micro",
"AllowedValues" : ["t2.micro"],
"ConstraintDescription" : "must be a valid EC2 instance type."
},
"AMIID" :{
"Type": "String",
"Default":"AMI-1ecae776",
"AllowedValues":["AMI-1ecae776"]
}
},
"Resources" : {
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"#!/bin/bash\n",
"yes y | yum install dos2unix\n",
"touch ",{ "Ref" : "FileName" },"\n",
"chmod 777 ",{ "Ref" : "FileName" },"\n"
]
]
}
},
"KeyName" : { "Ref" : "KeyName" },
"ImageId" : { "Ref" : "AMIID" }
}
},
このファイルを実行すると、次のエラーが発生します
Non-Windows instances with a virtualization type of 'hvm' are currently not supported for this instance type
このエラーは、t1ファミリインスタンスタイプを使用している場合に発生すると思いますが、私はt2.microを使用しています。その理由を教えてください。
"InstanceType"属性がリソースのプロパティセクションにありません。したがって、 '[〜#〜] hvm [〜#〜]'仮想化タイプをサポートしないデフォルトのインスタンスタイプ(m1.small)を使用している可能性があります。同様の問題に直面し、インスタンスタイプ属性を追加して修正しました。また、 't2.micro'インスタンスタイプはインスタンスストアルートデバイスをサポートしていません。以下のサンプルスニペットを参照してください。
"Parameters":{
"ServerKeyName":{
"Description" :"key pair to connect to Server",
"Type": "AWS::EC2::KeyPair::KeyName"
},
"InstanceType" : {
"Description" : "Type of EC2 instance to launch",
"Type" : "String",
"Default" : "t2.micro"
},
....
....
}
....
....
"Properties" : {
"KeyName" : { "Ref" : "ServerKeyName" },
"Tags" : [
{
"Key" : "Name",
"Value" : "test Server"
}],
"ImageId" : { "Ref" : "InstanceAMI" },
"InstanceType" : { "Ref" : "InstanceType"},
....
....
....
}
Packer AMIを構築しようとしているときに、誰かがこのエラーに遭遇した場合。テンプレートファイルの名前がjsonではなくpacker拡張子であることを確認してください。
たとえば、「packerbuildtemplate.json」は次のコマンドで失敗していました
ソースインスタンスの起動エラー:InvalidParameterCombination:仮想化タイプが「hvm」のWindows以外のインスタンスは、現在このインスタンスタイプではサポートされていません。ステータスコード:400、リクエストID:
一方、packer build template.packerは、問題なく機能します。