TagSpecifications with requestSpotInstances UnexpectedParameter with aws-sdk
TagSpecifications with requestSpotInstances UnexpectedParameter with aws-sdk
我正在尝试向我的 AWS Spot 请求添加标签。但它已经返回我{ UnexpectedParameter: Unexpected key 'TagSpecifications' found in params.LaunchSpecification
。
我已关注 this documentation,我已尝试将此代码移出 LaunchSpecification,但错误仍然存在。
const params = {
InstanceCount: 1,
LaunchSpecification: {
ImageId: config.aws.instanceAMI,
KeyName: 'backoffice',
InstanceType: config.aws.instanceType,
SecurityGroupIds: [config.aws.instanceSecurityGroupId],
TagSpecifications: [{
ResourceType: 'instance',
Tags: [{
Key: 'Type',
Value: 'Mongo-Dump',
}],
}],
BlockDeviceMappings: [{
DeviceName: '/dev/xvda',
Ebs: {
DeleteOnTermination: true,
SnapshotId: 'snap-06e838ce2a80337a4',
VolumeSize: 50,
VolumeType: 'gp2',
Encrypted: false,
},
}],
IamInstanceProfile: {
Name: config.aws.instanceProfileIAMName,
},
Placement: {
AvailabilityZone: `${config.aws.region}a`,
},
},
SpotPrice: config.aws.instancePrice,
Type: 'one-time',
};
return ec2.requestSpotInstances(params).promise();
有些事情让我认为问题出在文档中或 Javascript 本身的 aws-sdk 中。我的选择用尽了。
错误信息正确。根据 documentation,RequestSpotLaunchSpecification
对象没有名为 TagSpecifications
.
的属性
但是,您可以在创建 Spot 实例请求后对其进行标记。
ec2.requestSpotInstances(params)
returns SpotInstanceRequest
个对象的数组,每个对象包含一个 spotInstanceRequestId
(例如 sir-012345678
)。使用具有这些 Spot 实例请求 ID 的 CreateTags API 来添加标签。
const createTagParams = {
Resources: [ 'sir-12345678' ],
Tags: [
{
Key: 'Type',
Value: 'Mongo-Dump'
}
]
};
ec2.createTags(createTagParams, function(err, data) {
// ...
});
我正在尝试向我的 AWS Spot 请求添加标签。但它已经返回我{ UnexpectedParameter: Unexpected key 'TagSpecifications' found in params.LaunchSpecification
。
我已关注 this documentation,我已尝试将此代码移出 LaunchSpecification,但错误仍然存在。
const params = {
InstanceCount: 1,
LaunchSpecification: {
ImageId: config.aws.instanceAMI,
KeyName: 'backoffice',
InstanceType: config.aws.instanceType,
SecurityGroupIds: [config.aws.instanceSecurityGroupId],
TagSpecifications: [{
ResourceType: 'instance',
Tags: [{
Key: 'Type',
Value: 'Mongo-Dump',
}],
}],
BlockDeviceMappings: [{
DeviceName: '/dev/xvda',
Ebs: {
DeleteOnTermination: true,
SnapshotId: 'snap-06e838ce2a80337a4',
VolumeSize: 50,
VolumeType: 'gp2',
Encrypted: false,
},
}],
IamInstanceProfile: {
Name: config.aws.instanceProfileIAMName,
},
Placement: {
AvailabilityZone: `${config.aws.region}a`,
},
},
SpotPrice: config.aws.instancePrice,
Type: 'one-time',
};
return ec2.requestSpotInstances(params).promise();
有些事情让我认为问题出在文档中或 Javascript 本身的 aws-sdk 中。我的选择用尽了。
错误信息正确。根据 documentation,RequestSpotLaunchSpecification
对象没有名为 TagSpecifications
.
但是,您可以在创建 Spot 实例请求后对其进行标记。
ec2.requestSpotInstances(params)
returns SpotInstanceRequest
个对象的数组,每个对象包含一个 spotInstanceRequestId
(例如 sir-012345678
)。使用具有这些 Spot 实例请求 ID 的 CreateTags API 来添加标签。
const createTagParams = {
Resources: [ 'sir-12345678' ],
Tags: [
{
Key: 'Type',
Value: 'Mongo-Dump'
}
]
};
ec2.createTags(createTagParams, function(err, data) {
// ...
});