我在请求竞价型实例时将以下命令作为userData的一部分提供。此命令是将文件从S3复制到获取的竞价型实例。我也有必要访问s3存储桶。
String startupUserData = "aws s3 cp s3://ugamplatform-spot/python-script/script.py /opt/scripts/";
startupUserData = org.apache.commons.codec.binary.Base64.encodeBase64String(startupUserData.getBytes());
LaunchSpecification launchSpecification = new LaunchSpecification();
launchSpecification.withKeyName("dev_spot")
.withImageId("ami-0483f13a861249490")
.withInstanceType(InstanceType.C4Large)
.withSubnetId("subnet-3dee5t67")
.withUserData(startupUserData)
.withAllSecurityGroups(securityGroups);
requestRequest.setLaunchSpecification(launchSpecification);
RequestSpotInstancesResult requestResult = ec2.requestSpotInstances(requestRequest);
我能够成功获得竞价型实例。但是不会复制S3中的文件。请求实例时,我的应用程序日志中没有看到任何错误
我什至通过userData尝试了一个简单的mkdir命令。这种努力也可以
答案 0 :(得分:2)
您可以查看使用AWS CLI在用户数据通过控制台输出运行时发生的情况的日志:
aws ec2 get-console-output --instance-id i-yourinstanceid
您可以使用以下方法获取实例ID:
aws ec2 describe-instance-status
答案 1 :(得分:0)
您还需要提及region ...从s3存储桶下载到任何EC2实例的命令是从美国东部来的
aws s3 cp s3:// distribution-bucket / / path / to / copyOrDownload --region us-east-2