使用aws sdk for java从AWS服务器获取现有密钥对

时间:2015-03-12 08:00:43

标签: java amazon-web-services amazon-ec2

我正在尝试使用aws sdk for java在AWS上创建EC2实例。

这是runinstance方法

public static RunInstancesResult createInstaince() {

        RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

        runInstancesRequest.withImageId("ami-ca381398")
                .withInstanceType("t2.micro")
                .withMinCount(1)
                .withMaxCount(1)
                .withKeyName("java-sdk")
                .withSubnetId("subnet-8eca36f9")
                .withSecurityGroupIds("sg-3f00a25a");

        RunInstancesResult runInstancesResult = amazonEC2Client
                .runInstances(runInstancesRequest);

        return runInstancesResult;
    }

这里我已明确指定java-sdk作为密钥对,但现在我希望用户能够选择aws服务器上可用的密钥对。我看到了一个函数getAMI,它从中获取AMI aws server.can有人告诉我是否可以使用像getKey-pair这样的函数?

2 个答案:

答案 0 :(得分:2)

DescribeKeyPairs正是您要找的。该链接适用于EC2 API文档。您可能想要查找调用此API的aws-java sdk方法。

答案 1 :(得分:1)

    public static List<String> getKeyName() {
    DescribeKeyPairsRequest dkpr = new DescribeKeyPairsRequest();
    DescribeKeyPairsResult dkpresult = 
    amazonEC2Client.describeKeyPairs(dkpr);

    List<KeyPairInfo> keyPairs = dkpresult.getKeyPairs();
    List<String> keyPairNameList = new ArrayList<String>();

    for (KeyPairInfo keyPairInfo : keyPairs) {
        keyPairNameList.add(keyPairInfo.getKeyName());
    }

    for (int i = 0; i < keyPairs.size(); i++) {
        System.out.println(keyPairNameList.get(i));
    }

    return keyPairNameList;
}

这是它将返回键名的arraylist的代码。