Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ec2.DescribeAddresses() doesn't return expected output #373

Closed
mattes opened this issue Sep 4, 2015 · 3 comments
Closed

ec2.DescribeAddresses() doesn't return expected output #373

mattes opened this issue Sep 4, 2015 · 3 comments
Labels
guidance Question that needs advice or information.

Comments

@mattes
Copy link

mattes commented Sep 4, 2015

Step 1: Allocate new Elastic IP

    allocateAddressResp, err := c.ec2client.AllocateAddress(&ec2.AllocateAddressInput{
        Domain: aws.String("vpc"),
    })

Go to Web Console and verify that the Elastic IP really has been allocated.

Step 2: Try to "fetch" Elastic IP by Public IP

        describeAddressesResp, err := c.ec2client.DescribeAddresses(
            &ec2.DescribeAddressesInput{
                Filters: []*ec2.Filter{{
                    Name:   aws.String("public-ip"),
                    Values: aws.StringSlice([]string{ip.String()}), // ip is type net.IP and holds returned public IP from Step 1 (double checked this)
                }},
            })

I would expect the Elastic IP to be returned immediately, which actually happens for most of the time. Sometimes it doesn't find the Elastic IP though, although it's definitely shown in the Web Console.

Are results from DescribeAddresses() cached? Why do I have to wait for Elastic IP to be returned by DescribeAddresses() sometimes.

Thanks!

@mattes mattes changed the title DescribeAddresses() doesn't return expected output ec2.DescribeAddresses() doesn't return expected output Sep 4, 2015
@mattes
Copy link
Author

mattes commented Sep 4, 2015

So I guess this problem is unrelated from this SDK, but again, here is what happens:

  • Call AWS API to allocate new Elastic IP
  • API returns immediately with successful response (always works)
  • Now try to query for this (successfully) allocated Elastic IP ...
    • Most of the time, this works.
    • Sometimes it doesn't and AWS pretends not to know anything about this Elastic IP.
      Via the API or even via the Web Console.
      The AWS API will still prevent you from creating Elastic IPs over your limit though.
  • Immediately try to allocate a new Elastic IP (always works)

@jasdel jasdel added the guidance Question that needs advice or information. label Sep 8, 2015
@jasdel
Copy link
Contributor

jasdel commented Sep 9, 2015

@mattes when creating the Elastic IP about how much time between when the create call is made and the IP is available are you seeing? Is it on the order of seconds, or minutes?

When performing the second allocate Elastic IP does it return the same IP as the first allocation call, or different?

@jasdel jasdel added the response-requested Waiting on additional info and feedback. Will move to "closing-soon" in 7 days. label Sep 9, 2015
@jasdel
Copy link
Contributor

jasdel commented Oct 26, 2015

@mattes are you still running into the issue where the IP may not be immediately accessible? I think there is a small propagation delay between when an IP is allocated and when it is available. For your code, having retry logic probably will be the best way to to handle this small availability delay.

I'm going to close this issue, but I encourage you to create a post on the EC2 AWS forums if you are still encountering this issue.

@jasdel jasdel closed this as completed Oct 26, 2015
@diehlaws diehlaws removed response-requested Waiting on additional info and feedback. Will move to "closing-soon" in 7 days. labels Jan 30, 2019
skotambkar added a commit to skotambkar/aws-sdk-go that referenced this issue May 20, 2021
The `Retry-After` duration specified in the request is now added to the Retry delay for throttled exception. Adds test for retry delays for throttled exceptions. Fixes bug where the throttled retry's math was off.

Fixes aws#45
skotambkar added a commit to skotambkar/aws-sdk-go that referenced this issue May 20, 2021
Provides more retryer customization options by adding a constructor for default Retryer which accepts functional options. Adds NoOpRetryer to support no retry behavior. Exposes members of default retryer.

Updates the underlying logic used by the default retryer to calculate jittered delay for retry. Also updates the custom retry logic for service/ec2. Handles int overflow for retry delay.

Includes changes for PR aws#373 . The changes will be squashed once the PR aws#373 is merged in.

Fixes aws#370
skotambkar added a commit to skotambkar/aws-sdk-go that referenced this issue May 20, 2021
Services
---
* Synced the V2 SDK with latest AWS service API definitions.

SDK Enhancements
---
* `aws/endpoints`: Expose DNSSuffix for partitions ([aws#369](aws/aws-sdk-go-v2#369))
  * Exposes the underlying partition metadata's DNSSuffix value via the `DNSSuffix` method on the endpoint's `Partition` type. This allows access to the partition's DNS suffix, e.g. "amazon.com".
  * Fixes [aws#347](aws/aws-sdk-go-v2#347)
* `private/protocol`: Add support for parsing fractional timestamp ([aws#367](aws/aws-sdk-go-v2#367))
  * Fixes the SDK's ability to parse fractional unix timestamp values and adds tests.
  * Fixes [aws#365](aws/aws-sdk-go-v2#365)
* `aws/ec2metadata`: Add marketplaceProductCodes to EC2 Instance Identity Document ([aws#374](aws/aws-sdk-go-v2#374))
  * Adds `MarketplaceProductCodes` to the EC2 Instance Metadata's Identity Document. The ec2metadata client will now retrieve these values if they are available.
  * Related to: [aws#2781](aws#2781)
* `aws`: Adds configurations to the default retryer ([aws#375](aws/aws-sdk-go-v2#375))
  * Provides more customization options for retryer by adding a constructor for default Retryer which accepts functional options. Adds NoOpRetryer to support no retry behavior. Exposes members of default retryer.
  * Updates the underlying logic used by the default retryer to calculate jittered delay for retry. Handles int overflow for retry delay.
  * Fixes [aws#370](aws/aws-sdk-go-v2#370)
* `aws` : Refactors request retry behavior path logic ([aws#384](aws/aws-sdk-go-v2#384))
  * Retry utilities now follow a consistent code path. aws.IsErrorRetryable is the primary entry point to determine if a request is retryable.
  * Corrects sdk's behavior by not retrying errors with status code 501. Adds support for retrying the Kinesis API error, LimitExceededException.
  * Fixes [aws#372](aws/aws-sdk-go-v2#372), [aws#145](aws/aws-sdk-go-v2#145)

SDK Bugs
---
* `aws`: Fixes bug in calculating throttled retry delay ([aws#373](aws/aws-sdk-go-v2#373))
  * The `Retry-After` duration specified in the request is now added to the Retry delay for throttled exception. Adds test for retry delays for throttled exceptions. Fixes bug where the throttled retry's math was off.
  * Fixes [aws#45](aws/aws-sdk-go-v2#45)
* `aws` : Adds missing sdk error checking when seeking readers ([aws#379](aws/aws-sdk-go-v2#379))
  * Adds support for nonseekable io.Reader. Adds support for streamed payloads for unsigned body request.
  * Fixes [aws#371](aws/aws-sdk-go-v2#371)
* `service/s3` : Fixes unexpected EOF error by s3manager ([aws#386](aws/aws-sdk-go-v2#386))
  * Fixes bug which threw unexpected EOF error when s3 upload is performed for a file of maximum allowed size
  * Fixes [aws#316](aws/aws-sdk-go-v2#316)
* `private/model` : Fixes generated API Reference docs links being invalid ([387](aws/aws-sdk-go-v2#387))
  * Fixes [aws#327](aws/aws-sdk-go-v2#327)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
guidance Question that needs advice or information.
Projects
None yet
Development

No branches or pull requests

3 participants