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