我正在尋找一種將用戶數據腳本附加到Java SDK中的EC2 RunRequest(等效於命令行工具ec2-run-instances ami-1234567 -f startup-script.zip)的方法。EC2 Java SDK - 用戶數據腳本
Severalthings我讀過表明任何用戶數據字符串都帶有「#!」將會執行,但這似乎不是這種情況。
這甚至可能嗎?
FYI:這是我的測試類:
public class AWSTest {
public static void main(String[] args) {
AWSCredentials credentials = new BasicAWSCredentials("access-key","secret-access-key");
AmazonEC2Client ec2 = new AmazonEC2Client(credentials);
RunInstancesRequest request = new RunInstancesRequest();
request.setInstanceType(InstanceType.M1Small.toString());
request.setMinCount(1);
request.setMaxCount(1);
request.setImageId("ami-84db39ed");
request.setKeyName("linux-keypair");
request.setUserData(getUserDataScript());
ec2.runInstances(request);
}
private static String getUserDataScript(){
ArrayList<String> lines = new ArrayList<String>();
lines.add("#! /bin/bash");
lines.add("curl http://www.google.com > google.html");
lines.add("shutdown -h 0");
String str = new String(Base64.encodeBase64(join(lines, "\n").getBytes()));
return str;
}
static String join(Collection<String> s, String delimiter) {
StringBuilder builder = new StringBuilder();
Iterator<String> iter = s.iterator();
while (iter.hasNext()) {
builder.append(iter.next());
if (!iter.hasNext()) {
break;
}
builder.append(delimiter);
}
return builder.toString();
}
}
不幸的是,我運行此之後,我能夠通過SSH進入禁區,並確認
- 它並沒有關閉和
- 它沒有下載文件
任何幫助是極大的讚賞。
最佳,
扎克
你是完全正確的。看起來亞馬遜的默認版本不會執行用戶腳本。雖然Alestic的AMI是可靠的,但我有一些Fedora特定的代碼,所以我繼續使用Java庫來SSH進入盒子並執行我需要的一切。 – 2010-07-02 20:06:53