0
我想在产生一个新的实例时发送一些userData,但不幸的是它不工作。代码是:EC2 UserData不能与Java SDK一起工作
为了进行调试,我刚刚使用了一个echo语句,但是我找不到在机器上生成的任何新文件。我还检查了/ var/log文件夹中的cloud-init日志,但没有一个存在。
任何人都可以帮助我找出一种方法来调试这个问题,或者是有什么重要的,我失踪?
我使用C4.8xLarge实例作为参考。
public static String getUserData() throws UnsupportedEncodingException {
String userData = "";
userData = userData + "#!/bin/bash" + "\n";
userData += "echo hello > hello" + "\n";
String base64UserData = null;
try {
base64UserData = new String(Base64.encodeBase64(userData.getBytes("UTF-8")), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64UserData;
}
RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
runInstancesRequest.setImageId(AMI_ID);
runInstancesRequest.setEbsOptimized(true);
runInstancesRequest.setInstanceType(INSTANCE_TYPE);
runInstancesRequest.setMinCount(1);
runInstancesRequest.setMaxCount(1);
runInstancesRequest.withSecurityGroups("JavaSecurityGroup1");
runInstancesRequest.withUserData(getUserData());
List<BlockDeviceMapping> map = new ArrayList<>();
map.add(new BlockDeviceMapping().withEbs(new EbsBlockDevice().withSnapshotId("snap-af8s67ef").withIops(9000).withVolumeSize(300).withVolumeType("io1")).withDeviceName("/dev/sdf"));
runInstancesRequest.withBlockDeviceMappings(map);
RunInstancesResult runInsRes = ec2.runInstances(runInstancesRequest);
谢谢!
是的。我用我自己的AMI,它没有安装cloud-init。安装后,该脚本起作用。我没有看到任何名为'cloud-init-output.log'的输出文件。我怀疑这是一个AWS功能。在这种情况下,我可以在哪里查看脚本的输出以及脚本是否已成功运行? – LearningToCode