【问题标题】:AWS EC2 userdata not copying files from S3 from JavaAWS EC2 用户数据未从 Java 中的 S3 复制文件
【发布时间】:2019-04-21 07:27:33
【问题描述】:

我在请求现场实例时将以下命令作为 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);

我能够成功获得一个 Spot 实例。但不会复制来自 S3 的文件。请求实例时,我的应用程序日志中没有看到任何错误

我什至通过 userData 尝试了一个简单的 mkdir 命令。这点也很管用

【问题讨论】:

    标签: java amazon-s3 amazon-ec2


    【解决方案1】:

    您可以查看当您的用户数据使用 AWS CLI 通过控制台输出运行时发生的日志:

    aws ec2 get-console-output --instance-id i-yourinstanceid

    您可以使用以下方法获取实例 ID:

    aws ec2 describe-instance-status

    【讨论】:

      【解决方案2】:

      您还需要提及区域...从 s3 存储桶下载到任何 EC2 实例的命令来自我们东部地区是

      aws s3 cp s3://distribution-bucket/ /path/to/copyOrDownload --region us-east-2

      【讨论】:

      • 它也适用于该地区。如果我登录到获取的 Spot 实例并在 curl "169.254.169.254/latest/user-data" 中运行它,我可以获取我通过 Java API 传递的用户数据。但它不起作用。
      • 我尝试了正常的 mkdir。那也不行。会不会有权限问题?另外,如果我必须查看执行 userData 时发生的日志,我应该在哪里查看?
      猜你喜欢
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2019-01-02
      • 2021-12-30
      • 1970-01-01
      相关资源
      最近更新 更多