Amazon ec2 非常慢的AMI发布

Amazon ec2 非常慢的AMI发布,amazon-ec2,cloud,amazon-web-services,Amazon Ec2,Cloud,Amazon Web Services,我使用的Windows AMI(支持EBS)的启动时间有很大差异。有些在3分钟内启动。其他可能需要20多分钟。我的理解是,默认的Windows AMI可能会很慢,因为它们需要两次重新启动才能激活,但在我的情况下,这些都是定制的机器,或者是公用的,或者是我创建的快照 同样,我在EC2控制台中检索日志文件,以了解我的机器何时启动。但是,有些机器似乎没有生成任何日志??所以,实际上,我有一个可变的启动时间和可变的日志记录,在这种情况下,我如何才能真正判断Windows计算机已变得可访问?无论您的Wi

我使用的Windows AMI(支持EBS)的启动时间有很大差异。有些在3分钟内启动。其他可能需要20多分钟。我的理解是,默认的Windows AMI可能会很慢,因为它们需要两次重新启动才能激活,但在我的情况下,这些都是定制的机器,或者是公用的,或者是我创建的快照



同样,我在EC2控制台中检索日志文件,以了解我的机器何时启动。但是,有些机器似乎没有生成任何日志??所以,实际上,我有一个可变的启动时间和可变的日志记录,在这种情况下,我如何才能真正判断Windows计算机已变得可访问?

无论您的Windows AMI的来源如何,它都会在启动过程中重新启动多次,然后才能通过RDP可用。所有Windows AMI都是从Amazon生产的Windows AMI派生而来的,Amazon设计了这个引导过程。[有人建议将此引导过程硬编码到在来宾VM内运行的自定义内核中。]

控制台日志通常需要2到5分钟才能显示

不幸的是,EC2上的Windows比linux更难自动化和跟踪。他们已经做了一些出色的工作,将Windows集成到他们的管理平台中。配置管理工具还支持EC2中的Windows,并可以帮助您发现实例何时可以使用。

在EC2中启动Windows AMI确实需要不同的时间。通过为实例设置一个固定的机器名,可以将其最小化一点。像在任何Windows计算机上一样执行此操作-在“我的计算机”、“计算机名”选项卡的属性中。然后,从开始菜单的“所有程序”列表中运行“EC2ConfigService设置”。该程序由Amazon安装在大多数基础AMI上。在该程序中,在“常规”选项卡上,取消选中“设置计算机名”这可以避免系统在启动映像时重新启动自身一次,因为它必须这样才能设置名称

不过,当您的实例准备就绪时,您仍希望得到通知!对于Amazon的简单通知服务来说,这是一个完美的工作。该服务(也称为SNS)易于编程使用(例如,来自windows.NET项目),免费(对于前100000条消息,总共少于1gb),并且通知是即时的

发送通知的代码(在VB.NET中):

该代码需要亚马逊的,这是免费的。编写一个程序,包括上面的一些代码。使用Windows任务调度器将程序设置为在计算机启动后和登录前运行-创建一个“在系统启动时”触发的调用程序的任务

此处记录了SNS的设置:

发送电子邮件似乎有很多麻烦,但是,亚马逊的EC2环境在发送电子邮件方面有很大的限制。许多人试图使用EC2作为垃圾邮件平台,因此亚马逊一直在彻底阻止SMTP(电子邮件)通信,除非亚马逊另有规定。你不能仅仅在Amazon安全组上打开一个端口来绕过Amazon的阻塞

Amazon确实有一个通用的电子邮件工具,可以在EC2中使用。它被称为亚马逊简单电子邮件服务(SES)。这将不适合你,因为它是为批量电子邮件设计的。所以,我认为SES的定价、异常处理和消息传递不符合您的需要

另一方面,SNS在这方面非常有用。它包括一封发送给收件人(您以及您可能希望通知您的服务器即将上线的其他人)的初始电子邮件,询问他们是否希望在将来接收有关该主题的消息;他们可以选择退出,并且必须回复才能进一步接收

从Amazon的AWS管理控制台可以轻松完成设置过程(如上面的方框所示)。(您的问题意味着您已经有了一个AWS EC2帐户。)设置完成后,从AMI启动的任何实例都会在机器准备就绪后立即发送一封包含您选择的任何信息(可供您的程序使用)的电子邮件

它的设置将是免费的,并且在运行中像岩石一样坚固

    Imports Amazon.EC2.AmazonEC2Client  
    Imports Amazon.SimpleNotificationService  
    DIM LabSNS As New AmazonSimpleNotificationServiceClient(Lab_AWSKey, Lab_AWSSecretKey)  
    Dim PubReq As New Amazon.SimpleNotificationService.Model.PublishRequest  
    Dim Msg As String 'Messege to be built up, then be sent.  It is body of eMail.  
    Msg = "The instance is running and ready!"  
    Msg = Msg + vbCrLf + "Previous State of machine was:" & PreviousState 'A made-up global  
    Msg = Msg + [Any other info. I want to send myself about the start of the instance.]  
    PubReq.WithTopicArn(Topic)'Topic is a global. It's value is a key from SNS topic setup.  
    PubReq.WithSubject("EC2 Instance is Ready!")  
    PubReq.WithMessage(Msg)  
    LabSNS.Publish(PubReq)