【问题标题】:Automount EBS volume in Amazon EC2 Windows Instance在 Amazon EC2 Windows 实例中自动挂载 EBS 卷
【发布时间】:2023-09-29 06:51:01
【问题描述】:

有人知道在亚马逊的Elastic Compute Cloud (EC2) 中启动 Windows 2003 实例时如何自动挂载Elastic Block Storage (EBS) 卷吗?

【问题讨论】:

    标签: windows amazon-ec2 cloud amazon-ebs


    【解决方案1】:

    我在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')
    

    【讨论】:

      【解决方案2】:

      设置:

      • 确保 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
      

      【讨论】:

        最近更新 更多