在请求 Spot 实例时,我将以下命令作为 userData 的一部分给出。该命令是将文件从S3复制到获取的Spot实例。我也有必要访问 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 命令。这也有效
最佳答案
您可以使用 AWS CLI 查看用户数据通过控制台输出运行时所发生情况的日志:
aws ec2 get-console-output --instance-id i-yourinstanceid
您可以使用以下方式获取实例 ID:
aws ec2 描述实例状态
关于java - AWS EC2 用户数据不从 Java 的 S3 复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55586339/