Я выполняю команду EC2 через eclipse, например:
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String spot = "aws ec2 describe-spot-price-history --instance-types"
+ " m3.medium --product-description \"Linux/UNIX (Amazon VPC)\"";
System.out.println(spot);
Runtime runtime = Runtime.getRuntime();
final Process process = runtime.exec(spot);
//********************
InputStreamReader isr = new InputStreamReader(process.getInputStream());
BufferedReader buff = new BufferedReader (isr);
String line;
while((line = buff.readLine()) != null)
System.out.print(line);
}
Результат в консоли eclipse:
aws ec2 describe-spot-price-history --instance-types m3.medium --product-description "Linux/UNIX (Amazon VPC)"
{ "SpotPriceHistory": []}
Однако, когда я выполняю ту же команду (aws ec2 describe-spot-price-history --instance-types m3.medium --product-description "Linux/UNIX (Amazon VPC)") в оболочке, я получаю другой результат.
"Timestamp": "2018-09-07T17:52:48.000Z", "AvailabilityZone": "us-east-1f", "InstanceType": "m3.medium", "ProductDescription": "Linux/UNIX", "SpotPrice": "0.046700" }, { "Timestamp": "2018-09-07T17:52:48.000Z", "AvailabilityZone": "us-east-1a", "InstanceType": "m3.medium", "ProductDescription": "Linux/UNIX", "SpotPrice": "0.047000" }
Мой вопрос: как получить в консоли eclipse тот же результат, что и в консоли оболочки?




Похоже, вы не получаете ожидаемого результата, потому что вы передаете консольную команду через свой Java-код, который не анализируется должным образом, и вместо этого вы не используете AWS SDK для Java. Чтобы получить ожидаемый результат в консоли Eclipse, вы можете использовать вызов DescribeSpotPriceHistory Java SDK API в своем коде [1]. Пример фрагмента кода для этого вызова API согласно документации выглядит следующим образом:
AmazonEC2 client = AmazonEC2ClientBuilder.standard().build();
DescribeSpotPriceHistoryRequest request = new DescribeSpotPriceHistoryRequest().withEndTime(new Date("2014-01-06T08:09:10"))
.withInstanceTypes("m1.xlarge").withProductDescriptions("Linux/UNIX (Amazon VPC)").withStartTime(new Date("2014-01-06T07:08:09"));
DescribeSpotPriceHistoryResult response = client.describeSpotPriceHistory(request);
Кроме того, вы можете заглянуть на этот веб-сайт, содержащий примеры файлов Java для различных сценариев, использующих вызов API DescribeSpotPriceHistory в Java [2]. Дополнительные сведения о DescribeSpotPriceHistory см. В официальной документации [3].
[3]. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSpotPriceHistory.html