java - 如何通过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 机器。
解决方案
您发布的代码不是很清楚。您已经创建modifyInstanceAttributeRequest
并且request
,但是您似乎没有使用它们。
然而,通常的 ec2 实例不会在重新启动时运行用户数据脚本。用户数据脚本仅在实例首次启动时运行。
请参阅有关用户数据的内容并仅在首次启动时运行。
重要的
默认情况下,用户数据脚本和 cloud-init 指令仅在启动实例的第一个引导周期内运行。但是,您可以将用户数据脚本和 cloud-init 指令配置为在每次实例从停止状态重新启动时运行。有关更多信息,请参阅如何在我的 EC2 实例初始启动后执行用户数据?在 AWS 知识中心
为了能够在 ec2 实例启动时重新运行用户数据脚本,请参阅AWS 的这篇 kb 文章。
推荐阅读
- node.js - Nestjs 中的 MongoDB(无 Mongoos)和 ElasticSearch 健康检查
- javascript - 在网站自己的 javascript 添加内容后,如何注入我的 google 扩展程序 javascript?
- php - 如何确定 PHP password_hash 函数是否支持“线程”选项?
- python - django drf 关于多对多相关字段自定义字段
- embedded - CAN 总线引导加载程序标准
- vb.net - 拆分并计算字符串 vb.net
- python - 我希望 pyqt5 标签更新并显示值以创建一个简单的倒数计时器
- c# - 如何使用 C# 有效地将 chrome 无头输出到内存?
- amazon-web-services - AWS 如何从私有子网中的 EC2 实例打开网站
- r - 从单元格中删除 R 矩阵 NA