我开始使用AWS。我已经使用AWS管理控制台创建了EC2实例。我希望能够使用CLI创建新的类似实例,因此我一直在研究get-launch-template-data(状态为“检索指定实例的配置数据。您可以使用此数据来创建一个启动模板。”),并希望将其输出作为create-launch-template的有效输入。
我已经查看了AWS CLI文档,并查看了StackOverflow,但是我发现的唯一相关问题是这些问题:Unable to create launchtemplate using awscli和Amazon Launch Template - Updated AMI
我一直在跑步:
aws ec2 get-launch-template-data --instance-id "i-xxx" --query "LaunchTemplateData" > MyLaunchData
aws ec2 create-launch-template --launch-template-name xxx --launch-template-data file://MyLaunchData
我得到的错误是:
An error occurred (InvalidInterfaceType.Malformed) when calling the CreateLaunchTemplate operation: '%s' is not a valid value for interface type. Enter a valid value and try again.
我认为MyLaunchData的相关部分是:
"NetworkInterfaces": [
{
"AssociatePublicIpAddress": true,
"DeleteOnTermination": true,
"Description": "",
"DeviceIndex": 0,
"Groups": [
"sg-xxx"
],
"InterfaceType": "interface",
"Ipv6Addresses": [],
"PrivateIpAddresses": [
{
"Primary": true,
"PrivateIpAddress": "xxx"
}
],
"SubnetId": "subnet-xxx"
}
],
有人能指出我正确的方向吗?(出于隐私考虑,我显然已经用xxx代替了我认为的数据)
非常感谢
不允许使用InterfaceType:
'%s'不是接口类型的有效值
我知道您正在使用get-launch-template-data的输出,但是没有“ InterfaceType”:“ interface”。
InterfaceType
Indicates the type of network interface. To create an Elastic Fabric Adapter (EFA),
specify efa. For more information, see Elastic Fabric Adapter in the Amazon Elastic
Compute Cloud User Guide.
Required: No
Type: String
Allowed Values: efa
要添加到vo1umen的答案中,要解决此问题,您显然需要从NetworkInterfaces数组中删除InterfaceType。一种方法是使用jq:
jq -c 'del(.NetworkInterfaces[0]["InterfaceType"])' <<< $TemplateData
-c
用于保持JSON平面格式,当存储在文件中时,您可能不需要这样做。