【发布时间】:2016-08-31 15:51:50
【问题描述】:
我能够使用 AWS Java SDK 创建一个 EC2 实例(Amazon Linux):
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 错误。检查了密钥和每个细节 - 如果我不提供用户数据脚本,我可以登录。
我是否正确更改了主机名?有没有其他方法可以自动执行此操作?
【问题讨论】:
-
更新:现在我可以登录,但大约需要 15 分钟 - 在我的程序中创建实例时,我等待的值太高了
标签: linux amazon-web-services amazon-ec2 aws-sdk