Ich versuche, einige UserData beim Erstellen einer neuen Instanz zu senden, aber leider funktioniert es nicht. Der Code lautet:EC2 UserData funktioniert nicht mit Java SDK
Zu Debuggingzwecken habe ich nur eine Echo-Anweisung verwendet, aber ich kann keine neue Datei finden, die auf dem Computer generiert wird. Ich habe auch die Cloud-Init-Protokolle im Ordner/var/log überprüft, aber keine von ihnen sind vorhanden.
Kann jemand mir helfen, einen Weg zu finden, dieses Problem zu debuggen, oder gibt es etwas Entscheidendes, das ich vermisse?
Ich verwende C4.8xLarge-Instanzen als Referenz.
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);
Vielen Dank!
Wahr. Ich habe mein eigenes AMI verwendet, auf dem Cloud-Init nicht installiert war. Nach der Installation funktioniert das Skript. Ich sehe keine Ausgabedatei mit dem Namen 'cloud-init-output.log'. Ich vermute, dass dies eine AWS-Funktion ist. In solchen Fällen, wo kann ich die Ausgabe meines Skripts und die Tatsache überprüfen, dass das Skript erfolgreich ausgeführt wurde oder nicht? – LearningToCode