2016-08-31 14 views
1

のホスト名を変更します。はプログラムで私がAWS Java SDKを使用してEC2インスタンス(アマゾンLinux)を作成することができる午前、新しく作成されたAWSインスタンス

RunInstancesRequest runInstancesRequest = new RunInstancesRequest() 
       .withInstanceType(InstanceType.valueOf("T2Micro")) 
       .withImageId("ami-12345abc") 
       .withMinCount(1) 
       .withMaxCount(1) 
       .withSecurityGroupIds("some-group") 
       .withKeyName("my-key") 

RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest); 

は、今私は、このように作成されたサーバーのhostnameのように変更することにしたいですよく、プログラム的に。手動でこれは可能ですAWS documentation。私はこれを自動化したいので、私は使用してみてくださいuser data shell scriptsとして:

RunInstancesRequest runInstancesRequest = new RunInstancesRequest() 
       .withInstanceType(InstanceType.valueOf("T2Micro")) 
       ...... 
       .withUserData(getUserDataScript()); 
RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest); 

private static String getUserDataScript() { 
     String str = "#!/bin/bash\n" + 
        "sudo sed -i -e 's/[before]/after/' /etc/sysconfig/network\n" + 
        "sudo init 6"; 
     return Base64.getEncoder().encodeToString(str.getBytes()); 
} 

トラブルは、今私はもはやそう作成したインスタンスにログインできないということです。ただconnection refusedというエラーがあります。キーと詳細のチェック - ユーザーデータスクリプトを提供しないとログインできます。

は私が正しくホスト名を変更するのですか?これを自動化する他の方法はありますか?

+0

、Linuxディストリビューション上で動作することを確認するためのコマンドを実行してお勧め:今私は、ログインすることができていますが、それは大体15分程度かかる - 作成する際に高すぎる私が待機する値を例えば私のプログラム – User528491

答えて

1

あなたが​​を実行するときには時間がかかることができ、再起動を行い、すぐにログインできない理由thatsの。私は完全にこれをテストしませんでしたが、私はそれをせずにnew_hostnameを取る必要が期待する:あなたが試すことができるもの

は、スクリプトが

String str = "#!/bin/bash\n" + 
       "sudo sed -i -e 's/[before]/new_hostname/' /etc/sysconfig/network\n" + 
       "sudo echo 'new_hostname' >> /etc/hostname" + 
       "sudo hostname new_hostname"; 

ノートのようなものになりますので、直接、新しいホスト名を使用するようにhostnameコマンドを実行することです再起動、それはあなたが接続できるようにする必要がありますので、 - Linuxディストリビューションのあなたの味を依存し、それは少し異なることができ、私はあなたが最初のインスタンスに正常にログインし、tiは更新

+0

ニースの提案では残念ながら、それは再起動せずにAmazonでLinux上では動作しません。 – User528491

関連する問題