2008-11-30 239 views

回答

4

設置:

  • 確保EBS卷格式化並標記(在本例中我使用了標籤PDrive工具)。
  • 安裝使用Ec2ConfigServiceSettings.exe
  • 驅動器映射上的實例
  • 安裝Java安裝EC2 API命令行工具
  • 安裝您的證書副本和私鑰
  • 安裝捲曲的副本。 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 
3

我在http://www.ioncannon.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以獲取用戶數據。

#!/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') 
相關問題