如何通过java sdk在ec2实例中第二次添加用户数据

我正在尝试在停止实例后第二次添加用户数据,并在重新启动时我想再次传递一些用户数据,为此我正在使用


public InstanceStatusResponse startEc2Instance(AmazonEC2 ec2Client, String instanceId) {


    BlockDeviceMapping blockDeviceMappings = new BlockDeviceMapping();


    blockDeviceMappings.setDeviceName(storageProperties.getDeviceName());

    System.out.println("vatsal");

    ModifyInstanceAttributeRequest modifyInstanceAttributeRequest = new ModifyInstanceAttributeRequest()

            .withUserData(userdata())



    ModifyInstanceAttributeRequest request = new ModifyInstanceAttributeRequest();

    request.setUserData(userdata());


    System.out.println(modifyInstanceAttributeRequest.withUserData(userdata()));

    System.out.println(modifyInstanceAttributeRequest.getUserData());


    StartInstancesRequest startInstancesRequest = new StartInstancesRequest().withInstanceIds(instanceId);

    ec2Client.startInstances(startInstancesRequest);

    //System.out.println();

    System.out.println("Starting the ec2 instance");



    return instanceStatusResponse(ec2Client, instanceId);

}


我正在传递一些用户数据,我也根据需求使用 base64 编码,但我无法将值发送到那台 ec2 机器。


慕斯王
浏览 204回答 2
2回答

萧十郎

您发布的代码不是很清楚。您已经创建了modifyInstanceAttributeRequest和request,但是您似乎没有使用它们。然而,典型的 ec2 实例不会在重新启动时运行用户数据脚本。用户数据脚本仅在实例第一次启动时运行。请参阅有关用户数据的内容并仅在第一次启动时运行。重要的默认情况下,用户数据脚本和 cloud-init 指令仅在实例启动时的第一个引导周期内运行。但是,您可以将用户数据脚本和 cloud-init 指令配置为每次从停止状态重新启动实例时运行。有关更多信息,请参阅如何在我的 EC2 实例初始启动后执行用户数据?在 AWS 知识中心要能够在 ec2 实例启动时重新运行用户数据脚本,请参阅AWS 中的这篇知识库文章。

Helenr

虽然我正在寻找一种来自修改属性请求的方法,但我找到了一种在每次停止和重新启动实例时使用用户数据脚本的好方法,方法是创建一个 ec2-instance 的 ami,该 ec2-instance 在其 rc.local 文件中包含所有脚本. 你不能直接修改rc.local,你需要先成为root用户,然后才能访问它,并且这个文件在所有user-data脚本和cloud-init脚本执行完后运行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java