Solution for local ip changes of AWS EC2 instances

后端 未结 5 1900
忘掉有多难
忘掉有多难 2021-01-30 23:01

Amazon only gives you a certain number of static ip address and the local (private) ips of each EC2 instance can change when the machine is restarted. This makes creating a stab

相关标签:
5条回答
  • 2021-01-30 23:18

    The stock answers are:

    1. Use AWS VPC so you have complete control over instance addressing
    2. Use Elastic IPs, which will resolve to the instance's local address (not the public, as you'd expect) when used to communicate between EC2 instances
    0 讨论(0)
  • 2021-01-30 23:19

    you can change Ip Address using Elastic Ip: You Can Do Using C# Code:

     var associateRequest = new AssociateAddressRequest
                {
                     PublicIp = your Elastic Ip,
                     InstanceId = Your Instance Id Which You Assign
                };    
            amazonEc2Client.AssociateAddress(associateRequest);
    

    after That DeAssociate It.

            var disAssociateRequest = new isassociateAddressRequest(publicIp.ElasticIpAddress1);
      AmazonEc2Client.DisassociateAddress(your Elastic Ip);
    

    your Public Ip Will Change

    0 讨论(0)
  • 2021-01-30 23:35

    Here's another Ruby solution for Updating Route 53 DNS from instance on AWS. You shouldn't reference raw 3rd party system IP addresses in your applications or server configurations.

    0 讨论(0)
  • 2021-01-30 23:42

    I stumbled upon third option. There's ec2-ssh by the Instragram folks. It's a python shell script that you install globally and lets you both query the public dns of your ec2 instances by tag name and also ssh in via tag name as well.

    The documentation for it is virtually nonexistent. I've written down the steps to install below:

    To install ec2-ssh:

    1. sudo yum install python-boto (python wrapper for ec2 api)
    2. git clone https://github.com/Instagram/ec2-ssh
    3. In your ~/.bash_profile set your AWS access key and secret like so:

      export AWS_ACCESS_KEY_ID=XYZ123

      export AWS_SECRET_ACCESS_KEY=XYZ123

    4. cd into the bin folder of the repo, there will be two files:

      ec2-host and ec2-ssh

    copy them to your /usr/bin or /usr/local/bin.

    Now you can do awesome stuff like:

    $ ec2-host ZenWorker
    ec2-999-xy-999-99.compute-1.amazonaws.com
    

    and

    $ ec2-ssh ZenWorker
    Connecting to ec2-999-xy-999-99.compute-1.amazonaws.com.
    

    Note that in your regular shell scripts you can use backticks to call these global tools. I've timed these calls and they take between 0.25 and 0.5 second using an EC2 instance, so that's really the only downside. Perhaps you can live with the delay, or use the fact that public DNS only changes for an instance on reboot to work up a solution.

    Note that these two programs are commandline scripts and you don't need any Python knowledge to use them. For PHP fans, or those that also want an easy way to scp files without knowing the changing public DNS, you can checkout ec2dns.

    0 讨论(0)
  • 2021-01-30 23:42

    I was in the same situation once. I still dont have the expertise to solve it properly. My ugly solution was to use elb not really for load balancing but just for the endpoint.

    But I think a good solution can be obtained by using aws vpc.

    0 讨论(0)
提交回复
热议问题