我正在尝试根据标签名称过滤 ec2 实例。它无法正常工作。我正在寻找带有这些标签的任何可用 ec2 实例:
var params = {
DryRun: false,
Filters: [
{
Name: "tag:Name",
Values: ["2test-dev-gh"],
},
{
Name: "tag:Enviro",
Values: ["devInstanceStatus"],
},
{
Key: "tag:Proj",
Value: ["dev-2test"],
},
{
Key: "tag:testServers",
Value: ["peekhours"]
}
]
};
当我使用第一个标签并注释掉其他标签时,此过滤器有效,但是当我一起尝试所有标签时,它会给我以下错误。
{
"errorType": "MultipleValidationErrors",
"errorMessage": "There were 4 validation errors:n* UnexpectedParameter: Unexpected key 'Key' found in params.Filters[2]n* UnexpectedParameter: Unexpected key 'Value' found in params.Filters[2]n* UnexpectedParameter: Unexpected key 'Key' found in params.Filters[3]n* UnexpectedParameter: Unexpected key 'Value' found in params.Filters[3]",
"trace": [
"MultipleValidationErrors: There were 4 validation errors:",
"* UnexpectedParameter: Unexpected key 'Key' found in params.Filters[2]",
"* UnexpectedParameter: Unexpected key 'Value' found in params.Filters[2]",
"* UnexpectedParameter: Unexpected key 'Key' found in params.Filters[3]",
"* UnexpectedParameter: Unexpected key 'Value' found in params.Filters[3]",
" at ParamValidator.validate (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:40:28)",
" at Request.VALIDATE_PARAMETERS (/var/runtime/node_modules/aws-sdk/lib/event_listeners.js:126:42)",
" at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)",
" at callNextListener (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:96:12)",
" at /var/runtime/node_modules/aws-sdk/lib/event_listeners.js:86:9",
" at finish (/var/runtime/node_modules/aws-sdk/lib/config.js:379:7)",
" at /var/runtime/node_modules/aws-sdk/lib/config.js:397:9",
" at EnvironmentCredentials.get (/var/runtime/node_modules/aws-sdk/lib/credentials.js:127:7)",
" at getAsyncCredentials (/var/runtime/node_modules/aws-sdk/lib/config.js:391:24)",
" at Config.getCredentials (/var/runtime/node_modules/aws-sdk/lib/config.js:411:9)"
]
}
这是我的其余代码。
exports.handler = async function(event) {
const promise = new Promise(function(resolve, reject) {
const ec2 = new AWS.EC2();
ec2.describeInstances(params, function(err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
})
});
return promise;
}
你的参数应该与下面的结构匹配,尝试用这个替换参数。
var params = {
DryRun: false,
Filters: [
{
Name: "tag:Name",
Values: ["2test-dev-gh"],
},
{
Name: "tag:Enviro",
Values: ["devInstanceStatus"],
},
{
Name: "tag:Proj",
Values: ["dev-2test"],
},
{
Name: "tag:testServers",
Values: ["peekhours"]
}
]
};
原因是使用Key
而不是Name
,使用Value
而不是Values
。