я в состоянии создать экземпляр EC2 (Amazon Linux) с помощью AWS Java SDK:Программным изменить имя хоста вновь созданного экземпляра 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
. Проверял ключ и каждую деталь - я могу войти в систему, если я не предоставляю скрипт пользовательских данных.
Я меняю имя хоста правильно? Есть ли другой способ автоматизировать это?
Обновление: Теперь я могу войти в систему, но это занимает примерно около 15 минут - слишком большое значение для меня, чтобы ждать, когда вы создаете экземпляр в моей программе – User528491