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

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机器。

最佳答案

您发布的代码还不清楚。
您已经创建了modifyInstanceAttributeRequestrequest,但是您似乎并没有使用它们。

但是,通常的ec2实例在重新启动后将不会运行用户数据脚本。用户数据脚本仅在实例的首次启动时运行。

See this关于用户数据,仅在首次启动时运行。


  重要
  
  默认情况下,用户数据脚本和cloud-init指令仅运行
  在启动实例的第一个引导周期中。但是你
  可以配置您的用户数据脚本和cloud-init指令以运行
  每次从停止状态重新启动实例时。欲了解更多
  信息,请参阅首次启动后如何执行用户数据
  我的EC2实例?在AWS知识中心


为了能够在ec2实例启动时重新运行用户数据脚本,请参阅AWS中的this kb article

08-03 22:07