aws / aws-sdk-ruby

The official AWS SDK for Ruby.
https://aws.amazon.com/sdk-for-ruby/
Apache License 2.0
3.56k stars 1.22k forks source link

AWS Ruby SDK: Incorrect response returned by 'describe_reserved_instances' API operation of EC2 client #1775

Closed dineshyadav009 closed 6 years ago

dineshyadav009 commented 6 years ago

Issue description

When calling describe_reserved_instances method on EC2 client, the response returned has fixed price 0.0 for i3.xlarge and i3.2xlarge instance type when offering class is standard and offering type is partial upfront. This fixed price is basically the partial upfront price to be paid.

Gem name and its version

Gem Name - aws-sdk-ec2 Gem Version - 3.0.1

Version of Ruby, OS environment

Ruby - 2.1 OS - Ubuntu 16.04

Code snippets / steps to reproduce

client = Aws::EC2::Client.new({region: 'us-east-1', access_key_id: 'XXXXXXXX', secret_access_key: 'xxxxxxx', http_wire_trace: true})
options = {:filters=>[{:name=>"state", :values=>["active"]}, {:name=>"instance-type", :values=>["i3.2xlarge"]}]}
reservations = client.describe_reserved_instances(options).reserved_instances

Wire log

opening connection to ec2.us-east-1.amazonaws.com:443...
opened
starting SSL for ec2.us-east-1.amazonaws.com:443...
SSL established
<- "POST / HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded; charset=utf-8\r\nAccept-Encoding: \r\nUser-Agent: aws-sdk-ruby3/3.7.0 ruby/2.1.7 x86_64-linux aws-sdk-ec2/1.17.0\r\nHost: ec2.us-east-1.amazonaws.com\r\nX-Amz-Date: 20180502T133509Z\r\nX-Amz-Content-Sha256: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nAuthorization: AWS4-HMAC-SHA256 Credential=XXXXXXXXXX/20180502/us-east-1/ec2/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nContent-Length: 151\r\nAccept: */*\r\n\r\n"
-> "HTTP/1.1 200 OK\r\n"
-> "Content-Type: text/xml;charset=UTF-8\r\n"
-> "Transfer-Encoding: chunked\r\n"
-> "Vary: Accept-Encoding\r\n"
-> "Date: Wed, 02 May 2018 13:35:13 GMT\r\n"
-> "Server: AmazonEC2\r\n"
-> "\r\n"
-> "977\r\n"
reading 2423 bytes...
-> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<DescribeReservedInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2016-11-15/\">\n    <requestId>16372ae2-fedc-4deb-9935-0a0f926d3673</requestId>\n    <reservedInstancesSet>\n        <item>\n            <reservedInstancesId>484d1ee4-9a80-44c8-8145-30747a7ee75b</reservedInstancesId>\n            <instanceType>i3.2xlarge</instanceType>\n            <availabilityZone>us-east-1e</availabilityZone>\n            <start>2018-01-23T06:00:00.000Z</start>\n            <end>2019-01-23T05:52:05.000Z</end>\n            <duration>31536000</duration>\n            <fixedPrice>0.0</fixedPrice>\n            <usagePrice>0.0</usagePrice>\n            <instanceCount>2</instanceCount>\n            <productDescription>Linux/UNIX (Amazon VPC)</productDescription>\n            <state>active</state>\n            <instanceTenancy>default</instanceTenancy>\n            <currencyCode>USD</currencyCode>\n            <offeringType>Partial Upfront</offeringType>\n            <recurringCharges>\n                <item>\n                    <frequency>Hourly</frequency>\n                    <amount>0.203</amount>\n                </item>\n            </recurringCharges>\n            <offeringClass>standard</offeringClass>\n            <scope>Availability Zone</scope>\n        </item>\n        <item>\n            <reservedInstancesId>a954c8ea-711e-4715-b695-2753eb0ac8f6</reservedInstancesId>\n            <instanceType>i3.2xlarge</instanceType>\n            <availabilityZone>us-east-1a</availabilityZone>\n            <start>2018-01-23T06:00:00.000Z</start>\n            <end>2019-01-13T09:02:18.000Z</end>\n            <duration>31536000</duration>\n            <fixedPrice>0.0</fixedPrice>\n            <usagePrice>0.0</usagePrice>\n            <instanceCount>2</instanceCount>\n            <productDescription>Linux/UNIX (Amazon VPC)</productDescription>\n            <state>active</state>\n            <instanceTenancy>default</instanceTenancy>\n            <currencyCode>USD</currencyCode>\n            <offeringType>Partial Upfront</offeringType>\n            <recurringCharges>\n                <item>\n                    <frequency>Hourly</frequency>\n                    <amount>0.203</amount>\n                </item>\n            </recurringCharges>\n            <offeringClass>standard</offeringClass>\n            <scope>Availability Zone</scope>\n        </item>\n    </reservedInstancesSet>\n</DescribeReservedInstancesResponse>"
read 2423 bytes
reading 2 bytes...
-> "\r\n"
read 2 bytes
-> "0\r\n"
-> "\r\n"
Conn keep-alive
awood45 commented 6 years ago

So the question here is why the service is returning a zero fixed price for your reserved instances via the API, when presumably you paid more than zero? Just to be clear.

dineshyadav009 commented 6 years ago

@awood45 Exactly. And I have reserved instances with different instance types, I can see problem among those with i3 class only. Seems like a bug.

awood45 commented 6 years ago

I'll pass this on the to EC2 team, given that the SDK is properly formatting requests and responses. You can also raise this with AWS Support.

awood45 commented 6 years ago

Closing - the SDK is correctly dealing with the responses given, best way to continue to escalate this is via AWS Support.