我正在尝试在停止实例后第二次添加用户数据,并且在重新启动时我想为此再次传递一些用户数据
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机器。
答案 0 :(得分:2)
您发布的代码不清楚。
您已经创建了modifyInstanceAttributeRequest
和request
,但是您似乎并没有使用它们。
尽管如此,通常的ec2实例在重新启动时不会运行用户数据脚本。用户数据脚本仅在实例的首次启动时运行。
See this关于用户数据,并且仅在首次启动时运行。
重要
默认情况下,用户数据脚本和cloud-init指令仅运行 在启动实例的第一个引导周期中。但是你 可以配置您的用户数据脚本和cloud-init指令以运行 每次从停止状态重新启动实例时。欲了解更多 信息,请参阅首次启动后如何执行用户数据 我的EC2实例?在AWS知识中心
要能够在ec2实例启动时重新运行用户数据脚本,请参阅来自AWS的this kb article。
答案 1 :(得分:0)
尽管我一直在寻找一种通过Modify属性request进行操作的方法,但是我发现了一个很好的方法,可以通过创建一个ec2-instance的ami来在每次停止和重启实例时使用用户数据脚本,该实例在其rc中具有所有脚本.local文件。您不能直接对rc.local进行更改,您需要首先成为root用户,然后才能访问它,并且该文件将在所有用户数据脚本和cloud-init脚本执行后运行。