- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经编写了使用 C# SDK 创建 AMI 的代码,但无法创建仅包含根卷的 AMI。默认情况下,它会创建 AMI,并将所有 EBS 卷附加到实例。例如。如果它有 4 个卷,它将创建一个具有 4 个关联快照的 AMI,而我只需要包含 C:\drive(根驱动器)。我知道您必须使用 BlockDeviceMapping 来指定音量,但不确定实现方式,我们将不胜感激。
public static void CreateAMI(string InstanceID, string AMIName, string AMIDescription)
{
try
{
Console.WriteLine("Creating AMI for InstanceID" + InstanceID);
AmazonEC2Config config = new AmazonEC2Config();
config.ProxyHost = ConfigurationManager.AppSettings["PROXYHOST"];
config.ProxyPort = Convert.ToInt32(ConfigurationManager.AppSettings["PROXYPORT"])
config.ServiceURL = "https://ec2." + Program.options.Region + ".amazonaws.com";
AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client(Program.options.AccessKey, Program.options.SecretKey, config);
CreateImageRequest rq = new CreateImageRequest();
rq.InstanceId = InstanceID;
rq.Name = AMIName;
rq.Description = AMIDescription;
rq.NoReboot = true;
/* BlockDeviceMapping BMapping = new BlockDeviceMapping();
BMapping.DeviceName = "/dev/sda1";
rq.BlockDeviceMapping.Add(BMapping); */
CreateImageResponse rs = ec2.CreateImage(rq);
string AMIid = rs.CreateImageResult.ImageId;
Console.WriteLine("AMI Created with AMIid: " + AMIid);
Console.ReadLine();
}
catch (Exception err)
{
Console.WriteLine(err.Message + "/n" + err.StackTrace);
}
}
最佳答案
我认为您需要将其他设备的 EBS 属性指定为 Null 并将 NoDevice 属性指定为某些内容,以使它们不属于您的 AMI。您的代码应如下所示。
//Create Drive Mapping List
var blockDeviceMappingList = new List<BlockDeviceMapping>();
//Create Mappings
var blockDeviceMapping = new BlockDeviceMapping();
var blockDeviceMapping2 = new BlockDeviceMapping();
//Specif a mount point of the drive you want (root)
blockDeviceMapping.DeviceName = "/dev/sda1";
var ebsBlockDevice = new EbsBlockDevice();
//Set something other than null constructor or u get an error about EBS not set. Likely has to do with how they build the request to send to the server
ebsBlockDevice.VolumeType = VolumeType.Standard;
blockDeviceMapping.Ebs = ebsBlockDevice;
//Specif a mount point of the unwanted drive and set EBS to null and NoDevice
blockDeviceMapping2.DeviceName = "/dev/sdf";
blockDeviceMapping2.Ebs = null;
blockDeviceMapping2.NoDevice = string.Empty;
//Add the mappings to the list
blockDeviceMappingList.Add(blockDeviceMapping);
blockDeviceMappingList.Add(blockDeviceMapping2);
//Setup Request
createImageRequest.BlockDeviceMappings = blockDeviceMappingList;
=)
关于c# - 使用 C# SDK 创建 Amazon AMI 但仅包含根卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918216/
我想对现有堆栈(更新)和新堆栈(创建)使用相同的 CloudFormation 模板。我正在使用公共(public) SSM 参数存储来获取最新的 AMI: Parameters: LatestA
Ubuntu 将他们的云镜像认证为 ami-f95ef58a,并且它在区域 eu-west-1 中作为社区 AMI 提供。请参阅 Ubuntu 文档 here 另一方面,Centos 在 AWS Ma
我正在使用两个实例,一个是 ubuntu,另一个是具有相同配置的 Windows。对于浏览器上的每个操作,Ubuntu 实例比 Windows 实例花费更多的时间。这有什么原因吗? 最佳答案 性能和网
运行 vagrant 命令时出现如下错误, # vagrant up --provider=aws 这台机器的配置有错误。请修复以下错误并重试: AWS 提供商:* AMI 必须通过“ami”配置(
是否有一种从 Amazon Linux AMI 升级到 Amazon Linux 2 AMI 的简单方法,或者我是否必须创建一个新实例并再次进行所有服务器设置? 感谢您的反馈意见, 最佳答案 没有简单
我正在使用 Ansible 构建一个 EC2 实例,然后从该实例创建一个 AMI。我确定我在这里遗漏了一些东西,但是如何获得新创建的 AMI 的 DI?我试过了: tasks: - name: cre
我想使用yaml文件编写一个cloudformation。我知道公共(public) AMI 的格式。但我对如何在 yaml 文件中添加私有(private) AMI 感到困惑。我在网上搜索了解决方案
我正在使用 AMI Medical Imaging (AMI) JS ToolKit。有没有办法将窗口移动到鼠标事件,例如右键单击并移动? 我知道可以使用示例中的菜单更改窗口/级别,但我想更改 Con
我正在尝试以编程方式启动带有 EBS 的 Ubuntu 12.04 LTS 服务器 64 位。我写了以下代码: Placement placement = new Placement("eu-west
我创建了 AMI Oracle Database 11.2.0.1 64 位标准版的新实例;甲骨文提供的 ami-3f739c56。我试图通过 SSH 从我的 Windows 10 PC(也从我的 M
我正在使用基于 Windows 2019 Base AMI (ami-0fa60543f60171fe3) 构建的自定义 AMI 来创建 Windows 服务器。但我发现用户数据不起作用。这是我正在使
我正在尝试从 AWS 账户中清除我的快照和 AMI,要删除我知道需要取消注册 AMI 的快照。但是当我尝试通过控制台取消注册时,出现以下错误。 “尝试取消注册 amis 时发生错误” 有人对这个问题有
我已经升级到 Tensorflow 版本 1.0 并安装了 CUDA 8.0 和 cudnn 5.1 版本以及最新的 nvidia 驱动程序 375.39。我的 NVIDIA 硬件是在 Amazon
我想使用 AMI 在 Asterisk 中接听电话。我可以发起调用,但完全不知道,如何接听电话... 调用脚本: #login sock = socket.socket(af, socktype, p
我的 LAN 上正在运行 Asterisk 服务器,现在我想使用 Javascript 通过 AMI(Asterisk 管理器接口(interface))执行与正在运行的应用程序的套接字连接。 任何人
我有几个基于 ubuntu 的 ec2 实例在生产模式下运行。我的问题是,每当流量增加时,我都会手动启动实例,从 github 更新代码。 现在我必须配置自动缩放,这样每当 API 启动新实例时,它就
我正在 Amazon EC2 上开发 Ubuntu AMI。 在一个正在运行的实例上,我将 ubuntu 用户的密码更改为(比如说)“foobar”。 (我知道 EC2 通常不需要用户密码,因为 ss
我一直在尝试在 EC2 上登录我新创建的 Ubuntu oneiric AMI,但总是失败,说连接超时。我已经使用 AWS 管理控制台以及命令行工具进行了尝试。我已经在 Google 和 Server
我正在使用的 Windows AMI(EBS 支持)的启动时间存在巨大差异。有些只需 3 分钟即可启动。其他人可能需要 20 多分钟。我的理解是,默认的 Windows AMI 可能会很慢,因为它们需
我是Asterisk的新手。我的要求是,当我接到调用时,我需要识别调用者ID,并在接听电话时弹出该ID。我对AMI和AGI有一些了解。我想知道如何使用php脚本执行此操作。 任何示例或我可以用来执行此
我是一名优秀的程序员,十分优秀!