Amazon EC2 Windows实例中的Automount EBS卷

有没有人知道如何在亚马逊弹性计算 (EC2)中启动Windows 2003实例时自动挂载弹性块存储 (EBS)卷?

建立:

  • 确保EBS卷被格式化和标记(在示例中我使用了标签PDRIVE)。
  • 使用Ec2ConfigServiceSettings.exe设置驱动器映射
  • 在实例上安装Java
  • 安装EC2 API命令行工具
  • 安装您的证书和私钥的副本
  • 安装curl.exe的副本(开源工具)

您可以使用组策略编辑器将此脚本设置为启动脚本。 有关更多信息,请参阅http://technet.microsoft.com/en-us/library/cc739591(WS.10).aspx 。

REM @echo off REM setlocal ENABLEDELAYEDEXPANSION C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 100 /so AttachEbsBoot /d "Starting attach-ebs-boot.cmd" REM local variables REM Make sure you include the directory with curl.exe and the EC2 command line tools in the path set path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Utils;C:\ebin\ec2\bin set JAVA_HOME=c:\java set EC2_HOME=c:\ebin\ec2 set EC2_CERT=<your_cert> set EC2_PRIVATE_KEY=<your_private_key> REM Please note: you should use the Ec2 Config Serive Settings application to ensure REM that your EBS volume is mapped to a particular drive letter. REM REM edit as needed set EBS_DRIVE=P: set EBS_DEVICE=xvdp REM Test to see if the drive is already attached. If it is then we're done. if exist %EBS_DRIVE%\nul (goto done) REM get the EBS volume ID from the user data and the instance ID from the meta-data for /f "delims=" %%a in ('curl http://169.254.169.254/latest/user-data') do (set EBS_VOLUME=%%a) for /f "delims=" %%b in ('curl http://169.254.169.254/latest/meta-data/instance-id') do (set INSTANCE_ID=%%b) C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 102 /so AttachEbsBoot /d "Volume == %EBS_VOLUME%" C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 103 /so AttachEbsBoot /d "Instance == %INSTANCE_ID%" REM attach the volume REM REM Use a series of set command to build the command line SET COMMAND_LINE=%EBS_VOLUME% SET COMMAND_LINE=%COMMAND_LINE% -i SET COMMAND_LINE=%COMMAND_LINE% %INSTANCE_ID% SET COMMAND_LINE=%COMMAND_LINE% -d SET COMMAND_LINE=%COMMAND_LINE% %EBS_DEVICE% C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 104 /so AttachEbsBoot /d "calling ec2attvole %COMMAND_LINE%" call ec2attvol.cmd %COMMAND_LINE% :DONE C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 101 /so AttachEbsBoot /d "Exiting attach-ebs-boot.cmd" REM Events logged in the System event log REM source === AttachEbsBoot REM REM Event 100 - Script start REM Event 101 - Script end REM Event 102 - Volume ID REM Event 103 - Instance ID REM Event 104 - Command line for ec2attvol 

我在http://www.oncannon.net/system-administration/199/automounting-amazon-ebs-volumes-on-ec2-instances/上找到了下面的Ruby代码,由Carson McDonald提供。 它适用于Linux / Unix,但也许你可以在Windows 2003上重新配置Ruby,或者把它作为一些其他脚本语言的模型。

请注意,您可以将内容作为用户数据传递到您的映像中,例如ECS EBS卷ID和设备名称(例如,以下示例中的/ dev / sdh或您的Windows中的任何内容)。 您可以从实例本身作为元数据访问用户数据,大致如下所示,以获取实例ID。 更具体地说,您可以访问http://169.254.169.254/1.0/user-data来获取用户数据&#x3002;

 #!/usr/bin/ruby require 'rubygems' require 'right_aws' require 'net/http' url = 'http://169.254.169.254/2008-02-01/meta-data/instance-id' instance_id = Net::HTTP.get_response(URI.parse(url)).body AMAZON_PUBLIC_KEY='your public key' AMAZON_PRIVATE_KEY='your private key' EC2_LOG_VOL='the volume id' ec2 = RightAws::Ec2.new(AMAZON_PUBLIC_KEY, AMAZON_PRIVATE_KEY) vol = ec2.attach_volume(EC2_LOG_VOL, instance_id, '/dev/sdh') puts vol # It can take a few seconds for the volume to become ready. # This is just to make sure it is ready before mounting it. sleep 20 system('mount /dev/sdh /mymountpoint')