为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯王 2021-10-20 11:26:50
我正在尝试在停止实例后第二次添加用户数据,并在重新启动时我想再次传递一些用户数据,为此我正在使用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 机器。
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

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

然而,典型的 ec2 实例不会在重新启动时运行用户数据脚本。用户数据脚本仅在实例第一次启动时运行。

请参阅有关用户数据的内容并仅在第一次启动时运行。

重要的

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

要能够在 ec2 实例启动时重新运行用户数据脚本,请参阅AWS 中的这篇知识库文章


查看完整回答
反对 回复 2021-10-20
?
Helenr

TA贡献1780条经验 获得超4个赞

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


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信