如何通过JavaSDK在ec2实例中第二次添加用户数据
我正在尝试在停止实例后第二次添加用户数据,并且在重新启动时,我想再次传递一些我正在使用的用户数据如何通过JavaSDK在ec2实例中第二次添加用户数据,java,amazon-ec2,aws-sdk,aws-java-sdk,Java,Amazon Ec2,Aws Sdk,Aws Java Sdk,我正在尝试在停止实例后第二次添加用户数据,并且在重新启动时,我想再次传递一些我正在使用的用户数据 public InstanceStatusResponse startEc2Instance(AmazonEC2 ec2Client, String instanceId) { BlockDeviceMapping blockDeviceMappings = new BlockDeviceMapping(); blockDeviceMappings.setDeviceName(s
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机器。您发布的代码不是很清楚。 您已经创建了
modifyInstanceAttributeRequest
和request
,但是您似乎没有使用它们
然而,通常ec2实例在重新启动时不会运行用户数据脚本。用户数据脚本仅在实例的第一次启动时运行
关于用户数据,仅在第一次启动时运行
重要
默认情况下,仅运行用户数据脚本和cloud init指令
在启动实例的第一个启动周期内。然而,你
可以配置要运行的用户数据脚本和cloud init指令
每次实例从停止状态重新启动时。更多
有关详细信息,请参见首次启动后如何执行用户数据
我的EC2实例?在AWS知识中心
为了能够在ec2实例启动时重新运行用户数据脚本,请参见AWS。虽然我正在寻找修改属性请求的方法,但我找到了一种在每次停止和重新启动实例时使用用户数据脚本的好方法,方法是创建一个ec2实例的ami,该实例的rc.local文件中包含所有脚本。您不能直接对rc.local进行更改,您需要首先成为根用户,然后只有您才能访问它,并且此文件在执行所有用户数据脚本和cloud init脚本后运行 嘿,所以在文章中,为了重新运行用户数据脚本,他们还建议使用modify instance属性,这也是我正在使用的唯一属性,我正在设置用户数据,所以它应该可以正常工作?就像我上面提到的,您没有使用您的请求对象,您刚刚创建了它们。你在哪里使用它们?