如何在AWS平臺導入自行創建的操作系統模板並創建EC2實例

如何在AWS平臺導入自行創建的操作系統模板並創建EC2實例


AWS平臺提供的AMI,尤其是國內AMI數量甚少,社區非官方提供的各類AMI我們使用起來又充滿憂慮

所以,自行安裝系統導入AWS平臺成爲一個較好的選擇


注意:





基本步驟

  1. 本地Vcenter/ESXI5.X 中創建虛擬機,根據需要安裝各類環境和軟件

    準備好的虛擬機要求見:http://docs.amazonaws.cn/vm-import/latest/userguide/prepare-vm-image.html

  2. 使用Vcenter的服務器模板導出功能導出一份ova類型的模板,size1-5G,視系統安裝軟件多少不同

    如何導出參考 http://docs.amazonaws.cn/vm-import/latest/userguide/export-vm-image.html

  3. 將OVA文件導入到Amazon S3 存儲桶,存儲桶要對步驟4的vmimport授權,至少是列出和只讀,授權過程如4.3

  4. 創建服務角色

    4.1利用下策略創建名爲 trust-policy.json 的文件

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}

您可將文件保存在計算機的任何位置。請記下文件的位置,因爲在下一步中您需要指定該文件。

4.2 使用 create-role 命令創建名爲 vmimport 的角色,並向 VM Import/Export 提供對該角色的訪問權。請務必指定 trust-policy.json 文件位置的完整路徑。

aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json

4.3 創建名爲 role-policy.json 的文件並編寫下面的策略,其中,disk-image-file-bucket 爲存儲磁盤映像的存儲桶:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource": [
            "arn:aws-cn:s3:::"
         ]
      },
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetObject"
         ],
         "Resource": [
            "arn:aws-cn:s3:::/*"
         ]
      },
      {
         "Effect": "Allow",
         "Action":[
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource": "*"
      }
   ]
}

4.4 使用下面的 put-role-policy 命令將策略掛載到之前創建的角色。請務必指定 role-policy.json 文件位置的完整路徑。

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json


導入 OVA

將您的 VM 映像文件上傳到 Amazon S3 後,可以使用 AWS CLI 導入該映像。這些工具接受 URL(公共 Amazon S3 文件,適用於私有 Amazon S3 文件的已簽名的 GET URL)或 Amazon S3 存儲桶和磁盤文件的路徑。

aws ec2 import-image --description "Windows 2008 OVA" --disk-containers file://containers.json

下面是一個 containers.json 示例文件。

[
  {
    "Description": "Windows 2008 OVA",
    "Format": "ova",
    "UserBucket": {
        "S3Bucket": "my-import-bucket",
        "S3Key": "vms/my-windows-2008-vm.ova"
    }
}]


如果是導入多個磁盤的

Copy[
  {
    "Description": "First disk",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "my-import-bucket",
        "S3Key": "disks/my-windows-2008-vm-disk1.vmdk"
    }
  },          
  {
    "Description": "Second disk",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "my-import-bucket",
        "S3Key": "disks/my-windows-2008-vm-disk2.vmdk"
    }
  }
]

檢查導入任務的狀態

使用 describe-import-image-tasks 命令返回導入任務的狀態。

包括的狀態值如下:

  • active - 正在運行導入任務。

  • deleting - 正在取消導入任務。

  • deleted - 導入任務已取消。

  • validating — 正在驗證導入的映像。

  • converting — 正在將導入的映像轉換成 AMI。

  • completed - 導入任務已完成,並且 AMI 已準備就緒,隨時可以使用。

aws ec2 describe-import-image-tasks --import-task-ids import-ami-fgxn195v

(可選)取消導入任務

使用 cancel-import-task 命令取消正在運行的導入任務。

aws ec2 cancel-import-task --import-task-id import-ami-fg4z7c9h

後續步驟

現在,您已擁有 AMI,您可以將其作爲實例啓動,或將其複製到其他的區域。有關更多信息,請參閱 Amazon EC2 文檔中的以下主題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章