25

Amazonは特定の数の静的IPアドレスのみを提供し、各EC2インスタンスのローカル(プライベート)IPは、マシンの再起動時に変更される可能性があります。これにより、EC2インスタンスが相互に依存する安定したプラットフォームを作成することができます。私が知る限り、使用するのは途方もなく困難です。

私はさまざまなソリューションについてオンラインで多くのことを検索しましたが、これまでのところ、EC2が公開されていなくても、EC2にエラスティックIPアドレスを割り当てる以外に合理的なものは見つかりませんでした。誰かが実際に実行しやすい他の良いアイデアを持っていますか?

ありがとう!

静的ローカルIPに関する質問に対するAWSチームの回答をご覧ください。

EC2インスタンスの内部IPアドレスは、DHCPを介して割り当てられます。インスタンスのシャットダウン時、またはDHCPリースの有効期限が切れると、IPアドレスは他のインスタンスで使用可能なアドレスの一般的なEC2DHCPプールに返されます。

再起動時に同じDHCPアドレスを取得することを保証する方法はありません。

編集:答えはAmazonVPCを使用することです。ルーターを制御できるようになったため、わずかな追加セットアップ以外に欠点はありません。これは、AWS上の単純な古いEC2インスタンスとは別の世界です。実際、VPCは将来のすべてのAWSセットアップでデフォルトで有効になる必要があります。詳細については、この投稿を参照してください:http: //www.reddit.com/r/aws/comments/1a3n0r/ec2_update_virtual_private_clouds_for_everyone/

4

5 に答える 5

16

株式の回答は次のとおりです。

  1. AWS VPCを使用して、インスタンスのアドレス指定を完全に制御できるようにします
  2. Elastic IPを使用します。これは、EC2インスタンス間の通信に使用されるときに、インスタンスのローカルアドレス(予想どおり、パブリックではありません)に解決されます。
于 2012-05-24T22:49:56.667 に答える
13

私は3番目のオプションに出くわしました。Instagramの人々によるec2-sshがあります。これはグローバルにインストールするPythonシェルスクリプトであり、ec2インスタンスのパブリックDNSをタグ名とタグ名の両方でクエリできますssh

そのためのドキュメントは事実上存在しません。インストールする手順を以下に書き留めました。

ec2-sshをインストールするには:

  1. sudo yum install python-boto(ec2 apiのPythonラッパー)
  2. git clone https://github.com/Instagram/ec2-ssh
  3. 〜/ .bash_profileで、AWSアクセスキーとシークレットを次のように設定します。

    AWS_ACCESS_KEY_ID=XYZ123をエクスポートします

    AWS_SECRET_ACCESS_KEY=XYZ123をエクスポートします

  4. cdリポジトリのbinフォルダには、次の2つのファイルがあります。

    ec2-hostec2-ssh

/usr/binそれらをあなたまたはにコピーします/usr/local/bin

今、あなたは次のような素晴らしいことをすることができます:

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

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

通常のシェルスクリプトでは、バッククォートを使用してこれらのグローバルツールを呼び出すことができることに注意してください。私はこれらの呼び出しの時間を計りましたが、EC2インスタンスを使用すると0.25〜0.5秒かかるため、これが唯一の欠点です。おそらく、遅延に耐えることができます。または、パブリックDNSが再起動時にインスタンスに対してのみ変更されるという事実を使用して、ソリューションを作成することができます。

これらの2つのプログラムはコマンドラインスクリプトであり、それらを使用するためにPythonの知識は必要ありません。PHPファン、またはscpパブリックDNSの変更を知らなくてもファイルに簡単にアクセスできる方法が必要な場合は、ec2dnsをチェックアウトできます。

于 2012-11-22T07:03:55.727 に答える
1

私はかつて同じ状況にありました。私はまだそれを適切に解決するための専門知識を持っていません。私の醜い解決策は、実際には負荷分散のためではなく、エンドポイントのためだけにelbを使用することでした。

しかし、 awsvpcを使用することで良い解決策が得られると思います。

于 2012-05-24T15:57:04.430 に答える
1

AWSのインスタンスからRoute53DNSを更新するための別のRubyソリューションを次に示します。アプリケーションまたはサーバー構成で、生のサードパーティシステムのIPアドレスを参照しないでください。

于 2013-05-18T23:42:56.530 に答える
0

Elastic Ipを使用してIPアドレスを変更できます:C#コードを使用して行うことができます:

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

その後、それを関連付け解除します。

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

パブリックIPが変更されます

于 2016-02-12T08:12:14.983 に答える