【问题标题】:How to get the specific key pair for an ec2 instance using the aws sdk如何使用 aws sdk 获取 ec2 实例的特定密钥对
【发布时间】:2022-01-05 08:54:16
【问题描述】:

我有一长串 aws EC2 实例,我想找到与特定实例关联的密钥对。但是,当我查看 AWS sdk 文档时,我看到有一个调用 describeKeyPairs 是这样使用的:


var params = {
 KeyNames: [
    "my-key-pair"
 ]
};
ec2.describeKeyPairs(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
  /*
  data = {
   KeyPairs: [
      {
     KeyFingerprint: "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", 
     KeyName: "my-key-pair"
    }
   ]
  }
  */
});

返回一个密钥对列表。我可以使用 key-id key-nametags 过滤这个返回的列表,但我没有看到通过 EC2 实例过滤它的方法。

这样可以吗?

参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeKeyPairs-property

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-sdk aws-sdk-js aws-sdk-nodejs


    【解决方案1】:

    如果要获取使用特定密钥对的所有实例,可以使用 describe-instances 操作并添加 filter:key-name

    var params = {
      Filters: [
        {
          Name: 'key-name',
          Values: ['my-key-pair']
        }
      ]
    };
    ec2.describeInstances(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
    

    否则,如果要获取正在使用特定实例的密钥对,可以指定实例 id,然后从响应中读取 key-name 属性:

    var params = {
      InstanceIds: [
         "i-1234567890abcdef0"
      ]
    };
    ec2.describeInstances(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
    

    【讨论】:

      【解决方案2】:

      我找到了答案!

      ec2.describeInstances 返回一个属性keyName,然后可以将其用作ec2.describeKeyPairs 中的过滤器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-06
        • 2020-08-11
        • 2016-07-15
        • 1970-01-01
        相关资源
        最近更新 更多