基于标签的 AWS Lambda 函数筛选



我正在尝试根据标签名称过滤 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

最新更新