Zac*_*zer 7 amazon-ec2 amazon-web-services
我正在寻找一种方法将用户数据脚本附加到Java SDK中的EC2 RunRequest(相当于命令行工具的ec2-run-instances ami-1234567 -f startup-script.zip).
我读过的一些内容表明任何带有"#!"的用户数据字符串都会执行,但似乎并非如此.
这甚至可能吗?
仅供参考:这是我的测试类:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,在我运行之后,我可以通过SSH进入框中,并确认
非常感谢任何帮助.
最好,
扎克
您使用的 AMI 可能不支持用户数据脚本?请使用 www.alestic.com 上的 AMI。
也是一个很好的参考http://alestic.com/2009/06/ec2-user-data-scripts
| 归档时间: |
|
| 查看次数: |
6450 次 |
| 最近记录: |